首页 > 解决方案 > Azure AD B2C:无法使用授权码获取令牌

问题描述

我目前正在按照指南设置 azure 功能的授权。我目前正在尝试与我的网络应用程序分开测试提琴手中的身份验证部分,以确保我可以获得有效的令牌。我能够成功检索授权码,但是在那之后,我需要发布一些数据以将授权码交换为令牌。尝试这样做时,我收到一条带有消息的 502:DNS Lookup for "mytenantname.onmicrosoft.com" failed. System.Net.Sockets.SocketException No such host is known 好像主机根本不存在。我在端点的帖子如下所示,B2C_1_FunctionsPlaygroundSignInRegister我的用户流的名称在哪里:

POST https://mytenantname.onmicrosoft.com/oauth2/v2.0/token?p=B2C_1_FunctionsPlaygroundSignInRegister HTTP/1.1

User-Agent: Fiddler

Content-Type: application/x-www-form-urlencoded

Host: mytenantname.onmicrosoft.com

Body:grant_type=authorization_code&client_id=MyApplicationIdForTheAzure-AD-B2C-ap-here&code=myCodeHere&redirect_uri=jwt.ms

作为参考,这是我发送的工作获取请求,我可以在浏览器中输入,提示登录/注册屏幕,并在登录后返回授权码:

https://mytenantname.b2clogin.com/tfp/mytenantname.onmicrosoft.com/B2C_1_FunctionsPlaygroundSignInRegister/oauth2/v2.0/authorize?client_id=yApplicationIdForTheAzure-AD-B2C-ap-here&nonce=2&redirect_uri=https://functionapi.azurewebsites.net/.auth/login/aad/callback&scope=https://mytenantname.onmicrosoft.com/api/read&response_type=code 

有人可以指出我在这里出错的地方吗?我现在已经在这个问题上花费了大量时间并且没有想法。

标签: azureazure-active-directory

解决方案


您的 POST url 和 Host 标头错误。

请参阅本节 -

Azure Active Directory B2C 中的 OAuth 2.0 授权代码流

POST fabrikamb2c.onmicrosoft.com/oauth2/v2.0/token?p=b2c_1_sign_in HTTP/1.1
Host: https://fabrikamb2c.b2clogin.com

请注意主机标头。这意味着您的 Fiddler 请求应如下所示:

POST https://mytenantname.b2clogin.com/mytenantname.onmicrosoft.com/oauth2/v2.0/token?p=...
Host: mytenantname.b2clogin.com

PS 这比 Fiddler 好得多,因为你正在尝试做 - https://oauthdebugger.com/


推荐阅读