Azure AD 在 Web API 中使用来自客户端应用程序的令牌

     2023-03-27     162

关键词:

【中文标题】Azure AD 在 Web API 中使用来自客户端应用程序的令牌【英文标题】:Azure AD using token from client application in Web API 【发布时间】:2020-03-28 04:17:45 【问题描述】:

我有以下设置: 2 个客户端应用程序(Xamarin Forms 和 WPF)和一个 Web API(.NET Core 2.0)。 客户端应用程序使用 MSAL 库对 Azure AD(单租户应用程序)进行身份验证。 客户端应用程序通过身份验证后,它们可以使用其身份验证令牌调用 Web API。

Web API 应该验证这个令牌(控制器中的[Authorize])如果它是有效的并且知道什么用户正在调用 API。 验证客户端没有问题,使用AcquireTokenInteractiveAcquireTokenSilent 方法非常容易。

调用 Web API 时(使用HttpClient,我们在标头中添加标记:client.DefaultRequestHeaders.Add("Bearer", token);

Startup.cs 类中的 Web API(删除了所有测试代码)配置如下(我知道这还不够):

services.AddAuthentication(AzureADDefaults.BearerAuthenticationScheme)
                .AddAzureADBearer(options => Configuration.Bind("AzureAd", options));

这是您在创建配置了 Azure AD 的新项目时获得的模板。

在 Azure AD 门户中,我们配置了应用程序,并且在客户端应用程序和 Web API 上配置了 ID(TentantId、ClientId/ApplicationId)。

我们已经对 On-Behalf-Of 流程进行了研究,但我不确定这是否是我们需要的流程。

应用程序注册为Single tentant 应用程序,如果将Suggested Redirect Uri 设置为msal[UNIQUE_ID_I_REMOVED_FOR_SECURITY]://auth,则应将其设置为https://login.microsoftonline.com/common/oauth2/nativeclient

我们没有使用 Azure AD 流程的经验,需要一些帮助。如果有人能通过链接、文档、示例代码为我指明正确的方向,将不胜感激。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

This sample 展示了如何使用 V1 端点或 this one(如果使用 V2 端点)从 WPF 应用程序调用核心 API。 API 需要知道 1) 谁发布了令牌(授权),以便它可以获取其发行者名称和签名密钥 2) 其受众 ID,以便它可以验证传入令牌的受众是否适合它(通常是 guid 或 uri)。只有当您的 API 需要代表原始用户调用另一个 API 时,OBO 流程才会与您相关:该流程允许您将您收到的令牌 (API1) 交换为另一个 API (API2) 保留有关信息的令牌原始用户。

【讨论】:

谢谢。我将进一步研究这些示例并接受您的回答作为解决方案。快速查看样本应该足以解决问题。

在 Web API 上验证 Azure AD 令牌的问题

...点中的WebAPI相同。认证是一样的。测试1:当我要求站点A使用其自己的API来获 查看详情

使用 Azure Ad Auth 从 .NET Core Web API 读取/写入 Azure Blob

】使用AzureAdAuth从.NETCoreWebAPI读取/写入AzureBlob【英文标题】:Read/WriteintoAzureBlobfrom.NETCoreWebAPIusingAzurAdAuth【发布时间】:2021-10-1322:48:40【问题描述】:我正在尝试从我的API合并blob上传。于是创建了存储帐户和容器。并且身份验证... 查看详情

从 Angular 前端调用受 Azure AD 保护的 Web API

...10:59:36【问题描述】:我目前正在开发一个Angular前端,它使用MSAL对用户进行身份验证。此前端应调用受AzureActiveDirectory保护的Web-API(也托管在Azure中)。虽然我很容易设法使用Angular 查看详情

使用 azure AD B2C 进行 blazor web api 身份验证

】使用azureADB2C进行blazorwebapi身份验证【英文标题】:UsingazureADB2Cforblazorwebapiauthentication【发布时间】:2021-03-1407:53:30【问题描述】:我一直在关注此文档,了解如何在blazorWeb应用程序中使用AzureADB2C进行身份验证https://docs.microsoft.... 查看详情

使用 Azure AD 的 Azure API APP 身份验证

】使用AzureAD的AzureAPIAPP身份验证【英文标题】:AzureAPIAPPauthenticationusingAzureAD【发布时间】:2016-04-0704:56:21【问题描述】:对于Azure中Web/Api应用的设置刀片上的身份验证/授权设置,我有点困惑。如果我通过门户启用AzureAD身份验证... 查看详情

来自不同租户的 Azure AD 同意

