Spring Saml 中的显式 SAML 属性
Explicit SAML attributes in Spring Saml
有没有办法明确告诉 IDP 我期望哪些属性?我想答案是肯定的,但我找不到例子。我需要在 SP 元数据 中指定 "something" 吗?
是否有人能够扩展 Spring SAML MetadataGeneratorFilter
以实际构建 SP xml 的属性列表?
例如,我希望在回复中包含以下内容:
- 姓名
- 公司名称
- 部门
- 角色
有什么建议吗?
可以使用 <md:RequestedAttribute>
元素在元数据中调出 SAML 2.0 服务提供商属性要求。
这个元素有一个布尔属性,isRequired
,可以设置如下:
<md:EntityDescriptor entityID="https://sp.example.org/saml"
xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
<md:SPSSODescriptor
protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
...
<!-- one or more indexed AssertionConsumerService elements -->
<md:AssertionConsumerService index="1" Binding="..." Location="..."/>
...
<!-- zero or more indexed AttributeConsumingService elements -->
<md:AttributeConsumingService index="1">
<md:ServiceName>The Virtual School of Computational Science and Engineering</md:ServiceName>
<md:ServiceDescription>The Virtual School of Computational Science and Engineering (VSCSE) helps graduate students, post-docs and young professionals from all disciplines and institutions across the country gain the skills they need to use advanced computational resources to advance their research.</md:ServiceDescription>
<md:RequestedAttribute isRequired="false"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
Name="urn:oid:2.5.4.42"
FriendlyName="givenName"/>
<md:RequestedAttribute isRequired="true"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
Name="urn:oid:1.3.6.1.4.1.5923.1.1.1.7"
FriendlyName="eduPersonEntitlement">
<saml:AttributeValue
xsi:type="xs:anyURI">https://example.org/is-a-grad-student</saml:AttributeValue>
</md:RequestedAttribute>
</md:AttributeConsumingService>
...
</md:SPSSODescriptor>
...
</md:EntityDescriptor>
更多信息请访问:https://spaces.internet2.edu/.../SP+Attribute+Requirements
请记住,您始终可以手动 customize/extend 您的元数据并发布它们(毕竟,我们谈论的是基于 Web 的应用程序),关闭由 Spring SAML MetadataGeneratorFilter
.
请注意,此方法不足以保证可靠的属性发布。如果身份提供者提供了所需的数据,您应该始终手动检查 SAMLUserDetailsService
的自定义实现,从而允许或拒绝用户身份验证。
有没有办法明确告诉 IDP 我期望哪些属性?我想答案是肯定的,但我找不到例子。我需要在 SP 元数据 中指定 "something" 吗?
是否有人能够扩展 Spring SAML MetadataGeneratorFilter
以实际构建 SP xml 的属性列表?
例如,我希望在回复中包含以下内容:
- 姓名
- 公司名称
- 部门
- 角色
有什么建议吗?
可以使用 <md:RequestedAttribute>
元素在元数据中调出 SAML 2.0 服务提供商属性要求。
这个元素有一个布尔属性,isRequired
,可以设置如下:
<md:EntityDescriptor entityID="https://sp.example.org/saml"
xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
<md:SPSSODescriptor
protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
...
<!-- one or more indexed AssertionConsumerService elements -->
<md:AssertionConsumerService index="1" Binding="..." Location="..."/>
...
<!-- zero or more indexed AttributeConsumingService elements -->
<md:AttributeConsumingService index="1">
<md:ServiceName>The Virtual School of Computational Science and Engineering</md:ServiceName>
<md:ServiceDescription>The Virtual School of Computational Science and Engineering (VSCSE) helps graduate students, post-docs and young professionals from all disciplines and institutions across the country gain the skills they need to use advanced computational resources to advance their research.</md:ServiceDescription>
<md:RequestedAttribute isRequired="false"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
Name="urn:oid:2.5.4.42"
FriendlyName="givenName"/>
<md:RequestedAttribute isRequired="true"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
Name="urn:oid:1.3.6.1.4.1.5923.1.1.1.7"
FriendlyName="eduPersonEntitlement">
<saml:AttributeValue
xsi:type="xs:anyURI">https://example.org/is-a-grad-student</saml:AttributeValue>
</md:RequestedAttribute>
</md:AttributeConsumingService>
...
</md:SPSSODescriptor>
...
</md:EntityDescriptor>
更多信息请访问:https://spaces.internet2.edu/.../SP+Attribute+Requirements
请记住,您始终可以手动 customize/extend 您的元数据并发布它们(毕竟,我们谈论的是基于 Web 的应用程序),关闭由 Spring SAML MetadataGeneratorFilter
.
请注意,此方法不足以保证可靠的属性发布。如果身份提供者提供了所需的数据,您应该始终手动检查 SAMLUserDetailsService
的自定义实现,从而允许或拒绝用户身份验证。