2016-09-01 92 views
3

有沒有一種方法可以明確告訴IDP哪些屬性我期待?我想答案是肯定的,但我找不到例子。我是否需要在SP元數據中指定「某物」?Spring Saml中的顯式SAML屬性

是否有人能夠延長Spring SAML MetadataGeneratorFilter以實際構建SP xml的屬性列表?

例如,我想在響應中的以下內容:

  • 名稱
  • 公司名稱
  • 角色

任何建議嗎?

回答

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,從而允許或拒絕用戶身份驗證。

+0

這就是我沒有成功的嘗試,但在線上閱讀了更多的文章後,我被引導認爲ADFS不關心這一點的元數據。不是100%確定,但... – nuvio

+1

實際行爲與特定實現有關(某些聯邦系統忽略某些規範)。一般來說,屬性版本必須作爲身份提供者與服務提供者之間信任關係的策略進行顯式聲明和同意。 – vdenotaris