【发布时间】:2018-08-04 05:51:22
【问题描述】:
我正在开发一个 iOS 应用程序,利用带有 AADB2C 的 ROPC 流程作为支持此功能的后端端点。
https://login.microsoftonline.com/{TENANTNAME}.onmicrosoft.com/oauth2/v2.0/token?p={ROPC Policy Name}
在客户第一次使用电子邮件/密码成功登录时,我已经成功地请求和检索了 access token、refresh token 和 ID token。
在此成功登录后,每次后续登录,我们都希望利用生物识别技术(触摸/面部 ID)。我的第一个想法是将 refreshToken 存储在钥匙串中,在强制用户输入他/她的电子邮件/密码之前检查 refreshToken 的存在。
如果存在refreshToken,那么我想我会调用令牌端点,使用?p=refresh_token,而不是?p={INSERT ROPC Policy Name},如果我返回成功,那么我使用Touch/Face ID登录。
我的另一个想法是只使用令牌 ID 进行身份验证。
因此我的问题有两个:
更好的做法是什么 - 让 iOS 原生应用程序使用刷新令牌或 ID 令牌。
我尝试使用刷新令牌,将
{ROPC Policy Name}参数换成?p=refresh_token,但每次我尝试配置请求时,都会收到错误消息"The request body must contain the following parameter: 'grant_type'"我添加了“refresh_token”作为键grant_type的值,但仍然出现该错误。 -- 为什么会这样,如果刷新令牌 grant_type 更好,我该如何解决。
【问题讨论】:
标签: ios swift azure azure-ad-b2c