Asp.net-Core

如何從 Azure B2C 獲取 ASPCore 中的 OID 聲明

  • January 23, 2020

我為什麼要這個?

我正在嘗試從我的使用者那裡獲取一個唯一標識符,我可以將其連接到數據庫記錄。我不想使用電子郵件作為標識符是有原因的。我讀到 B2C 不支持 SUB 聲明,並在其位置使用 OID。

我已採取的步驟

因此,我設置了我的兩個策略都返回 Azure B2C 上的對象 ID:

在此處輸入圖像描述

我目前正在使用個人登錄和註冊策略,並且我收到了所有索賠,包括我指定的我想要退回的電子郵件索賠。但是,我找不到與 OID 或 SUB 相關的索賠。

User.Claims 

讓我得到以下結果:

在此處輸入圖像描述

我發現的唯一希望是這種說法:

類型:http: //schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier

值:目前不支持。使用 oid 聲明。

問題

我是否錯過了一些您需要執行以檢索此特定聲明的額外步驟?

有沒有人成功地從 Azure B2C 檢索 OID 或 SUB?

好吧,這很尷尬,我一定看過這條線大約 30 次並沒有註意到……

我正在檢索 OID 令牌,它的聲明類型是:

http://schemas.microsoft.com/identity/claims/objectidentifier

從我提供的螢幕截圖中可以清楚地看到。我會留下這個問題,因為架構可能會讓其他人失望。

我為此掙扎了一段時間,這篇文章幫助了我。

要使用一些程式碼更新內容,下面將獲取對象標識符值(Azure 中的唯一使用者 ID)

User.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value

感謝您指出架構/類型的差異!

引用自:https://stackoverflow.com/questions/38978403