Azure AD 中使用 .net core API 的 Microsoft.AspNetCore 与 Microsoft.IdentityModel (ADAL)

2024-01-03

Cheers,

我正在寻找有关与 Azure AD 一起使用的身份验证库的一些说明,特别是关于之间的差异微软AspNetCore and 微软身份模型为基础的图书馆。

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

当我在 Visual Studio 2017 (v15.6.3) 中创建 .net core (v2) API 项目并选择工作或学校帐户对于身份验证,我收到以下对话框,表明此选择用于

使用 Active Directory、Microsoft 对用户进行身份验证的应用程序 Azure 活动目录

然而当项目创建时,ADAL https://github.com/AzureAD/azure-activedirectory-library-for-dotnet图书馆,(也不MSAL https://github.com/AzureAD/microsoft-authentication-library-for-dotnet就此而言),不包含在该项目中。其实项目中引用的库有

  • Microsoft.AspNetCore.身份验证 https://www.nuget.org/packages/Microsoft.AspNetCore.Authentication
  • Microsoft.AspNetCore.Authentication.JwtBearer https://www.nuget.org/packages/Microsoft.AspNetCore.Authentication.JwtBearer

此外,项目模板构建了一个静态扩展类Azure 广告服务集合扩展用于使用 Azure AD 处理工作和学校身份验证详细信息(请注意,如果您选择使用个人帐户进行身份验证,则会创建不同的扩展类,但仍然基于 Azure)。

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

Microsoft.IdentityModel.Clients.ActiveDirectory https://www.nuget.org/packages/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 是请求和管理令牌所需的库。如果您正在构建一个保护其端点并需要访问令牌才能访问的 API,则您可能只需要使用 .NET core 中间件(模板中包含的中间件)。该中间件接受并验证传入的访问令牌。

您需要将 ADAL 或 MSAL 集成到您的应用中的唯一情况是,如果您有兴趣执行以下操作代流 https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-on-behalf-of来自您的网络 API。

Here's https://github.com/Azure-Samples/active-directory-dotnet-webapi-getting-started在 .NET core API 中实现此中间件的代码示例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure AD 中使用 .net core API 的 Microsoft.AspNetCore 与 Microsoft.IdentityModel (ADAL) 的相关文章

