使用 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.
上使用更高级别的方法
我们正在使用 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"
的替代 APIA.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"
的替代 APIA.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.
上使用更高级别的方法