asp.net - 使用 Azure AD 保护 ASP.NET Core Web API
问题描述
我正在尝试启动一个使用 Azure AD 进行身份验证的新项目。它的设置使我在前端有一个 SPA,它从我正在创建的 ASP.NET 核心 Web API 获取信息。我在获取前端令牌以在 API 中进行授权时遇到问题。每次我向 API 发送请求时,我都会收到错误:Microsoft.IdentityModel.Tokens.SecurityTokenInvalidAudienceException: IDX10231: Audience validation failed
.
我已将项目设置如下。
在 Azure AD 中,我设置了两个应用程序:一个用于前端,一个用于 API。API 应用程序有一个公开的 API,称为access_as_user
. 然后前端应用程序可以访问它。我还为两者设置了客户端机密,并为前端添加了重定向 URL。
在我正在使用的 ASP.NET 核心 API 中,我正在使用Microsoft.Identity.Web
和调用它,如下所示:
// startup.cs
...
public void ConfigureServices(IServiceCollection services)
{
...
services.AddProtectedWebApi(Configuration, subscribeToJwtBearerMiddlewareDiagnosticsEvents: true);
...
}
...
在我的配置中,值如下:
"AzureAD": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "mydomain.onmicrosoft.com",
"TenantId": "*MY TENANT ID*",
"ClientId": "*Client ID of API",
"ClientSecret": "Client Secret for API",
"Audience": "Client ID of Front End"
}
要获得身份验证,我按照本教程 ->此处<- 设置 PostMan 以使用 OAuth 2.0 并自动为我获取令牌。魔法发生在本教程第 3 步的末尾。
任何帮助将不胜感激。
编辑:按照 alphaz18 建议的教程后,我发现了我的问题。我忘记Configure
在Startup.cs
.
app.UseRouting();
app.UseAuthentication(); // This line was missing.
app.UseAuthorization();
解决方案
我强烈建议您首先遵循 Microsoft 示例教程,因为它们都在工作。它们为您提供了使这些示例正常工作的所有步骤,是一个很好的起点: https ://github.com/Azure-Samples/ms-identity-javascript-angular-spa-aspnetcore-webapi
在你发布的那个教程中,我也没有看到任何关于观众的信息。那么你是从哪里得到的呢?
推荐阅读
- typescript - 如何在 Typescript 中调用函数名数组?
- python - 如何让两个骰子的结果显示在 python 中的“scorebox”中?
- firebase - Flutter:如何遍历“DocumentSnapshot.data()”中的每个字段
- reactjs - 在heroku启动时反应应用程序崩溃,本地工作正常
- java - 如何通过使用 Java 类将 inject() 函数用于源组件?
- c - 如果 C 是行优先顺序,为什么 ARM 内部代码假定列优先顺序?
- php - Laravel 不推荐在对象上使用 array_key_exists()
- python - Binance API Python - 如何使用特定的输出
- mysql - from 子句中的 Laravel 子查询
- java - JPA Criteria API - LIKE / OR 关系