启用“用户分配的身份”时获取访问令牌

时间:2020-06-04 23:38:10

标签: azure-functions azure-managed-identity

我正在尝试使用托管身份通过azure门户访问Azure Function。如果使用系统分配的身份,下面的代码行会很好地工作。

  [FunctionName("FunctionDemo")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequestMessage req,
ILogger log)
{
    log.LogInformation("Starting to get accessToken through client id");
    string accessToken = await azureServiceTokenProvider.GetAccessTokenAsync("https://management.azure.com/")
    return req.CreateResponse(HttpStatusCode.OK);
}

但是,当我切换到用户分配的标识时,相同的代码将引发异常。 enter image description here

1 个答案:

答案 0 :(得分:5)

如果要使用用户分配的身份,则需要在函数中指定AzureServicesAuthConnectionString环境变量,如下所示,然后AzureServiceTokenProvider将使用用户分配的身份来获取令牌。

RunAs=App;AppId={ClientId of user-assigned identity} 

参考-https://docs.microsoft.com/en-us/azure/key-vault/general/service-to-service-authentication#connection-string-support

enter image description here