使用 OpenSaml3.1.1 准备 SAML 身份验证请求

Prepare SAML Authentication request using OpenSaml3.1.1

我们正在使用 shibboleth-idp 对使用来自 shibboleth 的 SSO 解决方案的用户进行身份验证。我们能够进行 idp 升级(2.4 到 3.1.1),我们也能够检查 IdP 3.1.1.(http://localhost:8080/idp/profile/status)

的状态

据我们所知,'IdP 2.4' 使用的是 OpenSaml2.6,而 IdP 3.1.1 使用的是 Opensaml 3.1.1,

我们有以下关于 OpenSAML 3.1.1 的问题

A) 在 OpenSAML 3.1.1 中用于 "SecureRandomIdentifierGenerator"

的替代 API

A.1) 使用 Open SAML 2.6 在 SP(非 shibboleth SP 组件)生成示例 SessionID 如下所示 ::

SecureRandomIdentifierGenerator 生成器 = new SecureRandomIdentifierGenerator(); sessionId=generator.generateIdentifier();

A.2) 使用 Open SAML 3.1.1 ???

B) 如何使用 Open SAML 3.1.1 发送 SAML 请求 B.1) 使用 Open SAML 2.6 从 SP(非 shibboleth SP 组件)到 Idp 2.4(Shibboleth 组件)的 SAML 请求示例如下: 我们调用 "getAuthnRequest()" 方法来生成 SAML 请求(我们使用的是 SAML 2.6)

            private AuthnRequest getAuthnRequest(DateTime issueInstant, Issuer issuer,
                                            String consumerUrl, String spUrl) {

                            AuthnRequestBuilder authRequestBuilder = new AuthnRequestBuilder();
                            AuthnRequest authRequest = authRequestBuilder
                                                            .buildObject("urn:oasis:names:tc:SAML:2.0:protocol",
                                                                                            "AuthnRequest", "samlp");
                            authRequest.setForceAuthn(new Boolean(false));
                            authRequest.setIsPassive(new Boolean(false));
                            authRequest.setIssueInstant(issueInstant);
                            authRequest
                                                            .setProtocolBinding("urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST");
                            authRequest.setAssertionConsumerServiceURL(consumerUrl);
                            authRequest.setIssuer(issuer);
                            authRequest.setAttributeConsumingServiceIndex(1);

                            return authRequest;

            }

B.2) 使用 Open SAML 3.1.1 ???

请建议我们使用 opensaml 3.1.1 来准备 saml 身份验证请求。

这是我从官方论坛得到的回复:

A) 在 OpenSAML 3.1.1 中用于 "SecureRandomIdentifierGenerator"

的替代 API

A.1) 使用 Open SAML 2.6 在 SP(非 shibboleth SP 组件)生成示例 SessionID 如下所示 ::

SecureRandomIdentifierGenerator 生成器 = new SecureRandomIdentifierGenerator(); sessionId=generator.generateIdentifier();

A.2) 使用 Open SAML 3.1.1 ???

v3 版本为 net.shibboleth.utilities.java.support.security.SecureRandomIdentifierGenerationStrategy 位于 java-支持。

B) 如何使用 Open SAML 3.1.1 发送 SAML 请求

            private AuthnRequest getAuthnRequest(DateTime issueInstant, Issuer issuer,
                                            String consumerUrl, String spUrl) {

                            AuthnRequestBuilder authRequestBuilder = new AuthnRequestBuilder();

B.2) 使用 Open SAML 3.1.1 ???

包名称已更改,现在位于 org.opensaml.saml.saml2.core.impl.AuthnRequestBuilder。但除此之外我相信应该是完全一样的。您没有使用 Eclipse 或其他 IDE 吗?它可以帮助进行简单的包导入更改。

顺便说一句,在 v2 和 v3 中,我们不鼓励像这样直接使用 -Builder 类。我们建议您通过已注册的提供商获取 XMLObject 构建器、编组器和解组器。在 v2 中,构建器用法:

https://wiki.shibboleth.net/confluence/display/OpenSAML/OSTwoUsrManJavaCreateFromScratch

在 v3 中,还没有 wiki 文档,但是要么通过 org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport 使用全局 XMLObjectProviderRegistry,要么在 org.opensaml.core.xml.util.XMLObjectSupport.

上使用更高级别的方法