2015-09-01 144 views
2

我們擁有聲明感知應用程序,並使用ADFS服務器對來自我們合作伙伴網絡的用戶進行身份驗證。擁有自己的ADFS服務器的客戶沒有問題。他們的ADFS服務器以SAML 1.0格式向我們發送令牌,並且一切正常。我們有一個客戶端向我們的ADFS服務器發送主動提供的SAML 2.0帖子。信任關係起作用,用戶進入我們的系統,但沒有任何索賠通過。所有我們得到的是這樣的(從我們的應用程序日誌文件):SAML 2.0聲明未通過ADFS

9/1/2015 7:35:44 PM: Claim type = http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod, value = urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport 
9/1/2015 7:35:44 PM: Claim type = http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationinstant, value = 2015-09-01T23:35:40.194Z 

比較SAML令牌,格式是截然不同的。例如,有一個來自於像這樣的SAML 1自定義聲明:

<saml:Attribute xmlns:a="http://schemas.xmlsoap.org/ws/2009/09/identity/claims" AttributeName="customerguid" AttributeNamespace="http://schemas.xmlsoap.org/ws/2005/05/identity/claims" a:OriginalIssuer="http://Absolut.vis-intel.net/adfs/services/trust"> 
<saml:AttributeValue>8835cf46-07a6-45f7-82d9-978905b5911f</saml:AttributeValue> 
</saml:Attribute> 

但是他們即將在這樣的:

<saml2:Attribute Name="CustomerGuid"> 
<saml2:AttributeValue>b4f3dd70-ef42-4596-be76-3e3fa077d06e</saml2:AttributeValue> 
</saml2:Attribute> 

我們正在考慮,也許我們需要做一些事情索賠規則。他們看起來與此類似:

c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/customerguid"] 
=> issue(claim = c); 

我們增加了自定義聲明類型和試圖改變要求的規則來使用它們,試圖抓住CustomerGuid但是這並沒有區別:

c:[Type == "CustomerGuid"] => issue(claim = c); 

尋找如何任何指針做這個工作。

回答

4

這不是由於SAML版本的不同所致。

當從IDP發佈SAML屬性時,屬性名稱通常使用名稱格式進行限定。此名稱格式在此處不存在。

您需要請求客戶IDP以所需格式發佈聲明,或使用您的中介ADFS對SP/RP預期的格式進行轉換。

如果您的依賴方期待一個名稱格式 -

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/customerguid

那麼SAML索賠應通過IDP在下面的格式發佈:

<Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/customerguid"> 
      <AttributeValue>b4f3dd70-ef42-4596-be76-3e3fa077d06e</AttributeValue> 
</Attribute> 

爲了進一步請參閱SAML規範的這一部分:

http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html#4.4.3.Attribute%20Statement%20Structure|outline

+0

是的,我意識到我們發佈了聯合元數據XML來表明我們期望來自IdP的聲明。顯然,客戶甚至沒有檢查過,並根據我們的電話談話編寫了他們的令牌(「是的,我們期望Name和CustomerGuid」)。所以你絕對正確,我很高興現在一切正常。 –

+0

很高興知道所有東西都已排序。隊友的歡呼聲!! – Karthik