【发布时间】:2015-11-08 11:22:24
【问题描述】:
我已经使用 spring SAML(SP) 和 shibboleth 3.1.1(IDP) 实现了 SSO,我想知道有没有办法在 authRequest 和 authResponse 之间传输自定义属性。假设我想发送我的自定义属性( jobName) 从 sp 到 idp,idp 验证值,然后把这个值返回给我。
我将 md:Extensions md:RequestedAttribute saml:AttributeValue 添加到我的 sp 元数据文件中,并覆盖 WebSSOProfileImpl.java 中的 getAuthnRequest 方法,但生成的 authRequest 不包含 md:RequestedAttribute 中的。
<md:Extensions xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
<md:RequestedAttribute Name="urn:oid:0.9.2342.19200300.100.1.3"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
isRequired="true"></md:RequestedAttribute>
</md:Extensions>
@Override
protected AuthnRequest getAuthnRequest(SAMLMessageContext context, WebSSOProfileOptions options, AssertionConsumerService assertionConsumer, SingleSignOnService bindingService) throws SAMLException, MetadataProviderException {
AuthnRequest authnRequest = super.getAuthnRequest(context, options, assertionConsumer, bindingService);
authnRequest.setExtensions(buildExtensions());
authnRequest.setAttributeConsumingServiceIndex(1);
return authnRequest;
}
protected Extensions buildExtensions() {
Extensions extensions = new ExtensionsBuilder().buildObject();
RequestedAttribute reqAttribute = new RequestedAttributeBuilder().buildObject();
reqAttribute.setName("urn:oid:0.9.2342.19200300.100.1.3");
reqAttribute.setNameFormat(AtomicRequestedAttribute.URI_REFERENCE);
reqAttribute.setIsRequired(true);
XSAny extraElement = new XSAnyBuilder().buildObject("saml:AttributeValue", "AttributeValue", "saml");
extraElement.setTextContent("myjobName");
reqAttribute.getAttributeValues().add(extraElement);
extensions.getUnknownXMLObjects().add(reqAttribute);
return extensions;
}
<md:AttributeConsumingService index="1">
<md:ServiceName xml:lang="en">The Demo Test</md:ServiceName>
<md:RequestedAttribute FriendlyName="eduPersonScopedAffiliation" Name="urn:oid:1.3.6.1.4.1.5923.1.1.1.9" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true" >
<saml2:AttributeValue>jobname1</saml2:AttributeValue>
<saml2:AttributeValue>jobname2@</saml2:AttributeValue>
</md:RequestedAttribute>
</md:AttributeConsumingService>
我不知道该怎么做?我是否也应该使用这个额外的属性名称和格式来修改我的 SP 元数据?如果是,我该怎么做?非常感谢这方面的任何帮助。
谢谢。 呵呵
【问题讨论】:
标签: java spring saml shibboleth