Azure Web 应用程序:从应用程序注册中删除客户端机密并使用托管身份?

问题描述 投票:0回答:1

(我们的环境是 Azure,我们的服务托管在 Azure 应用服务中。)

我们有一个遗留的 React 应用程序托管在 MVC .Net Core Web 应用程序中。

Web 应用程序所做的就是获取访问令牌(我们正在使用 Microsoft.Identity.Web 包)

我们的program.cs大致如下:

builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd"))
.EnableTokenAcquisitionToCallDownstreamApi(new string[] {"api://{Guid API}/Users.ReadWrite.All"})
.AddInMemoryTokenCaches();

然后家庭控制器获取访问令牌:

var token = await _tokenAcquisition.GetAccessTokenForUserAsync(new string[] {"api://{uri}/Users.ReadWrite.All"});

控制器然后将此访问令牌传递给请求标头,并将标头传递给 React 应用程序以供使用。

React 应用程序将使用令牌访问另一个 API(我们拥有)。

我们一直在使用客户端凭证流程(客户端 ID、客户端密钥等)来获取访问令牌,并且运行良好。但现在我们被要求删除所有客户端机密和证书,转而使用托管身份。我们得到的指导是使用联合凭证(用户管理身份)

有什么想法吗?

我浏览了很多不同的存储库和博客。我的思绪在飞速旋转,因为我感觉就像一个模糊的拼图,我正在把它拼凑在一起。我只是想设定水平,并向这里的优秀人士询问一些想法。

提前致谢!

azure oauth-2.0 azure-web-app-service azure-managed-identity
1个回答
0
投票

托管身份只能替代一种场景:您使用客户端 ID + 客户端密钥/证书来获取具有 Azure 资源所在同一租户内的应用程序权限的访问令牌。

GetAccessTokenForUserAsync
无法替换,因为它使用委派权限 (ForUser) 并包含用户信息。

© www.soinside.com 2019 - 2024. All rights reserved.