[英]ADFS 2016 support for OIDC's `profile` scope?
我正在嘗試使用 OIDC 和授權代碼流來實現 web 應用程序。 我使用OIDC Core 1.0 規范作為工作方式的參考。 我正在嘗試針對 Microsoft ADFS 2016 服務器進行此操作,該服務器通常聲稱支持 OIDC。
我已經設法讓工作流程大部分工作,但有一個例外。 當我調用令牌端點以將我的授權代碼交換為access_token
和id_token
時,我希望通過name
聲明獲取用戶的可顯示名稱。 但我從 ADFS 收到的令牌中不存在該聲明。
當我重定向到 ADFS 服務器的授權端點時,我將scope
的openid profile
值傳遞給它。 根據 OIDC 規范的第 5.4 節, profile
scope 應導致請求name
聲明。 但我沒有收到這種說法。 我確實得到了一些我可以考慮使用的其他聲明(即upn
或unique_name
),但我正在努力盡可能地與標准保持一致。
這是否意味着 ADFS 2016 在該特定領域不符合 OIDC 規范? 還是我誤讀了我在這里引用的規范部分?
與名稱相關的標准聲明通常是第 18 節中介紹的given_name
和family_name
,我總是嘗試根據這些值對應用程序進行編碼,因此您的擔憂是正確的。
作為消費者,您還應該能夠選擇發出這些聲明的地點。 但是,提供者通常不完全符合標准,因此您可能需要稍微調整您的代碼。
這是一篇關於自定義 ADFS 聲明的MS 文章,盡管它可能無法讓您清楚地了解聲明應該如何工作。
更多信息
概括地說,OAuth 系統是如何發出聲明的:
有關更多信息,請參閱有關個人身份信息 (PII)的這篇文章 - 並了解聲明映射器如何在 Curity 系統中工作。
可能是您的 ADFS 提供程序沒有讓您完全控制,但值得了解設計模式,並盡可能減少令牌中的用戶信息。
雖然我看到的所有內容都指向支持標准 OIDC 范圍/聲明(如 email 和配置文件)的 Server 2016 上的 ADFS 4,但實際上我無法讓它工作。
我確實找到了解決方法:
例如:在左側框中鍵入“郵件”到 select 的“電子郵件地址”AD 屬性,然后在右側框中鍵入“電子郵件”以將該屬性作為“電子郵件”發送出去。
我仍然不確定為什么這對我來說不起作用,我的所有設置似乎都是正確的。 不過,我看到很多人問這個問題,所以我希望這對其他人有所幫助。
如果有人知道為什么 Server 2016 上的 ADFS 4.0 沒有按預期工作,請在評論中告訴我!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.