我喜欢MSI带来的简便性,这是一种很棒的使用方式,例如Web App的Key Vault,但我还没有弄清楚如何使用它来简化服务到服务的身份验证。应该有可能吧?
对于API App,我需要启用App Service身份验证/授权。 对于呼叫者服务,请启用托管服务身份。 我想这本身还不够(尽管那太棒了!),但是我可能需要使用HttpClient以某种方式转发凭据?有任何想法吗?还是使用AAD服务主体实现服务到服务身份验证的任何其他推荐(和简单)方法?
答案 0 :(得分:2)
如果我理解正确,则想知道如何通过MSI访问受Azure AD保护的API。
通常,一旦为您的Azure服务(即Azure Web应用程序)启用了MSI,就会同时创建一个AD企业应用程序,该应用程序代表您在Azure AD中的Azure服务。
对于要访问的API,您应该创建一个应用程序角色,并将该角色分配给AD Enterprise App,它代表您启用了MSI的Azure服务。完成所有过程后,您将可以通过下面的代码获取访问令牌,以访问所需的API(此C#代码应在启用MSI的Azure服务上运行):
var azureServiceTokenProvider = new AzureServiceTokenProvider();
string apiToken = await azureServiceTokenProvider.GetAccessTokenAsync("<API resource URI or API App ID>");
有关更多详细信息,请参阅此blog。