[英]Azure AD B2C Refresh Token Revoked 403
大家,早安,
我在Azure中设置了一个App Service,并通过Azure AD B2C添加了身份验证。 到目前为止,一切都很好。 但是,1小时后,当令牌过期时,我尝试刷新它,但后来我得到一个错误,即刷新令牌已被撤销。 这里出了什么问题? 我已经设置了后端,就像在这篇文章中解释的那样:当登录时我传递了附加参数,如下所示:
user = await Manager.CurrentClient.LoginAsync(currentContext,MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory,new Dictionary<string, string>() { { "response_type", "code id_token" } });
这是我的刷新代码:
user = await Manager.CurrentClient.RefreshUserAsync();
这是我得到的错误
{Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException:刷新失败,出现403 Forbidden错误。 刷新令牌已被撤销或过期。 ---> Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException:您无权查看此目录或页面。 在Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient + d__24.MoveNext()[0x001ec] in:0
我在这里错过了什么吗? 谢谢
编辑3:这里是来自网络服务器的应用程序日志,用于给定的请求:
2017-01-18T15:08:33 PID [6344]详细收到请求:GET https://api.near.lu/.auth/refresh 2017-01-18T15:08:33 PID [6344]详细JWT验证成功。 主题:'sid:453a1ad2710466bc9873240e888d8b91',发行人:' https ://api.near.lu/'。 2017-01-18T15:08:33 PID [6344]警告sid:453a1ad2710466bc9873240e888d8b91(SID:ac22f7309036f0c07a54b1299b9601ef)发出的刷新请求失败,因为在令牌存储区中未找到刷新令牌。 2017-01-18T15:08:33 PID [6344]信息发送回复:403.80 Forbidden 2017-01-18T15:08:34 PID [6344]详细收到请求:获取https://api.near.lu/.auth/ login / aad?response_type = code%20id_token 2017-01-18T15:08:34 PID [6344]详细下载来自https://login.microsoftonline.com/nearauth.onmicrosoft.com/v2.0/.well-的 OpenID配置已知/ openid-configuration?p = B2C_1_Default 2017-01-18T15:08:36 PID [6344]详细下载OpenID发行人密钥来自https://login.microsoftonline.com/nearauth.onmicrosoft.com/discovery/v2.0/密钥?p = b2c_1_default 2017-01-18T15:08:37 PID [6344]信息重定向: https : //login.microsoftonline.com/nearauth.onmicrosoft.com/oauth2/v2.0/authorize ?response_type = code+id_token&redirect_uri = HTTPS%3A%2F%2Fapi.near.lu%2F.auth%2Flogin%2Faad%2Fcallback&CLIENT_ID = c4c15bfb-eac4-4cdc-861f-eb01594e19d2&范围=的OpenID +轮廓+电子邮件&response_mode = form_post&状态=再导向%3D%26b2cPolicy%3D&p = b2c_1_default&随机数= 9e243549b62f49878cc370048c6effa9_20170118151334 2017- 01-18T15:08:39 PID [6344]详细收到请求:POST https://api.near.lu/.auth/login/aad/callback 2017-01-18T15:08:39 PID [6344]错误错误在登录过程中发生'unauthorized_client'类型:'AADB2C90057:提供的应用程序未配置为允许OAuth Implicit流。 相关ID:8336662f-8847-4f8b-bb37-6925a5d3e264时间戳:2017-01-18 15:08:38Z'2017-01-18T15:08:39 PID [6344]信息发送回复:401.73未经授权
编辑4:这是成功登录的日志:
2017-01-18T19:10:14 PID [6344]详细收到请求:GET https://api.near.lu/.auth/login/aad?response_type=code%20id_token 2017-01-18T19:10:14 PID [6344]信息重定向: https ://login.microsoftonline.com/nearauth.onmicrosoft.com/oauth2/v2.0/authorize?response_type = code+id_token&redirect_uri =https% 3A%2F%2Fapi.near.lu%2F 。 auth%2Flogin%2Faad%2Fcallback&client_id = c4c15bfb-eac4-4cdc-861f-eb01594e19d2&scope = openid + profile + email&response_mode = form_post&state = redir%3D%26b2cPolicy%3D&p = b2c_1_default&nonce = 817be561f67343688001637fa7808690_20170118191514 2017-01-18T19:10:30 PID [6344]详细收到请求:POST https://api.near.lu/.auth/login/aad/callback 2017-01-18T19:10:30 PID [6344]详细JWT验证成功。 主题:'1eaf9f41-1562-4ac9-9538-b893c9123087',发行人:' https ://login.microsoftonline.com/07407dc1-946a-4afc-9186-84e6023ba814/v2.0/'。 2017-01-18T19:10:30 PID [6344]详细调用外部HTTP端点POST https://login.microsoftonline.com/nearauth.onmicrosoft.com/oauth2/v2.0/token 。 2017-01-18T19:10:32 PID [6344]信息登录已完成'aget'。 提供者:'aad'。 2017-01-18T19:10:32 PID [6344]详细为网站'api.near.lu'编写'AppServiceAuthSession'cookie。 长度:792。2017-01-18T19:10:32 PID [6344]信息重定向: https : //api.near.lu/.auth/login/done#token=%7B%22authenticationToken%22%3A%22ey- -REMOVED部分令牌 - %22%2C%22user%22%3A%7B%22userId%22%3A%22sid%3Aed01ed7507f147976aa1704783267861%22%7D%7D 2017-01-18T19:10:33 PID [6344]详细收到请求:GET https://api.near.lu/.auth/login/done 2017-01-18T19:10:33 PID [6344]信息发送回复:200.0确定
这是我在登录后尝试刷新immediatley时得到的错误日志:
2017-01-23T10:55:06 PID [6344]详细收到请求:POST https://api.near.lu/.auth/refresh 2017-01-23T10:55:06 PID [6344]详细JWT验证成功。 主题:'sid:ed01ed7507f147976aa1704783267861',发行人:' https ://api.near.lu/'。 2017-01-23T10:55:06 PID [6344]警告由sid:ed01ed7507f147976aa1704783267861(SID:9a6c2ee324a092937c5e2f953803e662)发出的刷新请求失败,因为在令牌存储区中未找到刷新令牌。 2017-01-23T10:55:06 PID [6344]信息发送回复:403.80禁止
这很奇怪,因为在上图中可以看到令牌存储已启用...
问题可能是您当前的App Service身份验证/授权设置未配置为支持令牌刷新。 确认这一点的一种简单方法是启用应用程序日志记录,并在刷新操作失败时查看应用程序日志流中的警告消息。 有关应用程序日志记录的更多详细信息,请访问: https : //docs.microsoft.com/en-us/azure/app-service-web/web-sites-enable-diagnostic-log
请参阅以下博文(我写的)以了解有关如何更新身份验证/授权设置以支持令牌刷新的更多信息: https : //cgillum.tech/2016/08/10/app-service-auth-and-azure -ad-b2c-part-2 /#refresh 。 简短版本是您需要:
您的登录代码应如下所示:
user = await Manager.CurrentClient.LoginAsync(
currentContext,
MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory,
new Dictionary<string, string>() { { "scope", "openid offline_access" } });
要使用刷新用户,我们必须将刷新令牌存储到应用服务令牌存储中。
您可以使用以下请求检查是否有刷新令牌:
Get:https://{yourMoibleAppName}.azurewebsites.net/.auth/me
X-ZUMO-AUTH: {accessToken}
您可以从user.MobileServiceAuthenticationToken
获取访问令牌。
如果没有返回刷新令牌,您可以检查是否满足以下要求:
令牌存储已启用
请求的response_type包含代码
开发人员不会撤消access_token,refresh_token,用户权限
并且所有设置都很好,但是应用程序仍然会收到403错误,我们应该提示用户再次登录(请参阅在App Service Mobile Apps中刷新用户登录 )。
为了避免误解,当您指定使用Azure AD B2C租户时,您是否介意共享保护移动服务的详细步骤?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.