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

时间:2015-06-09 11:30:17

标签: java saml-2.0 shibboleth opensaml

我们正在使用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上的示例SessionID生成(非shibboleth SP组件)如下所示:

SecureRandomIdentifierGenerator generator = 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 authn请求。

1 个答案:

答案 0 :(得分:1)

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

A)OpenSAML 3.1.1中用于“SecureRandomIdentifierGenerator”的替代API

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

SecureRandomIdentifierGenerator generator = new SecureRandomIdentifierGenerator();     的sessionId = generator.generateIdentifier();

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

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

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构建器,marshallers和unmarshallers。在v2中,构建器用法:

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

在v3中,还没有wiki文档,但要么通过org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport使用全局XMLObjectProviderRegistry,要么使用org.opensaml.core.xml.util.XMLObjectSupport上的更高级别方法。