Spring Saml中的显式SAML属性

时间:2016-09-01 12:31:25

标签: java spring saml spring-saml

有没有办法明确告诉IDP哪些属性我期待?我想答案是肯定的,但我找不到例子。我是否需要在 SP元数据中指定“内容”?

是否有人能够扩展Spring SAML MetadataGeneratorFilter以实际构建SP xml的属性列表?

例如,我想在回复中提供以下内容:

  • 姓名
  • 公司名称
  • 部门
  • 作用

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

可以使用<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

请记住,您始终可以手动自定义/扩展元数据并发布它们(毕竟,我们正在谈论基于Web的应用程序),关闭Spring SAML MetadataGeneratorFilter的自动生成。

考虑到这种方法不足以保证可靠的属性释放。如果身份提供商提供了所需的数据,则应始终手动检查SAMLUserDetailsService的自定义实施内部,从而允许或拒绝用户身份验证。