gpt4 book ai didi

c# - 使用 Azure Active Directory 进行 Azure Function 身份验证

转载 作者:行者123 更新时间:2023-11-30 15:14:56 30 4
gpt4 key购买 nike

我想在 Azure Functions 上启用身份验证。因此,我决定使用 EasyAuth(平台功能下的身份验证/授权链接)并成功配置身份验证过程。

当我手动登录 Azure Function 终结点时,身份验证有效。但是,当我尝试以编程方式访问 API,而无需任何手动用户干预时,我遇到了身份验证问题:

Status Code:401, Unauthorized

我使用 clientID 和 clientSecret 使用以下代码从 AAD 获取访问 token :

AuthenticationContext context = new AuthenticationContext("https://login.windows.net/<tenant-id>");
string key = "<client-secret>";
ClientCredential cc = new ClientCredential("<client-id>", key);
AuthenticationResult result = context.AcquireTokenAsync("https://<AzureFunctionAppName>.azurewebsites.net/", cc).Result;
return result.AccessToken;

然后,我尝试将新请求 header 中收到的访问 token 发送到我的 API:

var content = "{\"on\":true, \"sat\":254, \"bri\":254, \"hue\":10000}";
var AADToken = GetS2SAccessToken();
HttpClient Client = new HttpClient();
Client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", AADToken);
var foo = Client.PostAsync("https://<AzureFunctionAppName>.azurewebsites.net/.auth/login/aad", new StringContent(content.ToString())).Result;
Console.WriteLine($"result: {foo}");

但是上面的代码会导致未经授权的调用。我不确定我做错了什么。

最佳答案

如果您的azure函数身份验证级别是匿名或还需要功能 key ,我们可以使用accesstoken直接访问您的azure函数api。

我用你提到的方式获取了访问 token 。根据 Azure 资源门户 ( https://resources.azure.com/ ),默认 allowedAudiences 为

  "https://{functionAppName}.azurewebsites.net/.auth/login/aad/callback"

因此,我添加了 https://{functionAppName}.azurewebsites.net/ 作为允许的aduiences

enter image description here

然后我就可以直接使用访问 token 了。我用 postman 测试了它。

enter image description here

我们还可以使用以下方式获取简易身份验证 token 。访问 token 就是您获得的 token 。

Post https://xxx.azurewebsites.net/.auth/login/aad
Content-Type:application/json
{
"access_token":"eyJ0eXAiOix...rtf2H7lyUL-g34HVw"
}

enter image description here

之后我们可以使用get token来访问azure函数api

enter image description here

注意: header 为x-zumo-auth: token

关于c# - 使用 Azure Active Directory 进行 Azure Function 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53499971/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com