调用SAML注销处理程序时,如何识别用户以及哪些相关会话无效?
LogoutHandler接口具有:
void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication);
可以假设以下内容吗?
ExpiringUsernameAuthenticationToken auth = (ExpiringUsernameAuthenticationToken) authentication;
SAMLCredential credentials = (SAMLCredential)auth.getCredentials();
String nameId = credentials.getNameID().getValue();
当NameId是瞬态时,可以假设它在一个特定会话中保持不变吗?我无法从SAML文档中找到具体的证据。我只知道它在多个会话中并不持久。
我实际上应该使用SessionIndex而不是NameId吗? 服务提供商是否可能获得具有多个SessionIndex的瞬态NameId 的注销请求?
实际问题:当用户通过身份验证时,我需要创建自定义身份验证令牌,并将其与数据库绑定到SAML SessionIndex / NameId(这是正确的)。当用户注销时,我需要使用登录时使用的相同ID从数据库中删除相应的自定义令牌。我怎样才能用Spring SAML实现这个目标?