我正在使用此网址中的代码执行代理SAML2.0 SSO: http://svn.wso2.org/repos/wso2/people/asela/wso2-samples/sso_webapp/ 但是注销不起作用。请原谅我的英语。 我被告知,当身份服务器发送身份验证响应时,会在其中发送会话索引值,您需要在注销请求中向身份服务器返回完全相同的值。如何使用SAML 2.0获取会话的索引值? 这是我的类LogoutRequestBuilder的代码 public LogoutRequest buildLogoutRequest(String subject,String reason){ Util.doBootstrap(); LogoutRequest logoutReq = new org.opensaml.saml2.core.impl.LogoutRequestBuilder()。buildObject(); logoutReq.setID(Util.createID());
DateTime issueInstant = new DateTime();
logoutReq.setIssueInstant(issueInstant);
logoutReq.setNotOnOrAfter(new DateTime(issueInstant.getMillis() + 5 * 60 * 1000));
IssuerBuilder issuerBuilder = new IssuerBuilder();
Issuer issuer = issuerBuilder.buildObject();
issuer.setValue(Util.getProperty(SSOConstants.ISSUER_ID));
logoutReq.setIssuer(issuer);
NameID nameId = new NameIDBuilder().buildObject();
nameId.setFormat(SSOConstants.SAML_NAME_ID_POLICY);
nameId.setValue(subject);
logoutReq.setNameID(nameId);
SessionIndex sessionIndex = new SessionIndexBuilder().buildObject();
sessionIndex.setSessionIndex(Util.createID());
logoutReq.getSessionIndexes().add(sessionIndex);
logoutReq.setReason(reason);
return logoutReq;
}
}
答案 0 :(得分:0)
如果在WSO2IS中的服务提供商注册中启用了单点注销。在SAML响应中,您将获得SessionIndex。 因此,必须将该值存储在某个地方以便在注销请求中发回。
这是您正在使用的旧样本。 [1]本文档包含启用单一注销的sso样本。
[1] https://docs.wso2.com/display/IS500/Configuring+SAML2+SSO