gpt4 book ai didi

authentication - 如何在spring-security的SecurityContext中存储自定义信息?

转载 作者:行者123 更新时间:2023-12-03 22:41:21 24 4
gpt4 key购买 nike

在我的应用程序中,我正在使用LDAP身份验证。但是我也有2个远程服务,这些服务需要通过方法login(用户名,密码)进行身份验证。该方法返回安全 token ,这使我能够调用其他方法,即,我应该将安全 token 作为第一个参数传递给服务方法。
因此,我想在使用LDAP成功登录后立即获得这些安全性 token ,并将它们存储在SecurityContext中。我尝试使用form-login元素的authentication-success-handler-ref。使用处理程序,我用自定义AuthenticationToken替换了SecurityContext中的Authentication对象,该自定义AuthenticationToken不仅包含密码,而且还包含安全性 token 。但是在这种情况下,我有一个异常(exception),即没有身份验证提供程序支持此类 token 。
我知道也可以在HTTP session 中存储 token ,但是在这种情况下,我必须将 session 传递给服务对象,因此我想将 token 存储在SecurityContext中。

处理服务安全 token 的最佳方法是什么?

最佳答案

我经常使用Authentication.getDetails()对象存储可能不会直接链接到用户的其他信息。因此,您可以在该字段中存储所需的任何对象(例如HashMap),并且它共享Authentication对象的生命周期。

HashMap<String, Object> info = new HashMap<String, Object>();
info.put("extraInfo", "info");
auth.setDetails(info);
...
Map<String, Object> i = (Map<String, Object>)SecurityContextHolder.getContext().getAuthentication.getDetails();

关于authentication - 如何在spring-security的SecurityContext中存储自定义信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3287667/

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