问题描述
参考oauth2Spring-Guide项目中的注销流程,用户首次使用用户名/密码进行身份验证后,下次注销时不再询问凭据。
如何确保每次注销后都询问用户名/密码。
这是我正在尝试实现的内容:-
- OAuth2服务器使用"AUTHORIZATION_CODE"授权类型颁发JWT令牌具有自动审批功能。这有html/angularjs表单要收集用户名/密码。
UI/Webfront-使用@EnableSSO。其所有终端都经过身份验证即它没有任何未经授权登录页面/UI/链接单击以转到/uaa服务器。因此点击http://localhost:8080立即将您重定向到http://localhost:9999/uaa并呈现用于收集用户名/密码的自定义表单。
- 资源服务器-使用@EnableResourceServer。简单REST API(&A)。
使用上面的方法,我无法计算出注销流程。对用户界面应用程序的HTTP POST/注销将清除用户界面应用程序中的会话/身份验证,但用户会自动再次登录(因为我已选择自动批准所有作用域),而不会再次要求输入用户名密码。
查看日志和网络调用,似乎所有的"OAUTH舞蹈"都成功地再次发生,而用户没有再次被要求输入用户名/密码,并且AUTH服务器似乎记得上一次为客户端(使用org.springframework.security.oauth2.provider.code.InMemoryAuthorizationCodeServices?)颁发的AUTH令牌。
如何告诉auth服务器在每次请求代码/令牌无状态时都要求提供用户名/密码。
或在我给定的方案中实现注销的最佳方式。
(要重新创建一些接近我要求的内容,请从UiApplication中删除permitAll()
部分,并在上述引导项目的auth服务器中配置autoApproval
。)
jwt
因为您正在使用推荐答案令牌,所以不能真正吊销它们。作为一种解决办法,您可以使用一个注销REST端点来存储注销呼叫的时间戳和用户ID。
稍后,您可以将注销时间与JWT令牌发布时间进行比较,以决定是否允许API调用。
这篇关于Spring Security OAuth2 AngularJS|注销流程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!