.Net Core WebApi 如何使用 AD 进行授权

Posted

技术标签:

【中文标题】.Net Core WebApi 如何使用 AD 进行授权【英文标题】:.Net Core WebApi How to use AD for authorization 【发布时间】:2019-10-30 01:13:06 【问题描述】:

我见过一百万个不同的答案,但没有一个有效。

谁能给我一个适用于的链接:

我有一个 web api,我已经在 Azure 上注册了它。我已配置 Azure Active Directory。

我有一个tenantId、一个clientId、一个client Secret,以及我应该需要的所有其他变量。

我可以通过 MVC 控制器通过 AD 将用户登录到我的系统,我如何使用 web api 做同样的事情?

我基本上需要生成 AD 令牌,以便我可以继续在 MVC 控制器之外使用 API。

必须是同一个令牌,因为我需要从 API 的客户端访问 microsoft graph。

帮助!

【问题讨论】:

说真的,这怎么搞砸了…… 我要做的就是: 1. 创建一个 .NetCore WebApi 并使用 Azure Active Directory 对其进行身份验证 那么,让我向邮递员请求 azure Active Directory 令牌,然后使用该令牌。但它不起作用。 【参考方案1】:

由客户端获取令牌并将其传递给您的 API。您无需指定客户端是什么(即 Web、iosandroid),但由于您使用的是 Azure AD,因此您可以使用 Microsoft 提供的适当 ADAL 库来执行此操作。

https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-authentication-libraries

【讨论】:

这些是我一直在查看的相同链接。它们都不起作用。【参考方案2】:

我可以通过 MVC 控制器通过 AD 将用户登录到我的系统,如何 我可以用 web api 做同样的事情吗?

如果您对服务器到服务器的交互感兴趣,而无需来自用户端的直接交互,您可以查看OAuth 2.0 Client Credentials Grant Flow for AZAD。

随附的文章包含简单的实现示例。我认为对于您的情况,example with a daemon/console app(只需用 Web API 替换它)就是您所需要的。下载示例,将 appsettings.json 中的配置(Instance、TenantId、ClientId 和 ClientSecret)替换为您的,然后尝试使用它。

【讨论】:

这些是我一直在查看的相同链接。它们都不起作用。 @TomCrosman 请指定您在使用守护程序运行示例时遇到的错误/问题。它应该是直截了当的。

以上是关于.Net Core WebApi 如何使用 AD 进行授权的主要内容,如果未能解决你的问题,请参考以下文章

带有 JWT Bearer 令牌和 ASP.NET Core 2 WebApi 的 Azure AD 用户信息

如何在 Web API .NET Core 的控制器之外获取当前用户

ASP.NET Core 2.2 中的 Azure AD 身份验证

如何使用数据注释为模型属性 WebApi .NET Core 添加布尔验证

如何从 ASP.NET Core WebAPI 获取 int 值?

如何在 Asp Net Core Web App(不是 WebAPI)中存储令牌