我很难通过 Azure AD B2C 的 OAuth 2.0 API 接收 access_token 和 refresh_token。
我正在关注 official guide描述 OAuth 2.0 授权代码流程。
通过 Microsoft 提供的交互式登录网站接收 authorization_token 效果很好(URL:https://login.microsoftonline.com/[MY_TENANT]/oauth2/v2.0/authorize ?client_id=[CLIENT_ID]&response_type=code&response_mode=query&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=[CLIENT_ID]%20offline_access&p=[MY_SIGNUP_SIGNIN_POLICY]
)。
但是,当尝试通过文档中所述的简单 POST 请求获取 access_token 时,我收到以下 POST 请求的 404 Not Found:
URL: https://login.microsoftonline.com/[MY_TENANT]/oauth2/v2.0/token?p=B2C_1_sign_in
Header: Content-Type application/x-www-form-urlencoded
Payload: grant_type=authorization_code&client_id=[CLIENT_ID]&scope=[CLIENT_ID]%20offline_access&code=[AUTHORIZATION_CODE]&redirect_uri=urn:ietf:wg:oauth:2.0:oob
当时的文档是否有误?
注意:由于框架原因,我无法使用任何现有的 .NET 或 Java 库提供此登录过程。一个 C++ 库就可以了。
我非常希望他们以符合标准的方式实现通常的完整 headless OAuth2 协议(protocol)......
最佳答案
问题是我对文档的误解。
策略(查询参数p
)在所有情况下都必须相同。因此,POST 请求的 URL 必须是:
https://login.microsoftonline.com/[MY_TENANT]/oauth2/v2.0/token?p=MY_SIGNUP_SIGNIN_POLICY
其中 MY_SIGNUP_SIGNIN_POLICY
与登录 URL 中的完全相同。
关于azure - 404 未找到 Azure AD B2C 的 oauth2/v2.0/token 终结点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39784247/