【问题标题】:Azure AD Token based Authentication for WebAPI基于 Azure AD 令牌的 WebAPI 身份验证
【发布时间】:2020-04-23 18:46:35
【问题描述】:

我们在 .net Core 2.1 中开发了无需身份验证的 Web API。

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

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

当我们在 postman 中测试 API 时,我们生成了令牌,我们得到了 Html 格式的 Microsoft 登录页面。

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

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

任何人都可以帮助解决这个问题。否则,任何人都会分享基于令牌的 API 身份验证实现的步骤。

【问题讨论】:

  • 嗨,Karuna,您是否在邮递员中成功获取了令牌并在请求的标头中设置了令牌?
  • 查看此内容以供参考:blogs.perficient.com/2019/07/11/…
  • 您能否提供一些有关您的步骤的屏幕截图?例如您在邮递员中请求的步骤(您在邮递员中请求的端点)以及您的步骤的更多详细信息。
  • @MohitVerma 感谢您的链接。但在他们提到的新创建应用程序的链接中。当我们创建新应用程序时,我们可以在向导中更改身份验证类型并进行处理(它将完成所有工作,例如在 AD 中注册应用程序和代码中的其他事情)。但就我而言,我们已经有了 API。我们需要为现有 API 添加身份验证。

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


【解决方案1】:

如果你已经有api,你应该先在Azure Portal中注册一个应用程序。

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

  1. 安装包Microsoft.AspNetCore.Authentication.AzureAD.UI
  2. ConfigureServices函数中注册Azure AD Bearer认证服务:

    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 Portal 中找到租户 ID、域名和 API 的 ClientId。然后您可以在受保护的控制器/操作上添加 Authorize 属性。如果你有多个认证模式,你可以authorize with a specific scheme

您的客户端应用程序将使用 OpenID Connect 中间件和 ADAL/MSAL 为使用 OAuth 2.0 协议的登录用户获取 JWT 不记名令牌。不记名令牌被传递给 Web API,后者使用 JWT 不记名身份验证中间件验证令牌并授权用户。

【讨论】:

  • 感谢您的输入。将按照上述步骤进行更新
  • 我找到了下面的链接并使用了github的源代码,发现能够实现身份验证。 blogs.msdn.microsoft.com/mihansen/2018/03/25/…
  • @Karuna,它使用了 azure app service 的 easy auth,如果你在 azure app service 上托管你的应用程序,你可以使用它,否则你仍然需要从你的代码中实现身份验证。
猜你喜欢
  • 2018-05-10
  • 2020-01-12
  • 1970-01-01
  • 2019-03-13
  • 1970-01-01
  • 2021-01-25
  • 2016-01-23
  • 2016-01-29
  • 1970-01-01
相关资源
最近更新 更多