我正在为我的应用程序使用单点登录(SSO)。我已经扩展了tomcat阀门的SSO并添加了以下方法来获取SSO会话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将作为null,反向映射没有应用程序的会话。但是一旦我完成了身份验证,我就可以登录了它。
任何可能的原因,为什么会话ID不会进入SSO会话?
答案 0 :(得分:0)
我找到了问题的解决方案。实际上,如果我们不在web.xml中提供任何页面,那么该页面将绕过SSO会话。我发现相同问题的第二种情况是,如果url-pattern不符合规范或无效的url模式,SSO会话也会忽略它。