gpt4 book ai didi

java - 如何关闭用户 session /身份验证。在 Spring OAuth2 中为用户/客户端发送访问 token 后的上下文

转载 作者:行者123 更新时间:2023-12-02 03:01:12 29 4
gpt4 key购买 nike

我正在实现一个应用程序,我们将其称为OAuth2Client,其身份验证/授权层由不同服务器OAuth2Server上的 Spring OAuth2 协议(protocol)实现进行管理。到目前为止,一切都运行良好,我只是想稍微偏离“正常”OAuth2 流程。

例如,在我的第三方应用OAuth2Client中,当用户想要登录时,他们必须通过OAuth2Server进行身份验证。然后,我们就有了熟悉的 OAuth2 流程,其中用户被重定向到 OAuth2Server 的身份验证页面,输入凭据,请求访问他/她的数据的权限等。

如果身份验证成功,他将被重定向到使用 OAuth2Client 应用程序注册的“redirect_uri”,其中包含 auth.请求中包含“代码”。 OAuth2Client 然后通过对 OAuth2Server 上的访问 token 端点的 api 调用,将此“代码”与“访问 token ”进行交换。

我想要做的是在用户成功通过身份验证并获得访问 token 后立即关闭用户 session /身份验证上下文

我想过使用过滤器来做到这一点,但我不确定这是否是最好的解决方案。

如有任何帮助,我们将不胜感激提前致谢...

最佳答案

我认为您不能将 session 事件附加到/token 端点,但在用户批准授予并发出授权代码后,实际上不再需要 session 。所以这会起作用:

@Controller
@SessionAttributes("authorizationRequest")
public class ApprovalEndpoint {

@RequestMapping("/oauth/confirm_access")
public ModelAndView getAccessConfirmation(Map<String, Object> model, HttpServletRequest request, SessionStatus status) throws Exception {
String template = createTemplate(model, request);
if (request.getAttribute("_csrf") != null) {
model.put("_csrf", request.getAttribute("_csrf"));
}
status.setComplete();
return new ModelAndView(new SpelView(template), model);
}

}

或者您可以按照您的建议使用Filter,但由于您可能想要自定义用户体验以供批准,因此您也可以通过此端点来执行此操作。

关于java - 如何关闭用户 session /身份验证。在 Spring OAuth2 中为用户/客户端发送访问 token 后的上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29750986/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com