Web API的基于Azure AD令牌的身份验证

时间:2020-01-06 07:52:52

标签: azure authentication azure-active-directory token asp.net-core-webapi

我们已经在.net Core 2.1中开发了未经身份验证的Web API。

但是现在我们尝试添加基于Azure AD令牌的身份验证。

我们已经在azure AD中注册了应用,并且在startup.cs文件中做了必要的更改。并添加了授权标签

当我们在邮递员中测试API时,我们生成了令牌,从而得到了HTML格式的Microsoft登录页面。

当我们在浏览器中交叉检查API时,通过提供用户名密码来询问域名用户名和密码,我们就会得到结果。

Azure AD设置或代码中似乎缺少某些配置或设置。

任何人都可以帮忙。否则,任何人都可以共享针对API的基于令牌的身份验证实现的步骤。

1 个答案:

答案 0 :(得分:0)

如果您已经拥有api,则应首先在Azure门户中注册一个应用。

在您的api应用程序中,您可以按照以下步骤操作:

  1. 安装软件包Microsoft.AspNetCore.Authentication.AzureAD.UI
  2. ConfigureServices函数中注册Azure AD承载身份验证服务:

    services.AddAuthentication(AzureADDefaults.BearerAuthenticationScheme)
            .AddAzureADBearer(options => Configuration.Bind("AzureAd", options));
    
  3. appsettings.json中,从Azure门户设置正确的api配置:

    "AzureAd": {
        "Instance": "https://login.microsoftonline.com/",
        "Domain": "YourDomain.onmicrosoft.com",
        "TenantId": "cb1c3f2e-a2dd-4fde-bf8f-f75ab18b21ac",
        "ClientId": "83bf146d-4948-4596-a4b3-b7b2e68ac3e0"
    },
    

    可以在Azure门户中找到租户ID,域名和API的ClientId。然后可以在受保护的控制器/操作上添加Authorize属性。如果您具有多个身份验证架构,则可以authorize with a specific scheme

您的客户端应用程序将使用OpenID Connect中间件和ADAL / MSAL使用OAuth 2.0协议为登录用户获取JWT承载令牌。承载令牌将传递到Web API,Web API使用JWT承载认证中间件来验证令牌并授权用户。