簡體   English   中英

使用 Azure AD B2C 使用個人用戶帳戶登錄 ASP.Net Core Web 應用程序 -> API

[英]Sign in to ASP.Net Core Web Application -> API with Individual User Accounts using Azure AD B2C

我已經使用 ASP.NET Razor 頁面設置了 Web 應用程序 -> 個人用戶帳戶 -> 連接到雲中的現有用戶存儲(Azure AD B2C)

在此處輸入圖像描述

這非常有效,我可以注冊並登錄 web 應用程序。

在此處輸入圖像描述

但是,當我按照 API 的指南進行操作時,我不明白如何登錄。

在此處輸入圖像描述

當 web 應用程序啟動時,示例Controller /weatherforecast 僅返回 HTTP 401。

在此處輸入圖像描述

查看文件結構我也找不到任何線索,但這可能類似於我猜的腳手架。

https://stackoverflow.com/a/50677133/3850405

在此處輸入圖像描述

如果我從WeatherForecastController注釋掉[Authorize] ,我會得到一個 HTTP 200 所以我需要的可能只是來自 Azure AD B2C 的令牌,該令牌正在發送到請求中的 Z9BBF373797BF7CF7BA6ZC802E 中的 Z9BBF373797BF7CF7BA6ZC802E

我知道 B2C 租戶和應用程序可以正常工作,因為我對 API 使用與 Web 應用程序相同的應用程序。 它是使用微軟自己的指南設置的:

https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-create-tenant

2020 年 7 月 27 日更新:

應用程序現在是舊版應用程序,應改為使用應用程序注冊。 請參閱本指南:

https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-register-applications?tabs=app-reg-ga#register-a-web-application

老的:

使用這些指南修復它:

https: //docs.microsoft.com/en-us/azure/active-directory-b2c/tokens-overview https: //docs.microsoft.com/en-us/azure/active-directory-b2c/access-tokens

我遇到了一些問題,出現錯誤"AADB2C90205: This application does not have sufficient permissions against this web resource to perform the operation.很多次。結果我沒有為應用程序聲明正確的范圍。

在此處輸入圖像描述

因此,第一步是確保您在已Published scopes下為您的 Azure AD B2C 應用程序讀取 scope :

在此處輸入圖像描述

然后在API access下添加您的應用程序並讀取 scope。

在此處輸入圖像描述

然后使用這種格式執行 GET 請求,最簡單的測試方法是在 Chrome 或任何其他瀏覽器中使用它:

https://<tenant-name>.b2clogin.com/tfp/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/authorize?
client_id=<application-ID>
&nonce=anyRandomValue
&redirect_uri=https://jwt.ms
&scope=https://<tenant-name>.onmicrosoft.com/api/read
&response_type=code

確保redirect_uriReply URL的形式出現在您的應用程序中。

在此處輸入圖像描述

這應該會給你一個結果,就像登錄后一樣https://jwt.ms/?code=...https//localhost:44376/signin-oidc?code=取決於redirect_uri Microsoft 示例使用https://jwt.ms但我更喜歡將我的代碼保留在我控制的域上。

從代碼參數中復制值,然后執行 POST 請求,我使用 Postman。

POST <tenant-name>.onmicrosoft.com/oauth2/v2.0/token?p=<policy-name> HTTP/1.1
Host: <tenant-name>.b2clogin.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&client_id=<application-ID>
&scope=https://<tenant-name>.onmicrosoft.com/api/read
&code=eyJraWQiOiJjcGltY29yZV8wOTI1MjAxNSIsInZlciI6IjEuMC...
&redirect_uri=https://jwt.ms
&client_secret=<app-key>

client_secret來自 Keys:

在此處輸入圖像描述

正確的響應應該是這樣的:

在此處輸入圖像描述

然后您可以復制access_token的值並使用Bearer Authorization訪問您的本地 API 。 要查看access_token的內容,您可以將值復制到https://jwt.ms/

在此處輸入圖像描述

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM