2017-10-06 81 views
0

我正在使用WSO2 Identity Server 5.3如何使用WSO2 Identity Server 5.3生成多值屬性SAML2聲明?

我必須通過用戶配置文件生成一些帶有一些多值屬性的SAML2聲明。

比方說,我有一個逗號分隔值列表特定要求,我必須用我的SAML斷言響應以下結構組織的屬性:

<saml2:Attribute Name="attribute1"> 
    <saml2:AttributeValue>value1</saml2:AttributeValue> 
    <saml2:AttributeValue>value2</saml2:AttributeValue> 
    <saml2:AttributeValue>value3</saml2:AttributeValue> 
    <saml2:AttributeValue>value4</saml2:AttributeValue> 
</saml2:Attribute> 

我配置的STS客戶端獲取SAML2斷言以及我用多值聲明設置的特定用戶的聲明。

我的問題是我得到的SAML斷言響應爲以下結構:

<saml2:Attribute Name="attribute1"> 
    <saml2:AttributeValue>value1,value2,value3,value4</saml2:AttributeValue> 
</saml2:Attribute> 

我安裝上一個tomcat Travelocity的應用程序的實例,測試一次我得到了SAML斷言登錄後如預期應用程序並選擇SAML流程。我可以通過查看Identity Server的日誌文件來驗證它。

我也使用STS客戶端[1]以獲取SAML斷言,但是我得到的多值屬性是該特定屬性的逗號分隔值。

我直接用管理服務https://localhost:9443/services/wso2carbon-sts?wsdl作爲我的客戶端使用SOAP UI,但SAML響應與我之前說過的完全相同,多值屬性作爲該特定屬性的逗號分隔值。

下面是我在屬性聲明部分獲得的樣本:

<saml2:AttributeStatement> 
    <saml2:Attribute Name="http://wso2.org/claims/im" NameFormat="http://wso2.org/claims/im"> 
     <saml2:AttributeValue 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">jairo_fernandezr,jb_fernandez 
     </saml2:AttributeValue> 
    </saml2:Attribute> 
    <saml2:Attribute Name="http://wso2.org/claims/emailaddress" NameFormat="http://wso2.org/claims/emailaddress"> 
     <saml2:AttributeValue 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">[email protected] 
     </saml2:AttributeValue> 
    </saml2:Attribute> 
    <saml2:Attribute Name="http://wso2.org/claims/givenname" NameFormat="http://wso2.org/claims/givenname"> 
     <saml2:AttributeValue 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">Jairo 
     </saml2:AttributeValue> 
    </saml2:Attribute> 
</saml2:AttributeStatement> 

現在,我想問問你,如果有另一種方式來獲得與結構爲單值多值屬性的SAML斷言而不是使用管理服務https://localhost:9443/services/wso2carbon-sts?wsdl或另一種方法設置逗號分隔值,而無需設置travelocity應用程序。

[1] https://github.com/wso2/product-is/tree/5.x.x/modules/samples/sts

任何評論,將不勝感激。

感謝

+0

事實上,使用分隔值是wso2is處理多值屬性的默認方式。我相信你可以實現自己創建saml響應的類(覆蓋從聲明中創建屬性的方法),並將其配置到api-manager.xml中(我完全不記得界面,我可以檢查一次辦公室週一)。接下來你需要覆蓋的是你自己的聲明處理程序(這是類創建索賠的鍵/值圖),但我會檢查簽名如何與你自己的實現工作。 – gusto2

+0

什麼是你的用戶存儲?它是默認的LDAP嗎? – farasath

+0

我有一個外部LDAP作爲主用戶存儲,同時我也有一個AD作爲輔助用戶存儲。 –

回答

0

WSO2身份服務器5.3.0正確的行爲,當涉及到Web SAML SSO流程。

但是可以在默認情況下找到的服務wso2carbon-sts在https://localhost:9443/services/wso2carbon-sts處的行爲與我在原始文章中描述的行爲不同。

我已經向WSO2團隊報告了這一情況,他們在Identity Server的項目中註冊了一個錯誤,您可以看到詳細信息here,如果您有興趣,請跟進此事。

感謝您的支持

相關問題