随机推荐

  • 使用 LINQ 读取 Csv

    我有一个像这样的 csv 文件 A 22 23 12 B 32 4 33 C 34 3 33 我想打印每行的总和和平均值并跳过第一列 如何在 LINQ 中使用 Lambda 进行操作 var stuff from l in File Rea
  • 在AndroidTestCase中使用@Ignore

    我正在使用 AndroidTestCase 进行一些单元测试 并且想知道是否可以使用我在 junit4 中读过的忽略注释 仅使用注释就会出现错误 也许有什么特别需要注意的地方 提前感谢 马库斯 您可以使用 Suppress在测试用例类或单个
  • DECLARE_DYNAMIC 和 DECLARE_DYNCREATE 之间的区别?

    你能让我知道两者之间有什么区别吗DECLARE DYNAMIC and DECLARE DYNCREATE 我们到底可以在哪里使用它们 第一个声明类具有运行时类型信息 第二个声明可以在运行时动态创建实例 MSDN 文档对此进行了详细描述 请
  • 如何用C#实现Lua容器(虚拟文件系统)模块加载器

    听起来有点可怕不是吗 一些背景信息 我想使用 LuaInterface 将包含一些 lua 模块的 tar 存档加载到我的 C 应用程序中 最简单的方法是将这些文件提取到临时文件夹 修改 lua 模块搜索路径并像往常一样使用 require
  • Woocommerce 产品库图像显示为全尺寸图像而不是缩略图

    该网站当前的 Woocommerce 设置正常提供主产品图像和多个图库图像 主要产品图像已正确使用 以便它显示在列表中 单击后 将打开产品页面 但是 在此产品页面中 Woocommerce 上提供的图库图像在屏幕右侧以全尺寸图像的形式显示在
  • adb 无法识别 Nexus 7 平板电脑

    我的 android sdk 和我的平板电脑出现一些奇怪的行为 我正在尝试通过以下方式识别我的平板电脑 adb devices l command 每次我插入平板电脑时 计算机上都会弹出一个窗口 询问我将平板电脑识别为相机 并询问我想用什么
  • 由于无法处理“${project.artifactId}”,无法构建 docker 映像:替换中缺少 ':'

    我正在尝试使用以下命令为 Maven 项目构建 docker 映像 mvn clean install DskipTests Pdocker 我有以下内容Dockerfile FROM openjdk 8 jre ARG serviceus
  • 使用 cypher 将节点插入 Neo4j 数据库的最有效方法是什么

    我试图通过使用 py2neo python 模块 py2neo cypher execute 执行 cypher 命令 将大量节点 500 000 插入到 非嵌入式 neo4j 数据库中 最终我需要消除对 py2neo 的依赖 但我目前正在
  • while ((c = getchar()) != EOF) 不终止

    我一直在阅读 C 编程语言 并且了解了输入和输出的这一部分 I ve read other threads saying that the console doesn t recognize enter as EOF So that I s
  • 将示例 XML 代码放入 Javadoc 中

    如何将示例 XML 代码放入 Javadoc 中 XML 代码包含我不想处理的尖括号 我尝试了以下组合PRE and code但没有成功 您可以使用 codejavadoc 标签 看看这个帖子 http www rgagnon com ja
  • EclipseLink 动态 MOXy 访问枚举值

    我正在使用下面列出的 XSD 和相应的 XML 一切都运转良好动态MOXy http wiki eclipse org EclipseLink Examples MOXy Dynamic但我不知道如何访问java中的枚举类型 有什么建议么
  • Javascript:确定字符串中的所有字符是否唯一,如果不唯一,则删除重复字符

    设置一个数组a letter occurences 但努力循环遍历这个数组 以检查occurences gt 1并删除那些存在的 function charFreq s var i j var a new Array for j 0 j l
  • iOS 11 PDFKit 不更新注释位置

    我正在构建一个在 iPad 上编辑 PDF 的应用程序 我正在尝试使用添加到 PDFView 超级视图的 panGesture 识别器来实现注释的拖动 问题是注释的新矩形边界已分配 但更改并未反映在屏幕上 这是我的代码 objc func
  • C# 中的通用列表和静态变量行为

    我有一个简单的 C 应用程序 当我运行代码时 我没有得到预期的结果 我得到 2 2 1 但我期待 1 2 3 using System using System Collections Generic using System Linq u
  • 如何将数据从警报对话框传递到颤振中的同一页面

    我想从警报对话框传递数据 警报对话框包含文本字段 因此无论用户在文本字段上输入什么内容 文本都应该传递到主页 屏幕 下面是警报对话框的代码 Padding padding const EdgeInsets only left 42 0 ch
  • 如何将 RDD[(String, String)] 转换为 RDD[Array[String]]?

    我正在尝试将文件名附加到文件中的每个记录 我想如果 RDD 是数组的话我会很容易做到 对于转换 RDD 类型或解决此问题的一些帮助 我们将不胜感激 在 字符串 字符串 类型中 scala gt myRDD first 1 scala gt
  • 让孩子除以最高孩子的身高

    我有两个孩子 div 父容器内的元素 div 如图所示 div class row div class item p Sup p div div class item p Sup p p Wish that other guy was th
  • 使用 angular.element 通过 $ID 获取作用域对象

    我需要将数据从角度应用程序传递到在角度之外运行的脚本 因为我无权编辑角度应用程序的代码 使用 Chrome 的 Angular Batarang 和 NG Inspector 扩展 我可以看到需要从中提取的 JSON 对象 但我不知道如何开
  • CaptchaMvc.Mvc5 不显示刷新按钮?

    我想创建一个验证码来在我的网站上添加新用户 为此 我尝试使用CaptchaMvc Mvc5但它不显示用于更改验证码图像的刷新按钮 看看 Chrome 的开发者检查 它有一个例外Uncaught ReferenceError is not d
  • Azure AD 中使用 .net core API 的 Microsoft.AspNetCore 与 Microsoft.IdentityModel (ADAL)

    Cheers 我正在寻找有关与 Azure AD 一起使用的身份验证库的一些说明 特别是关于之间的差异微软AspNetCore and 微软身份模型为基础的图书馆 我正在 net core 中实现一个 Api 其身份验证将使用 Azure