2016-03-14 41 views
0

我有以下設置:wordpress的NameID策略無效

Windows 2012 R2與ADFS 3.0。 WordPress設置爲SP(依賴方信任),SimpleSAMLphp爲IdP(聲明方信任)。

我想在SSP的幫助下驗證WordPress用戶。控制流程如下: 用戶登錄到WordPress。然後該頁面將用於在ADFS服務器上配置的IdP提供程序的數量。用戶選擇SSP。用戶使用SSP進行身份驗證,並將響應發送給ADFS,ADFS又將信息傳遞給WordPress。

我配置了所有依賴&索賠方&它運作良好,獨立(WP-ADFS,ADFS-SSP),但是當我試圖用SSP認證WP,它給了我error: The SAML authentication request had a NameID Policy that could not be satisfied.

我有規則的設置爲: 索賠方治:

變換傳入規則:瞬間填充NameID到Windows帳戶名

依託黨統治:

規則1:

LDAP規則:SAM帳戶名稱 - > Windows帳戶名, 電子郵件的地址 - >電子郵件地址

規則2:

變換的傳入聲明:Windows帳戶名稱 - >瞬態填充NameID標識符

我剛剛開始在Windows服務器上使用SSO,所以不太瞭解聲明規則&我猜可能有些問題,因爲單獨所有的模塊都可以正常工作。 (例如:WP爲SP,ADFS爲IdP,ADFS爲SP,SSP爲IdP)。

我究竟做錯了什麼。

請讓我知道,如果我錯過了任何細節。

謝謝!

回答

3

第一步是找出正在請求什麼NameID策略。在FireFox中安裝SAML Tracer並運行你的流程。你會看到AuthnRequest可能有一個NameIDPolicy列出(例如<samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress")。

一旦您知道需要什麼NameID,您可以嘗試將Wordpress配置爲接受不同類型(SSP默認使用urn:oasis:names:tc:SAML:2.0:nameid-format:transient)或將SSP配置爲以預期格式釋放NameID。

以下是在SSP使用authproc使用mail屬性爲填充NameID

的一例
'authproc' => array(
      60 => array(
        'class' => 'saml:AttributeNameID', 
        'attribute' => 'mail', 
        'Format' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress', 
      ), 
    ), 

還有其他NameIDgeneration filters documented

+0

感謝您的附加建議,這真的很有幫助。在追蹤器中,我發現saml'AuthnRequest'在WP和ADFS的saml請求中將'NameIDPolicy'指定爲'transient'。然而,SSP的'AuthnRequest'將'NameIDPolicy'指定爲'unspecified'。我已經在SSP的'sp-remote.php'中將'NameIDPolicy'設置爲'transient',並且SAML響應對SSP也表示相同。但是在WP端,我在SAML響應消息中出現了'NameIDPolicy'錯誤。 – harshad

+0

那麼,我找到了原因。在ADFS中,我將聲明規則設置爲'unspecified'(很可能在各種調試解決方案中)。但是現在在設置'NameIDPolicy'爲'email'後,我認爲問題已經解決,因爲現在我得到了像'用戶名未提供'的錯誤,用於SP-Initiated/IdP-Initiated登錄。 – harshad