繁体   English   中英

用 Z3A580F142203677F1530BC30898FZ AD3 固定 ASP.NET 内核 Web API

[英]Securing ASP.NET Core Web API with Azure AD

我正在尝试启动一个使用 Azure AD 进行身份验证的新项目。 设置它以便我在前端有一个 SPA,它从我正在创建的 ASP.NET 核心 web API 获取信息。 我在获取前端令牌以在 API 中进行授权时遇到问题。 每次我向 API 发送请求时,我都会收到错误消息: Microsoft.IdentityModel.Tokens.SecurityTokenInvalidAudienceException: IDX10231: Audience validation failed

我已将项目设置如下。

在 Azure AD 中,我设置了两个应用程序:一个用于前端,一个用于 API。 API 应用程序公开了一个名为 access_as_user 的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 建议的教程后,我发现了我的问题。 我忘记在Startup.csConfigure部分添加身份验证中间件。

            app.UseRouting();
            app.UseAuthentication(); // This line was missing.
            app.UseAuthorization();

我强烈建议您首先遵循 Microsoft 示例教程,因为它们都在工作。 它们为您提供了使这些示例正常工作的所有步骤,并且是一个很好的起点: https://github.com/Azure-Samples/ms-identity-javascript-angular-spa-aspnetcore-webapi

在你发布的那个教程中,我也没有看到任何关于观众的信息。 那么你是从哪里得到的呢?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM