Microsoft.AspNetCore与Microsoft.IdentityModel(ADAL)在Azure AD中使用.net核心API

时间:2018-03-31 18:10:54

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

干杯,

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

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

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

的选择
  

使用Active Directory Microsoft对用户进行身份验证的应用程序   Azure Active Directory

vs 2017 work and school accounts auth dialog

然而,在创建项目时,ADAL库(对此而言MSAL)不包含在项目中。实际上,项目中引用的库是

此外,项目模板构建了一个静态扩展类 AzureAdServiceCollectionExtensions ,用于处理Azure AD的工作和学校身份验证细节(请注意,如果您选择使用个人帐户进行身份验证,则使用不同的扩展名class已创建,但仍然基于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的项目模板,没有运气 提前谢谢。

1 个答案:

答案 0 :(得分:2)

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

如果您对通过网络API执行On-behalf-of flow感兴趣,则需要将ADAL或MSAL集成到您的应用中的唯一情况。

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