我有一个使用ssl证书身份验证的网站.如何从服务器强制Web浏览器再次询问要使用的证书?它可用于注销,但这里的用例是切换用户身份.
我记得有些事情是将用户指向一个页面,该页面的ssl设置与当前的身份验证证书不兼容,但找不到正确的设置.
我的设置使用apache mod-ssl,但也欢迎使用IIS解决方案.
更新:我特别询问服务器端:如何在需要客户端证书但拒绝所有证书的同一主机名上设置URL.
对于Firefox,javascript:window.crypto.logout();确实可以解决用户的轻微不便(我相信可以编写脚本).
在网站上,我使用OpenID(基于StackOverflow)实现了登录.
但我似乎无法退出.
在我的主机上我可以注销但是当用户再次尝试登录时(特别是使用谷歌),身份验证会通过而无需用户输入名称和密码.
如何向OpenID提供商表明用户不再登录该站点?
我是Laravel 5的新手,并尝试制作一个简单的身份验证页面.我的问题是我可以在点击注销链接后正确注销,但如果我点击浏览器的后退按钮,仍然能够看到实际上不应该看到我的身份验证中间件进程的页面内容.我读过我可以通过禁用缓存来防止这种情况,但不认为这是最好的方法,所以我怎样才能更好地做到这一点?我的退出路线就是
Route::get('logout', array('uses' => 'LoginController@logout'));
Run Code Online (Sandbox Code Playgroud)
注销功能是:
public function logout() {
Auth::logout(); // logout user
Session::flush();
Redirect::back();
return Redirect::to('pages/login'); //redirect back to login
}
Run Code Online (Sandbox Code Playgroud) 我使用基本的HTTP身份验证通过基本的LDAP授权改进了我的GWT/GXT应用程序.当我启动新浏览器时,它运行良好 - 我得到提示并获得对公司LDAP的授权.我的问题 - 除非我关闭/重新打开浏览器,否则我无法注销.我可以调试并查看如何SecurityContextLogoutHandler#logout调用以及执行以下代码
if (invalidateHttpSession) {
HttpSession session = request.getSession(false);
if (session != null) {
session.invalidate();
}
}
SecurityContextHolder.clearContext();
Run Code Online (Sandbox Code Playgroud)
然而,它似乎没有影响,因为网站被重新加载,我永远不会得到另一个HTTP身份验证提示,除非我重新启动浏览器(甚至清除缓存/ cookie将无济于事).这是applicationContext.xml的相关部分
<security:http auto-config='true'>
<security:intercept-url pattern="/reports/**" access="ROLE_USER" />
<security:http-basic />
<security:logout logout-url="/reports/logout"
logout-success-url="/reports/Application.html" />
</security:http>
Run Code Online (Sandbox Code Playgroud)
我试图定义自定义LogoutSuccessHandler,做authentication.setAuthenticated(false);,但也没有任何影响
这里有什么东西我在这里不见了?非常感谢您的帮助
我刚从Facebook iOS SDK 3.0.X升级到3.1.1,并重写了一些代码......
根据注销工作流程的Facebook文档(https://developers.facebook.com/docs/tutorials/ios-sdk-tutorial/authenticate/#step3),我正在调用FBSession.activeSession对象的closeAndClearTokenInformation方法.
这似乎对Facebook会话状态没有影响,因为在调用之后立即检查它仍然会返回一个打开的会话.
就目前而言,一旦我的应用程序使用Facebook登录,它就不会注销.
[更新1]
根据要求,这是我用来检查会话状态的代码:
if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded && FBSession.activeSession.isOpen)
//logged in
else
//not logged in
Run Code Online (Sandbox Code Playgroud)
[更新2]
改变了我的逻辑......改变了我原来的代码:
if (FBSession.activeSession.isOpen)
//logged in
else
//not logged in
Run Code Online (Sandbox Code Playgroud)
因为FBSession.activeSession.state返回FBSessionStateOpen,而不是FBSessionStateCreatedTokenLoaded.
我已经实现了一个带有Spring Security 3.0.2的登录注销系统,一切都很好但是对于这一件事:在我添加了一个带有invalid-session-url属性的会话管理标签后,在注销时,Spring总是会重定向我的无效-session-url而不是logout-success-url(之前它正确地做过).
有没有办法避免这种行为?
这是我的配置:
<http use-expressions="true" auto-config="true">
[...some intercept-url's...]
<form-login login-page="/login" authentication-failure-url="/login?error=true"
login-processing-url="/login-submit" default-target-url="/home"
always-use-default-target="true" />
<logout logout-success-url="/home?logout=true" logout-url="/login-logout" />
<session-management invalid-session-url="/home?invalid=true" />
</http>
Run Code Online (Sandbox Code Playgroud)
非常感谢.
我们使用客户ASP.NET按钮注销我们的Web应用程序,该应用程序使用ADFS进行身份验证.我们已经尝试了几个选项来尝试让应用程序正确注销,但似乎没有任何效果.
它通常会将您带到联合服务器上的注销页面,该页面表示您已正确注销,但如果您回滚,您仍然可以访问该Web应用程序.
尝试:https:// {DNS_name_of_RP_STS} /adfs/ls/?wa=wsignout1.0
https:// {DNS_name_of_RP_STS} /adfs/ls/?wa=wsignout1.0&wreply= {post-sign-out_landing_URL}等
有没有人让这个工作正常?
谢谢你的时间
我目前正在使用Visual Studio 2010创建一个网站.我正在使用SQL Server 2008中的默认成员资格架构进行用户身份验证.现在我面临以下问题.
用户注销时,该用户的membership.IsOnline属性应设置为false.然而,它没有发生; 该用户的membership .IsOnline属性仍然是true.
我正在使用LoginStatus控件向用户提供注销链接.
即使在FormsAuthentication.SignOut()之后,我也试图关注User.IsOnline = true.但结果没什么.
我使用这个代码https://github.com/gdongus/spring-boot-oauth-jwt-example,一切都很完美,但我不知道如何实现注销功能.有人可以给我建议吗?谢谢.
logout ×10
asp.net ×2
laravel ×2
php ×2
.net ×1
adfs2.0 ×1
certificate ×1
facebook ×1
https ×1
ios ×1
jwt ×1
laravel-5 ×1
membership ×1
openid ×1
sdk ×1
spring ×1
spring-boot ×1
ssl ×1
timeout ×1
web-services ×1