【问题标题】:Authenticate via Azure Functions managed Identity通过 Azure Functions 托管标识进行身份验证
【发布时间】:2021-08-12 11:45:02
【问题描述】:

我想从其他函数调用一个天蓝色函数。要完成这项工作,我有以下代码:

public static class Function1
{
    [FunctionName("Function1")]
    public static void Run(
        [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req,
        ILogger log)
    {
        Uri m;
        string t;

        var data = new
        {
            name = "master"

        };



        string result = string.Empty;

        var askForlicenseURL = "https://<myFunctionname>/api/HttpTrigger_StartOrchestrator";
    
        var content = new StringContent(data.ToString(), Encoding.UTF8, "application/json");

        using (HttpClient client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("x-functions-key", "Md5xxxxxxxxxxxxxxxxxxxxx0ij5A==");
            using (HttpResponseMessage response = client.PostAsync(askForlicenseURL, content).Result)
            using (HttpContent respContent = response.Content)
            {
                // ... Read the response as a string.
                var tr = respContent.ReadAsStringAsync().Result;
                // ... deserialize the response, we know it has a 'result' field
                dynamic azureResponse = JsonConvert.DeserializeObject(tr);
                // ... read the data we want
                result = azureResponse.statusQueryGetUri;
                var Header = response.Headers.Location;
            }
        }
    }

在 Azure 功能键的 sted 中,我想使用系统分配的managed Identity。 (调用者的管理身份在目标 azure 函数中被授权为贡献者 而且我知道我可以使用持久功能,但在这种情况下我不想使用它:)

【问题讨论】:

  • 独立于您的问题:请帮您自己(主要是您的应用程序性能)一个忙,并阅读 C# 中的 Async() 处理。你不应该做像.PostAsync().Result 这样的事情,而是让整个函数异步并使用await
  • 这里是一个指针如何启用 AAD 身份验证并使用 OAuth 令牌来验证 adatum.no/azure/azure-ad-authentication-in-azure-functions
  • 但它不使用托管标识
  • 这是正确的。但是“使用代码进行身份验证”部分基本上是您需要查看的地方。实际上,当您使用 MSI 时,它会容易得多,因为您可以直接使用令牌并且可以使用它来拨打电话。但第一个重要的部分是在其他功能上启用 AAD 身份验证

标签: c# http oauth azure-functions azure-managed-identity


【解决方案1】:

它不使用托管标识

感谢 silent 发表您的评论作为帮助其他社区成员的答案。

““使用代码进行身份验证”部分基本上是您需要查看的地方。实际上,当您使用 MSI 时,它更容易,因为您可以直接使用令牌并且可以使用它来进行调用。但是第一个重要的部分是在另一个函数上启用 AAD 身份验证。

更多信息请参考so线程How to call another function with in an Azure function

【讨论】:

    猜你喜欢
    • 2021-10-30
    • 1970-01-01
    • 2019-09-08
    • 2021-11-30
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    相关资源
    最近更新 更多