当前位置: 首页 > 知识库问答 >
问题:

Azure AD B2C刷新令牌已吊销403

马坚白
2023-03-14

大家早上好,

我在Azure中设置了应用服务,并通过Azure ADB2C添加了身份验证。到目前为止一切正常。不过,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禁止的错误。刷新令牌已吊销或过期---

我错过什么了吗?非常感谢。

编辑3:此处是来自Web服务器的给定请求的应用程序日志:

2017-01-18T15:08:33 PID[6344]详细接收请求:GEThttps://api.near.lu/.auth/refresh2017-01-18T15:08:33 PID[6344]详细JWT验证成功。主题:'sid: 453a1ad2710466bc983240e888d8b91',发行者:'https://api.near.lu/'。2017-01-18T15:08:33 PID[6344]警告sid: 453a1ad2710466bc9873240e888d8b91(SID: ac22f7309036f0c07a54b1299b9601ef)发出的刷新请求失败,因为在令牌存储中没有找到刷新令牌。2017-01-18T15:08:33 PID[6344]信息发送响应:403.80禁止2017-01-18T15:08:34 PID[6344]详细接收请求:GEThttps://api.near.lu/.auth/login/aad?response_type=codeid_token2017-01-18T15:08:34 PID[6344]详细从https://login.microsoftonline.com/nearauth.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=B2C_1_Default下载OpenID配置2017-01-18T15:08:36 PID[6344]详细从https://login.microsoftonline.com/nearauth.onmicrosoft.com/discovery/v2.0/keys?p=b2c_1_default下载OpenID颁发者密钥2017-01-18T15:08:37 PID[6344]信息重定向:https://login.microsoftonline.com/nearauth.onmicrosoft.com/oauth2/v2.0/authorize?response_type=codeid_token

编辑4:这是成功登录的日志:

2017-01-18T19:10:14 PID[6344]详细接收请求:GEThttps://api.near.lu/.auth/login/aad?response_type=codeid_token2017-01-18T19:10:14 PID[6344]信息重定向:https://login.microsoftonline.com/nearauth.onmicrosoft.com/oauth2/v2.0/authorize?response_type=codeid_token

这是登录后尝试立即刷新时得到的错误日志:

2017-01-23T10:55:06 PID【6344】详细接收请求:POSThttps://api.near.lu/.auth/refresh2017-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禁止

这很奇怪,从上图可以看出,令牌存储已启用。。。

共有2个答案

公羊嘉
2023-03-14

要使用刷新用户,我们必须将刷新令牌存储到应用服务令牌存储。

您可以使用以下请求检查是否有刷新令牌:

Get:https://{yourMoibleAppName}.azurewebsites.net/.auth/me
X-ZUMO-AUTH: {accessToken}

您可以从用户处获得的访问令牌。MobileServiceAuthenticationToken。

如果没有返回刷新令牌,您可以检查是否满足以下要求:

>

  • 令牌存储已启用

    请求的response\u类型包含代码

    开发人员不会吊销access\u令牌、refresh\u令牌、用户权限

    所有设置都很好,但是应用程序仍然出现403错误,我们应该提示用户再次登录(请参阅在应用程序服务移动应用程序中刷新用户登录)。

    为了避免误解,当您指定使用Azure AD B2C租户时,您介意分享您保护移动服务的详细步骤吗?

  • 法池暝
    2023-03-14

    问题可能是您当前的应用服务身份验证/授权设置未配置为支持令牌刷新。确认这一点的简单方法是启用应用程序日志记录,并在刷新操作失败时查看应用程序日志流中的警告消息。有关应用程序日志记录的更多详细信息,请参见: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.简短的版本是您需要:

    1. 在B2C应用程序注册中创建应用程序密钥,并在门户中AAD的身份验证/授权“高级”设置中将其设置为客户端密码
    2. 登录时请求offline\u访问范围。这可确保用户登录时从AAD B2C获得刷新令牌

    您的登录代码应如下所示:

    user = await Manager.CurrentClient.LoginAsync(
        currentContext,
        MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory,
        new Dictionary<string, string>() { { "scope", "openid offline_access" } });
    
     类似资料:
    • 我已经根据这本手册设置了整个谷歌广告应用编程接口:https://developers.google.com/google-ads/api/docs/client-libs/python/oauth-desktop?hl=en 我得到了我的刷新令牌,并将其放在我的google-ads.yaml文件中,该文件看起来就像这样:https://github.com/googleads/google-ad

    • 在我的AD B2C应用程序中,我需要撤销AD B2C为一个用户给出的所有刷新令牌。当用户帐户登录多个应用程序,并且在一个应用程序中用户更改了密码时,这是一个需要实现的要求。当密码被更改时,我已经撤销了他给其他应用程序的所有刷新令牌。怎么做? 更新: 我尝试过以下操作, 解决方案: 刷新令牌撤销图形api正在工作。但这需要大约5分钟。 但这里的问题是在等待期间,我能够获得新的刷新令牌和访问令牌,并且

    • 授权服务器可以给Web应用客户端和本机应用程序客户端颁发刷新令牌。 刷新令牌在传输和储存时必须保持机密性,并只与授权服务器和刷新令牌被颁发的客户端共享。授权服务器必须维护刷新令牌和它被颁发给的客户端之间的绑定。刷新令牌必须只能使用带有RFC2818定义的服务器身份验证的1.6所述的TLS 传输。 授权服务器必须验证刷新令牌和客户端身份之间的绑定,无论客户端身份是否能被验证。当无法进行客户端身份验证

    • 刷新令牌是用于获取访问令牌的凭据。刷新令牌由授权服务器颁发给客户端,用于在当前访问令牌失效或过期时,获取一个新的访问令牌,或者获得相等或更窄范围的额外的访问令牌(访问令牌可能具有比资源所有者所授权的更短的生命周期和更少的权限)。颁发刷新令牌是可选的,由授权服务器决定。如果授权服务器颁发刷新令牌,在颁发访问令牌时它被包含在内(即图1中的步骤D)。 刷新令牌是一个代表由资源所有者给客户端许可的授权的字

    • 我对oauth2中的刷新令牌有点困惑。如它所说的访问令牌限制了黑客可以使用用户凭证的1小时的时间窗口,刷新令牌是万岁令牌,可以用来重新创建访问令牌。 我很困惑,如果有人从cookie中窃取了访问令牌,他也可以窃取刷新令牌,并可以使用刷新令牌创建新的访问令牌,因为我在JQuery中有ajax请求(客户端)

    • 我在自己的Web API上使用Oauth2,在Web应用程序上使用ASP.NET C#来使用该API。在我的web应用程序上,我正在进行HttpWebRequests。当我的访问令牌过期时,我调用一个方法“refreshToken”,该方法发出请求以获取新的访问令牌。这工作很好,没有问题...除了我得到的响应包含一个新的刷新令牌???我在等新的访问令牌。我甚至认为在没有再次传递凭据的情况下这是不可