gpt4 book ai didi

azure - 无法让 Postman 在 Azure Function 上成功针对 Entra/Azure AD 进行身份验证

转载 作者:行者123 更新时间:2023-12-03 06:07:06 25 4
gpt4 key购买 nike

我设置了我的 Azure 函数来针对我自己的租户进行身份验证,如下所示... picture of function auth

资源的应用程序注册有一个像这样公开的API scope api

这样做之后,如果我在浏览器中点击它,就像我自己一样,它会要求我进行身份验证,然后才能工作。伟大的!我现在尝试在 Postman 中执行此操作,但无论我做什么,都会收到 401。

postman 正在以其自己的服务主体身份登录 (1ec5483f-8eb9-4851-af81-ff89eb3e25ad)API权限是这样设置的 postman api permissions

然后我在 POSTMAN 客户端中设置了一个 OATH 2 token - 它得到了一个似乎有效的 token postman set up

我显然是故意把 secret 删掉的。范围设置为 api://31f5b60c-5de3-4135-85ec-08edfbce042e/General.Read。访问 token URL = https://login.microsoftonline.com/mytenant/oauth2/v2.0/authorize 。 token URL = https://login.microsoftonline.com/my租户/oauth2/v2.0/授权

解密后的 token 如下所示:

{
"aud": "api://31f5b60c-5de3-4135-85ec-08edfbce042e",
"iss": "https://sts.windows.net/mytenant/",
"iat": 1695814282,
"nbf": 1695814282,
"exp": 1695818220,
"acr": "1",
"aio": "ATQAy/8UAAAAS8sRzKTgrNlGhofLEKYO7xweUqSUmLrqQWFN8i0o/qsoeBqavqK7oQXJt19EOeBk",
"amr": [
"pwd"
],
"appid": "1ec5483f-8eb9-4851-af81-ff89eb3e25ad",
"appidacr": "1",
"family_name": "XXX",
"given_name": "XXX",
"ipaddr": "XXX",
"name": "XXX",
"oid": "1c11db5e-dc85-4c4b-882e-b8dd40206255",
"onprem_sid": "S-1-5-21-57989841-1450960922-725345543-4904",
"rh": "0.ARcAdKQVoiCS8E-TJSBRMiYmswy29THjXTVBhewI7fvOBC4XACo.",
"roles": [
"Trigger.Function"
],
"scp": "General.Read",
"sub": "q7tSjCuR5mf56ekcpYI4xEZ6Kdo_zfXkT2oBYEsyohQ",
"tid": "a215a474-9220-4ff0-9325-2051322626b3",
"unique_name": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="237b7b7b637b7b7b0d404c4e" rel="noreferrer noopener nofollow">[email protected]</a>",
"upn": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="9ac2c2c2dac2c2c2b4f9f5f7" rel="noreferrer noopener nofollow">[email protected]</a>",
"uti": "0W4WOPhO406S8ahy4GkmAA",
"ver": "1.0"
}

这又引起了我的注意。但是当我打电话时

postman get request

总是401。我哪里出错了?

这是函数 url 的图片...没有代码 No code

最佳答案

我创建了一个Azure AD Function 应用并启用了身份验证,如下所示:

enter image description here

在 Azure AD 应用程序中,公开了一个 API:

enter image description here

添加了 API 权限:

enter image description here

现在,我尝试使用以下参数生成访问 token 并验证函数应用程序:

GET https://testrukfunctapp1.azurewebsites.net/api/HttpTrigger1

Callback URL : RedirectURL
Auth URL : https://login.microsoftonline.com/TenantID/oauth2/v2.0/authorize
Access Token URL : https://login.microsoftonline.com/TenantID/oauth2/v2.0/token
ClientID : ClientID
Client Secret : ***
Scope : api://xxx/user_impersonation

我遇到了同样的错误(401 未经授权),如下所示:

enter image description here

要解决错误,请确保传递 x-functions-key header :

enter image description here

x-functions-key 值是函数 URL 中的代码值:

enter image description here

传递 header 后,我能够使用访问 token 成功验证 Function 应用,如下所示:

GET https://testrukfunctapp1.azurewebsites.net/api/HttpTrigger1

x-functions-key : FunctionURLCodeValue
Content-Type : application/json

enter image description here

关于azure - 无法让 Postman 在 Azure Function 上成功针对 Entra/Azure AD 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77187333/

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