以下是設置身份驗證的方式。 - 客戶端瀏覽器發送請求(下面的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
客戶端發送了他們的ADFS配置。這是他們的電子郵件聲明配置。我編輯了 – user3618129
以上的原文。謝謝。我以爲我是這麼做的。將名稱ID轉換爲電子郵件。使用「轉換傳入聲明規則」。傳入聲明類型:姓名ID傳入姓名ID格式:電子郵件傳出姓名ID格式:電子郵件傳遞所有聲明值。 – user3618129
但我看到你在答案中有一個不同的「類型」。我無法做到這一點,「轉換一個自負的聲明規則,我應該使用自定義規則嗎?」 – user3618129