我們有一個 SAAS 應用程式,我們希望為其添加一個選項以使用 Microsoft 登錄。我們可以完美地運行示例,但這些示例使用 Microsoft 的[Authorize]屬性來標記頁面以自動要求登錄。
我們有自己的身份驗證和權限系統。
我們只需要一個“使用 Microsoft 登錄”按鈕來啟動 OAuth 流程,并最終得到一個經過充分驗證和信任的電子郵件地址,并從那里繼續使用我們自己的機制。我似乎無法用微軟的代碼找到任何方法來做到這一點——它處理了很多情況,但所有這些都是完全自動化的。
撰寫重定向到 OAuth 并id_token在另一端接收的代碼并不多,但如果我們可以利用 MS 的系統,并且將來可能以即插即用的方式支持更多權限 - 那將很棒。
uj5u.com熱心網友回復:
答案很簡單:
選項1
Microsoft 未能在正確的位置正確記錄這一點,但它位于主aspnetcore存盤庫中顯示的示例中。
就在這里:Microsoft 示例
要點是我們可以像那里的許多示例一樣配置您想要的身份驗證方案,然后只需從頁面回傳一個ChallengeResult或呼叫this.Challenge(MicrosoftAccountDefaults.AuthenticationScheme)并回傳結果。
我們還可以為身份驗證生命周期添加事件,例如身份驗證何時完成 - 對其進行操作并將其連接到我們自己的身份驗證系統。我們在每次.Add[Whatever]呼叫身份驗證服務時都這樣做。
選項 2 - 更多手動
- 生成授權 url 很簡單(和重定向)
- 然后我們取回 JWT (id_token)
- 使用
OpenIdConnectConfigurationRetrieverfrom從端點 ( )Microsoft.IdentityModel.Protocols.OpenIdConnect檢索密鑰集OIDC[authority]/.well-known/openid-configuration - 使用
JwtSecurityTokenHandlerfromSystem.IdentityModel.Tokens.Jwt讀取令牌,并使用獲取的簽名運行驗證。
無需使用任何 JWT 庫,無需手動驗證時間戳或簽名。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/419499.html
標籤:
上一篇:將SQL查詢轉換為LINQ運算式
