asp.net-core - Microsoft.AspNetCore 与 Microsoft.IdentityModel (ADAL) 与 Azure AD 中的 .net 核心 API

标签 asp.net-core azure-active-directory adal msal

干杯,

我正在寻找有关与 Azure AD 一起使用的身份验证库的说明,特别是关于基于Microsoft.AspNetCoreMicrosoft.IdentityModel 的库之间的差异。 p>

我正在 .net 核心中实现一个 Api,其身份验证将使用 Azure Active Directory (AAD) 进行管理。根据应用程序的需要,我希望将原始 (v1) 端点与 ADAL 一起使用,而不是 v2 端点,因为此时 v2 端点(RBAC 和组)不提供某些功能。所有迹象都表明 ADAL 库是正确的选择,但这与以下内容不同步:

当我在 Visual Studio 2017 (v15.6.3) 中创建一个 .net core (v2) API 项目并选择工作或学校帐户进行身份验证时,我得到以下对话框,表明这选择是为了

applications that authenticate users with Active Directory, Microsoft Azure Active Directory

vs 2017 work and school accounts auth dialog

然而当项目被创建时,ADAL库(也不是 MSAL)不包含在项目中。其实项目中引用的库是

此外,项目模板构建了一个静态扩展类 AzureAdServiceCollectionExtensions 用于处理 Azure AD 的工作和学校身份验证细节,(请注意,如果您选择使用个人帐户进行身份验证,则不同的扩展类已创建,但仍基于 azure)。

但这些不是此包中的 ADAL.net 类

Microsoft.IdentityModel.Clients.ActiveDirectory

AspNetCore 包由 Asp.Net 团队发布,而 ADAL 包由 AzureAD 团队发布。

最后我开始回答一些问题:

为什么 ADAL(甚至 MSAL)库不是与 Azure AD 集成的模板的一部分?

模板是否指明了与 Azure AD 集成的首选方法,并暗示使用 AspNetCore 库?

到目前为止,我阅读的所有与 Azure AD 集成的文档都涉及 ADAL 或 MSAL,我是否遗漏了 AspNetCore 库的某些内容?

请注意,我确实搜索了使用 ADAL 或 MSAL 的项目模板,但没有成功。
提前致谢。

最佳答案

ADAL 和 MSAL 是请求和管理 token 所需的库。如果您正在构建一个 API 来保护它的端点并且需要访问 token 才能访问,您可能只需要使用 .NET 核心中间件(模板中包含的内容)。该中间件接受并验证传入的访问 token 。

您需要将 ADAL 或 MSAL 集成到您的应用中的唯一情况是您有兴趣执行 On-behalf-of flow来自您的网络 API。

Here's在 .NET 核心 API 中实现此中间件的代码示例。

关于asp.net-core - Microsoft.AspNetCore 与 Microsoft.IdentityModel (ADAL) 与 Azure AD 中的 .net 核心 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49590882/

相关文章:

asp.net - 嵌套类属性未从配置 ASP.NET Core 中正确填充

azure-active-directory - 401 使用 MSAL 查询 .net 5 Web API

azure - 使用 GraphAPI 的 AAD token 无法访问我自己的 Rest API?

c# - 在 ConfigureServices 中注册服务时会调用哪个构造函数

asp.net-core - 如何在 MVC 6 beta7 中插入自定义 View 引擎?

azure - 从 azure ad b2c 导出审核日志

azure-active-directory - Azure AD Connect 安装 - System.Security.SecurityException : Requested registry access is not allowed

javascript - 无法让 ADAL 拦截器在 Angular 中工作

azure - 重定向到 Web 应用程序后无法获取身份验证 token

asp.net - 身份服务器 4 使用有效访问 token 获取 401 未授权