1

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

}

4

1 回答 1

0

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

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

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

于 2014-09-23T02:45:57.797 回答