我正在尝试从应用程序服务中获取Google的刷新令牌,但我不能。
日志说
2016-11-04T00:04:25 PID[500]收到的详细请求:获取https://noteappsvr.azurewebsites.net/.auth/login/google?access _ type = offline 2016-11-04t 00:04:25 PID[500]从https://accounts.google.com/.详细下载OpenID配置众所周知的/openid配置
2016-11-04T00:04:25 PID[500]详细下载OpenID颁发者密钥https://www.googleapis.com/oauth2/v3/certs
2016-11-04T00:04:25 PID[500]信息重定向:https://accounts.google.com/o/oauth2/v2/auth?response_type=code
2016-11-04T00:05:17 PID[500]详细接收请求:获取https://noteappsvr.azurewebsites.net/.auth/login/google/callback?state=nonce=5656e1dd...
2016-11-04T00:05:17 PID[500]详细调用外部HTTPendpointPOST https://www.googleapis.com/oauth2/v4/token.
2016-11-04t 00:05:18 ' xxxxx @ Gmail . com '的PID[500]信息登录完成。提供商:“谷歌”。
2016-11-04T00:05:18 PID[500]详细写入网站“noteappsvr.azurewebsites.net”的“AppServiceAuthSession”cookie。长度:728。
2016-11-04T00:05:18 PID[500]信息重定向:https://noteappsvr.azurewebsites.net/.auth/log in/done # token = { " authen...d6ffa9924e5"}}
2016-11-04T00:05:50 PID[500]收到的详细请求:获取https://noteappsvr.azurewebsites.net/.auth/refresh
2016-11-04T00:05:50 PID[500] 详细 JWT 验证成功。主题:“4fd4f6...”,发行人:“https://noteappsvr.azurewebsites.net/”。
2016-11-04T00:05:50 PID[500]警告sid:4fd4f6发出的刷新请求失败,因为在令牌存储中未找到刷新令牌。
2016-11-04T00:05:50 PID[500] 信息发送响应:403.80 禁止访问
令牌存储中似乎没有刷新令牌,但为什么呢?我已经在门户上打开了令牌存储设置。
如果 Google 检测到已向您的用户提供了刷新令牌,则除非您明确提示用户同意,否则它不会提供其他刷新令牌。可以通过将 prompt=同意查询字符串参数添加到登录 URL 来执行此操作。就您而言,https://noteappsvr.azurewebsites.net/.auth/login/google?access_type=offline
试试这个,看看它是否会恢复Google刷新令牌。
有关此行为的谷歌文档可以在这里找到(在HTTP / REST标签下):https://developers.google.com/identity/protocols/OAuth2WebServer#offline
重要提示:当应用程序收到刷新令牌时,存储该刷新令牌以供将来使用非常重要。如果应用程序丢失了刷新令牌,则必须在获得另一个刷新令牌之前重新提示用户同意。如果需要重新提示用户同意,请在授权代码请求中包含提示参数,并将值设置为同意。
在正常使用中,刷新令牌不应该丢失。如果您看到它确实丢失的情况,请告诉我。
我在自己的Web API上使用Oauth2,在Web应用程序上使用ASP.NET C#来使用该API。在我的web应用程序上,我正在进行HttpWebRequests。当我的访问令牌过期时,我调用一个方法“refreshToken”,该方法发出请求以获取新的访问令牌。这工作很好,没有问题...除了我得到的响应包含一个新的刷新令牌???我在等新的访问令牌。我甚至认为在没有再次传递凭据的情况下这是不可
授权服务器可以给Web应用客户端和本机应用程序客户端颁发刷新令牌。 刷新令牌在传输和储存时必须保持机密性,并只与授权服务器和刷新令牌被颁发的客户端共享。授权服务器必须维护刷新令牌和它被颁发给的客户端之间的绑定。刷新令牌必须只能使用带有RFC2818定义的服务器身份验证的1.6所述的TLS 传输。 授权服务器必须验证刷新令牌和客户端身份之间的绑定,无论客户端身份是否能被验证。当无法进行客户端身份验证
刷新令牌是用于获取访问令牌的凭据。刷新令牌由授权服务器颁发给客户端,用于在当前访问令牌失效或过期时,获取一个新的访问令牌,或者获得相等或更窄范围的额外的访问令牌(访问令牌可能具有比资源所有者所授权的更短的生命周期和更少的权限)。颁发刷新令牌是可选的,由授权服务器决定。如果授权服务器颁发刷新令牌,在颁发访问令牌时它被包含在内(即图1中的步骤D)。 刷新令牌是一个代表由资源所有者给客户端许可的授权的字
我对oauth2中的刷新令牌有点困惑。如它所说的访问令牌限制了黑客可以使用用户凭证的1小时的时间窗口,刷新令牌是万岁令牌,可以用来重新创建访问令牌。 我很困惑,如果有人从cookie中窃取了访问令牌,他也可以窃取刷新令牌,并可以使用刷新令牌创建新的访问令牌,因为我在JQuery中有ajax请求(客户端)
我不熟悉,它代表。我混淆了它的两个术语:访问令牌和刷新令牌。 用户注册/登录站点后,我创建和。 将刷新标记保存在数据库或cookie中。 15分钟后,用户标记访问令牌过期。 如果用户空闲2小时,我将从cookie或DB中删除刷新令牌,否则我将使用刷新令牌续订访问令牌。 有什么优化的方法可以达到这个目的吗?
我已经阅读了JWT和访问令牌和刷新令牌。我知道您必须在很短的时间(分钟)内设置访问令牌过期,并在过期时使用刷新令牌获取新的访问令牌。 我不清楚三件事: 谁检查访问令牌是否过期?客户端是否通过发送过期的访问令牌和刷新来检查并请求新的访问代码? 谁检查刷新令牌是否过期?(显然刷新令牌也需要过期,尽管需要更长的时间才能过期)。 在我看来,如果刷新令牌过期,则必须提示用户重新登录。在某些情况下(移动应用)