提问者:小点点

Azure WebAPI,它是否需要id令牌或访问令牌作为承载?


这种情况一直持续到最近,我一定是在没有意识到的情况下弄坏了什么东西。

尝试通过邮递员调用 azure 函数时,我得到以下结果:

传入的持有者令牌绝对是正确的(或者至少我认为我没有改变它的任何内容)。我基本上遵循了这里的指南,在那里我构建了一个 url,如下所示:

https://login.windows.net/[tenant_id]/oauth2/authorize?response_type=code id_token

我完全搞不懂为什么这不起作用,因为昨晚它确实起了作用,Ive检查了几次以确保应用程序id/租户id正确。不知道天蓝广告突然发生了什么。。。

编辑:

所以我只是浏览了一下这里的说明:https://learn . Microsoft . com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-code

我能够抓住代码,并带着一个帖子请求上台,给我以下内容:

{ " access _ token ":" eyj 0 exaioijkv 1 qilcjhbgcioijsuzi 1 ninising 1 DC i6 ik 5 hvez2 zestznl 0 AEV 1 tdqchdbsk 9 now 4 tqsj 9 . eyjhdwqioijodhwczovl 3 nlcnzpy 2 uuy 29 udg 9 zb y5 JB 20 viiwiaxnzijoiahr 0 CHM 6 ly 9 zdhmud 2 luzg 93 cy xqvn 2 zlod0 ndctz ge 1 ny 00 mzg 1 lwjly 2 itnmrlnt

文档声称“access_token”可用于 webapi 调用(作为承载者),但它们对我不起作用,但是用作承载者的id_token可以!

这是怎么回事?我觉得我快疯了。


共1个答案

匿名用户

我设置为受保护,我希望Azure AD的登录用户能够调用Azure功能。

此方案适用于可以通过 AAD 保护访问函数应用资源。这与在函数中创建开放 API 定义不同。

对于你的方案,如果只想使用 AAD 保护函数,并直接通过 AAD OAuth 授权代码流访问它,则需要按照问题中发布的指南进行操作。

请求的响应类型是codeid_token。所以,这就是原因。您必须从endpoint请求codeid_token,并使用id_token进行身份验证,然后使用code交换access_token以访问资源进行授权。

此流用于Azure本身。文档中的其他协议供开发人员使用。这意味着这些协议适用于您在AAD中注册的应用程序。