Authentication 使用Azure托管服务标识的服务到服务身份验证&;应用服务认证?

Authentication 使用Azure托管服务标识的服务到服务身份验证&;应用服务认证?,authentication,.net-core,azure-active-directory,azure-web-app-service,Authentication,.net Core,Azure Active Directory,Azure Web App Service,我喜欢MSI带来的简单性,它是一种很棒的使用方式,例如Web应用中的密钥库,但我还没有完全弄清楚如何使用它来简化服务到服务的身份验证。这应该是可能的,对吧 对于API应用程序,我需要启用应用程序服务身份验证/授权。 对于调用方服务,启用托管服务标识。 我想这本身还不够(尽管这会很棒!),但我可能需要使用HttpClient以某种方式转发凭据?有什么想法吗?或者使用AAD服务主体实现服务到服务身份验证的任何其他推荐(简单)方法?如果我理解正确,您想知道如何通过MSI访问受Azure AD保护的AP

我喜欢MSI带来的简单性,它是一种很棒的使用方式,例如Web应用中的密钥库,但我还没有完全弄清楚如何使用它来简化服务到服务的身份验证。这应该是可能的,对吧

对于API应用程序,我需要启用应用程序服务身份验证/授权。 对于调用方服务,启用托管服务标识。
我想这本身还不够(尽管这会很棒!),但我可能需要使用HttpClient以某种方式转发凭据?有什么想法吗?或者使用AAD服务主体实现服务到服务身份验证的任何其他推荐(简单)方法?

如果我理解正确,您想知道如何通过MSI访问受Azure AD保护的API

通常,一旦为Azure服务(即Azure web应用程序)启用MSI,将同时创建一个广告企业应用程序,该应用程序将代表Azure广告中的Azure服务

对于要访问的API,您应该创建一个应用程序角色,并将该角色分配给代表已启用MSI的Azure服务的AD Enterprise应用程序。完成所有进程后,您将能够通过以下代码获得访问令牌以访问所需的API(此C代码应在启用MSI的Azure服务上运行):

var azureServiceTokenProvider=新azureServiceTokenProvider();

字符串apiToken=await azureServiceTokenProvider.GetAccessTokenAsync(“

您知道我是否需要为我向受保护的API发出的每个请求获取新令牌吗?我正在尝试调用Azure AD受保护的API,我需要获取令牌,但我不确定是否需要在启动期间获取一次令牌,并配置startup.cs在创建httpClient时获取令牌?正在努力寻找示例。
var azureServiceTokenProvider = new AzureServiceTokenProvider();
string apiToken = await azureServiceTokenProvider.GetAccessTokenAsync("<API resource URI or API App ID>");