[英]One ASP.NET Core 2.2 Web API app Using Multiple Client IDs (Application IDs) of Azure AD B2C
[英]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/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_uri
以Reply 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.