Azure Active Directory B2C:如何刷新令牌

Azure Active Directory B2C: how to refresh a token

目前我尝试在 iOS 应用程序中实现用户授权。因此我们使用 Active Directory B2C。

一切正常,除了刷新我的过期令牌。我调用请求 url (fabrikamb2c.onmicrosoft.com/oauth2/v2.0/token?p=b2c_1_sign_in) 以获得 access_tokenrefresh_token。响应似乎是有效的,并且 access_token 只要未过期就可以很好地工作。

但是如果我想获得一个新令牌(就像这里描述的那样:OAuth 2.0 authorization code flow;参见第 4 章),请求只会得到 400 的响应:错误请求.

我不知道我做错了什么。你们现在知道如何调试这些请求或有某种清单需要在 Azure 门户中配置什么吗?

谢谢!

编辑:这是我正在使用的请求:

POST /xxx.onmicrosoft.com/oauth2/v2.0/token?p=b2c_1_local-account-signupin HTTP/1.1
HOST: login.microsoftonline.com
content-type: application/x-www-form-urlencoded
content-length: 1148

client_id=xxx&refresh_token=xxx&grant_type=refresh_token&redirect_uri=urn:ietf:wg:oauth:2.0:oob

我认为您需要为 scope 参数指定一个值。 scope 参数用于通知 B2C 您正在为哪个资源请求令牌。此时你很可能想要使用 scope=<client_id>scope=openid.

感谢大家帮我解决问题!事实证明,我使用的 refresh_token 无效。因此,如果您确定请求是正确的,并且您只收到 Bad Request 响应,请再检查一次参数。