...【发布时间】:2017-12-0721:08:09【问题描述】:我正在尝试使用我们的多租户AD应用程序来访问用户的OnedriveforBusiness。但是,当用户属于其他租户时,在同意某些权限时,我不断收到错误消息。我不确定我需要设置哪些权限,以便... 查看详情

使用 JWT 令牌保护 asp.net 核心 Web api 时如何从 Azure AD 获取用户

】使用JWT令牌保护asp.net核心Webapi时如何从AzureAD获取用户【英文标题】:HowtogetusersfromAzureADwhensecuringasp.netcorewebapiwithJWTtoken【发布时间】:2017-12-0114:57:21【问题描述】:我在ReactJS中有一个.netcorewebapi和SPA客户端。我想允许用户使... 查看详情

WebAPI 如何在受 Azure AD 保护的 web api 上允许 LocalHost 调试

...】:2020-02-0713:01:26【问题描述】:我已将我的Webapi设置为使用AzureAD进行所需的身份验证。这是一个多步骤配置在Startup.Auth.cs上publicvoidConfigureAuth 查看详情

Azure AD 将多个应用程序连接到单个 Web API

...API【发布时间】:2020-01-0115:06:56【问题描述】:我有一个使用asp.net核心编写的WebAPI。此API将用于与在AAD中注册的其他几个服务进行通信,所有这些都可以使用不同的技术来实现,例如用asp.net核心编写的MVC应用程序或用Vue.JS编写... 查看详情

无法验证从 Azure AD 获得的访问令牌签名以保护 Web API

...【发布时间】:2019-08-1008:15:09【问题描述】:我正在尝试使用隐式流使用AzureAd保护我的Webapi(.netcore2.2)。我使用Azure门户>AzureActiveDirect 查看详情

Azure AD 身份验证令牌未通过 Web api 授权

...问题描述】:我在Azure上有一个需要授权的web-api,我正在使用AzureAD对帐户进行身份验证并生成访问令牌。我可以通过两种不同的方式通过ADAL为同一帐户成功地从AzureAD获取访问令牌,但其中只有一种由web- 查看详情

使用 Azure AD 和本地帐户保护 API

】使用AzureAD和本地帐户保护API【英文标题】:SecuringAPIwithAzureADandlocalaccounts【发布时间】:2020-08-1907:34:04【问题描述】:我想保护我的API,以便只有在AzureAD中进行身份验证并在我的应用程序中拥有本地帐户的用户才能调用它。... 查看详情

.NET Core 2 - Web Api - Azure AD - 用户为 NULL

...中设置了AzureAD以进行身份​​验证。对于我的授权,我使用了AuthorizationHandler,它根据用户名进行一些验证。我遇到的问题是User.Identi 查看详情

使用 Azure AD B2C 对 Web 应用程序和 Web API 进行基于令牌的身份验证

】使用AzureADB2C对Web应用程序和WebAPI进行基于令牌的身份验证【英文标题】:TokenbasedauthenticationforbothWebAppandWebAPIusingAzureADB2C【发布时间】:2017-08-0710:38:34【问题描述】:场景:Web应用程序和WebAPI都需要从服务器端进行身份验证和... 查看详情

oauth2.0 azure AD APIM 在哪里存储令牌

...116:19:46【问题描述】:我在我的APIM中启用了OAuth2.0,我将使用来自KeyValut的客户端ID和密钥从AzureAD生成令牌?我需要知道该令牌在APIM或Azure中的存储位置。因为我假设,可能有许多从客户端API到我们的API的请求,我想要 查看详情

Azure AD 应用程序未出现在 Azure Web 应用程序的现有 AD 应用程序列表中

】AzureAD应用程序未出现在AzureWeb应用程序的现有AD应用程序列表中【英文标题】:AzureADApplicationnotappearinginexistingADApplistforanAzurewebapplication【发布时间】:2017-02-1114:32:20【问题描述】:我刚刚完成了一些演练,我在其中创建了一个... 查看详情

使用 MSAL Angular 包装器在 Ionic 4 中处理来自 Azure AD 的回调

】使用MSALAngular包装器在Ionic4中处理来自AzureAD的回调【英文标题】:HandlingcallbackfromAzureADinIonic4withMSALAngularwrapper【发布时间】:2019-12-2610:23:48【问题描述】:我们正在使用Angular7构建一个Ionic4应用,并且我们希望针对AzureADv2端点... 查看详情

如何使用 Python 在 Azure AD 中验证令牌

】如何使用Python在AzureAD中验证令牌【英文标题】:HowtovalidatetokeninAzureADwithPython【发布时间】:2019-01-2813:21:30【问题描述】:我已经按照这个AzureADdemo从第1步到第4步注册了两个应用程序。我git克隆了AzureADdemo并成功运行。但我想... 查看详情