2015-05-27 92 views
4

以下是設置身份驗證的方式。 - 客戶端瀏覽器發送請求(下面的URL)到客戶端的ADFS服務器, - 客戶端ADFS然後查看嵌套的中繼狀態並將請求轉發到我們的ADFS服務器。 - 我們的ADFS查看請求並將請求發送到我們的APP。ADFS未通過NameID

URL is here。

https://clientadfs.clientdomain.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=RPID%3Dhttps%3A%2F%2ouradfs.ourdomain.com%2Fadfs%2Fls%2F%26RelayState%3DRPID%3Dhttps%3A%2F%2ourapp.ourdomain.com%2Fvaruna%2Fconsole%2Fsso.aspx%3FsamISso%26lang%3Den_CA 

該請求在ADFS服務器上生成一個空白頁面,沒有錯誤。

我得到了提琴手跟蹤客戶端。客戶使用用戶的電子郵件地址來識別用戶。我可以在SAML令牌中看到發送給客戶端的ADFS有這個電子郵件地址。 此SAML令牌轉到我們的ADFS服務器,我看到來自ADFS服務器的SAML響應。但是,這沒有用戶的電子郵件地址。我認爲這是問題。

在我們的ADFS服務器,我有這樣的客戶的要求(在聲明提供信託)來處理用戶ID(這是他們的電子郵件):

聲明規則名稱:電子郵件 傳入聲明類型:名稱ID 傳入名稱ID格式:電子郵件 傳出名稱ID格式:電子郵件 傳遞所有聲明值。

這裏是要求規則語言

c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format"] == "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"] 
=> issue(Type = "Email", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType); 

在客戶端的ADFS配置的要求,這是他們的電子郵件/用戶ID的配置:

IssuanceTransformRules    : @RuleTemplate = "LdapClaims" 
             @RuleName = "Pass email" 
             c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccou 
             ntname", Issuer == "AD AUTHORITY"] 
             => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/20 
             05/05/identity/claims/nameidentifier"), query = ";mail;{0}", param = c.Value); 

我不知道我做錯了。任何人都能發現我的問題嗎或者你能建議我應該看的地方?

感謝您的幫助!

  • RM

回答

4

「來處理用戶ID(這是他們的電子郵件)」

所以是SAML聲明爲類型的電子郵件或用於用戶ID類型的斷言?即該屬性的斷言名稱是什麼。

在ADFS方面。改造的電子郵件要求,預計一型「http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

更新

的,您需要轉換到填充NameID電子郵件。 NameId也有一個「傳入名稱ID格式」,我猜是「電子郵件」。您需要在SAML元數據中驗證這一點。

所以,你的要求的規則應該是這樣的:

C:[類型== 「http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier」, 屬性[ 「http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format」] ==「甕:綠洲:名稱:TC:SAML: 1。1:填充NameID格式:EmailAddress的 「] =>問題(類型= 」 http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress」,發行人 = c.Issuer,OriginalIssuer = c.OriginalIssuer,值= c.Value, 的ValueType = c.ValueType);

更新1

ADFS支持:

<NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</NameIDFormat> 
<NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent</NameIDFormat> 
<NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</NameIDFormat> 

所以格式可以是EMAILADDRESS,持續性或瞬時

嘗試所有三種格式的變換規則,並參閱。

此外,你的應用程序得到什麼聲稱?您可以通過How to: Access Claims in an ASP.NET Page轉儲出來。

+0

客戶端發送了他們的ADFS配置。這是他們的電子郵件聲明配置。我編輯了 – user3618129

+0

以上的原文。謝謝。我以爲我是這麼做的。將名稱ID轉換爲電子郵件。使用「轉換傳入聲明規則」。傳入聲明類型:姓名ID傳入姓名ID格式:電子郵件傳出姓名ID格式:電子郵件傳遞所有聲明值。 – user3618129

+0

但我看到你在答案中有一個不同的「類型」。我無法做到這一點,「轉換一個自負的聲明規則,我應該使用自定義規則嗎?」 – user3618129