Adfs

AD FS - 將 AD 屬性發送到 Shibboleth SP

  • August 23, 2015

我設置了一個 AD FS 聲明提供程序,並且一個 Shibboleth SP 成功地對其進行了身份驗證。當我登錄到受 Shibboleth 保護的站點時,索引會顯示所有標題。我按預期收到了 UPN,但我無法獲取其他屬性,如 surname 或 sAMAccountName 來發送。

我目前有 3 條索賠規則: 索賠規則

規則1:

規則 2:

規則 3:

從 Shibboleth SP 機器上的日誌來看,sn 似乎沒有作為 OID 屬性發送。

如果我編輯 attribute-map.xml 並刪除對 eppn 的引用,那麼我會在 shibd 日誌中得到以下內容:

2015-06-23 11:29:08 INFO Shibboleth.AttributeExtractor.XML [1]: skipping unmapped SAML 2.0 Attribute with Name: urn:oid:1.3.6.1.4.1.5923.1.1.1.6

在 shibd 日誌中沒有提到與上述輸出類似的 surname 或 sn,這讓我認為“轉換 SN”規則沒有正確寫入。


更新資訊:

sn通過將規則 1 從手動輸入更改為選擇下拉選項,我能夠讓姓氏工作surname。我需要做什麼才能讓其他沒有下拉菜單的 AD 欄位選擇工作?

我正在添加諸如streetAddress. 對於規則 1,我為 LDAP 屬性和傳出聲明類型手動輸入了 streetaddress。

然後我添加了一個附加規則:

c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/streetaddress"]
=> issue(Type = "urn:oid:2.5.4.232", Value = c.Value, Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/attributename"] = "urn:oasis:names:tc:SAML:2.0:attrname-format:uri");

我不知道是否http://schemas.xmlsoap.org/ws/2005/05/identity/claims/streetaddress正確,但值不是映射。

如何讓無法從下拉列表中選擇的 LDAP 屬性起作用?


編輯2:

我忘了添加選擇查看規則語言的結果(按照下面的 Matthieu 的要求):

c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
=> issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname", "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", "streetaddress"), query = ";userPrincipalName,sn,givenName,sAMAccountName,streetaddress;{0}", param = c.Value);

似乎它只是 get streetaddress,而所有其他值都有一個模式。由於沒有架構,它不會匹配 Transform 規則,streetaddress因為 if 語句正在尋找http://schemas.xmlsoap.org/ws/2005/05/identity/claims/streetaddress. 對於未從下拉選擇中選擇的值,我應該怎麼做?


我想到了:

我將轉換規則更改為以下內容:

c:[Type == "streetaddress"]
    => issue(Type = "urn:oid:2.5.4.232", Value = c.Value, Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/attributename"] = "urn:oasis:names:tc:SAML:2.0:attrname-format:uri");

我沒有尋找 Type == A 模式,而是輸入街道地址。然後在 Shibboleth SP 中,我更改了 Attribute-map.xml 以添加以下內容:

<Attribute name="urn:oid:2.5.4.232" id="streetaddress"/>

上面的 OID 是任意的。

要檢查您的“轉換 SN”規則是否按預期工作,請安裝Fiddler。然後安裝此檢查器,以便更輕鬆地閱讀 SAML 消息。

使用這些工具,您將能夠查看從 ADFS 伺服器發送到 Shibboleth SP 的內容。然後你就會知道配置錯誤在哪一側。

編輯:在螢幕 #1 的視窗底部,點擊“查看規則語言”按鈕時會看到什麼?您是否在右側的“Outgoing Claim Type”框中手動輸入了“sn”?

編輯 2:您在框中輸入的內容正是用作聲明類型的內容。如果您鍵入“foo”,那麼您的聲明類型為“foo”。如果您想要“ http://foo ”,那麼您必須輸入“ http://foo ”。如果您需要較長的聲明類型,而不是在框中鍵入所有內容,而是創建一個新的聲明描述(導航左側的樹,“AD FS”->“服務”->“聲明描述”)。這會在下拉列表中創建一個新選項,使用起來更簡單。

引用自:https://serverfault.com/questions/701071