我正在为我的应用程序使用单点登录 (SSO)。我已经扩展了 tomcat valve 的 SSO 并添加了以下方法来获取 SSO session ID。
public String getSSOId(String sessionId){
SessionAttrManager.log("getSSOID " +sessionId);
Set<Session> keySet = reverse.keySet();
String SSOId = "";
Iterator<Session> iterator = keySet.iterator();
while(iterator.hasNext()){
Session session = iterator.next();
SessionAttrManager.log("getSSOID "+session.getId());
if(session.getId().equals(sessionId)){
SSOId = reverse.get(session)!=null?(String)reverse.get(session):null;
}
}
return SSOId;
}
并且每个应用程序都有基于表单的身份验证。有一个应用程序的 SSO 为空,反向映射没有该应用程序的 session 。但是一旦完成身份验证,我就可以登录了。
任何可能的原因,为什么 session ID 不会进入 SSO session ?
最佳答案
我找到了问题的解决方案。实际上,如果我们不在 web.xml 中提供任何页面,该页面将绕过 SSO session 。我发现相同问题的第二种情况是,如果 url 模式不符合规范或无效的 url 模式,SSO session 也将忽略它。
关于 session 未进入 session Tomcat 的单点登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18980392/