Я реализовал SSO с использованием Spring SAML (SP) & shibboleth 3.1.1 (IDP), и мне интересно, есть ли там любой способ передачи пользовательского атрибута между authRequest и authResponse. Предположим, я хочу отправить свой пользовательский атрибут (имя_пользователя) из sp в idp, idp проверить значение, а затем вернуть это значение мне.SAML - как передавать пользовательские атрибуты между Spring SAML extension (SP) и shibboleth 3.1.1 (IDP)
добавить мкр: Extensions мкр: RequestedAttribute SAML: AttributeValue в мой файл зр метаданных и overide метод getAuthnRequest в WebSSOProfileImpl.java, но генерируемый authRequest не содержат в мд: 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>[email protected]</saml2:AttributeValue>
</md:RequestedAttribute>
</md:AttributeConsumingService>
У меня нет подсказки, как это сделать? Должен ли я изменить свой метаданный SP вместе с этим дополнительным именем и форматом атрибута? Если да, как мне это сделать? Любая помощь в этом отношении была бы действительно оценена.
Спасибо. ltdong