需要使用SAML2.0获取会话索引以修复注销

时间:2013-06-05 22:53:44

标签: wso2is

我正在使用此网址中的代码执行代理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;
}

}

1 个答案:

答案 0 :(得分:0)

如果在WSO2IS中的服务提供商注册中启用了单点注销。在SAML响应中,您将获得SessionIndex。          因此,必须将该值存储在某个地方以便在注销请求中发回。

这是您正在使用的旧样本。 [1]本文档包含启用单一注销的sso样本。

[1] https://docs.wso2.com/display/IS500/Configuring+SAML2+SSO