我正在尝试访问授权服务器,该服务器在用户提供用户名和密码时发出短期访问令牌和长期刷新令牌。
问题1:
客户端应该在每次调用API时将刷新令牌与访问令牌一起传递,还是客户端应该仅在从API收到访问令牌已过期的错误代码后才传递刷新令牌?
在访问令牌到期之前,客户端不需要刷新令牌。每个调用都需要访问令牌,但只有授予新访问令牌的请求才需要刷新令牌。
要获取新的访问令牌,请发送一个请求,将grant_type
设置为refresh_Token
,如RFC第6节所述
理想情况下,您应该在当前访问令牌过期之前请求新的访问令牌,以免中断服务。
我见过的大多数实现都会为每个访问令牌发布一个新的刷新令牌。您可以使用任何有效的刷新令牌来获取新的访问令牌。
问题2:
刷新令牌过期后,将哪种类型的错误代码传递回客户端?这意味着客户端需要通过再次传递用户名和密码来请求新的访问令牌。
不幸的是,RFC没有明确定义错误响应;参见RFC第7.2节:
如果资源访问请求失败,资源服务器应该通知客户端错误。虽然这种错误响应的细节超出了本规范的范围,但是本文档在第11.4节中为OAuth令牌认证方案之间共享的错误值建立了一个公共注册表。
因此,确切的响应取决于服务器。它应该由有问题的服务器来定义。
如果服务器提供新的刷新令牌,您将希望在当前令牌到期之前获得新的刷新令牌。
您不想再次发送用户的凭据;您不应该拥有它们,更不用说保留它们了。OAuth 2旨在允许第三方访问用户的受保护资源,而无需查看用户的凭据。
您通常会在password_grant
或Refresh_Token
调用中使用新的访问令牌获得新的刷新令牌。RFC并不保证这一点
如果服务器没有提供新的刷新令牌,或者无法依靠服务器提供新的更新令牌,则必须要求用户重新登录。请注意,此登录是通过授权服务器完成的,它不一定是您的应用程序。事实上,这可能不是。
我正在尝试使用spotipy python库构建一个应用程序来访问spotify api。 我的oauth代码看起来是这样的,除了用正确的auth参数初始化客户端之外,它似乎是有效的。 ... 向用户发送网址。在用户说她/他已经授予权限后:从Web服务器获取身份验证代码并用于生成令牌。 self.auth_token如下所示: 然后我像这样初始化 spotipy 客户端模块: 然后我尝试以下方法:
我正在使用springdoc(v1.5.9)为API生成虚张声势定义。在Swagger UI内部进行身份验证并执行安全方法后,Spring Boot应用程序接收到的http请求没有身份验证头。我已经通过JS调试器确认Swagger UI接收并存储了有效的身份验证令牌。 下面是HTTP请求、显示定义/应用于该方法的安全方案的Swagger api-docs、springdoc配置和控制器。 我需要如
我正在使用PyJWT库(导入jwt)库生成用于身份验证的JSON web令牌。 最初的设计让我们通过URL传入令牌,比如http://example.net?token=EYKDFKDFKDNDFK... 但是,使用此解决方案,似乎任何查看URL中的令牌的人都可以使用此令牌访问站点。
下面是官方指南中的GCM Android集成示例。 特别是,我对上述链接类中的以下行感到困惑: 现在,每当我的主要活动启动时,我都会调用intent服务,我相信instanceID负责启动令牌刷新。 我是否应该在每次从我的主要活动启动此GCM注册意图时检查Shared Prefs值。但是,在这种情况下刷新将失败,因为在初始令牌获取之后,条件将始终为true。 我应该放弃共享prefs逻辑吗?这样每
google oauth2刷新令牌何时过期? 我所说的过期是指过期是因为经过了某个时间跨度(不是因为用户已撤销访问权限或用户已请求新的刷新令牌) 我做了一些研究,没有一个引用官方的谷歌文档(我也找不到一个有效的谷歌文档) 其他一些问题表示,由于时间,它从未过期: 谷歌刷新令牌过期了吗? https://community.fitbit.com/t5/web-api-development/inva
授权服务器可以给Web应用客户端和本机应用程序客户端颁发刷新令牌。 刷新令牌在传输和储存时必须保持机密性,并只与授权服务器和刷新令牌被颁发的客户端共享。授权服务器必须维护刷新令牌和它被颁发给的客户端之间的绑定。刷新令牌必须只能使用带有RFC2818定义的服务器身份验证的1.6所述的TLS 传输。 授权服务器必须验证刷新令牌和客户端身份之间的绑定,无论客户端身份是否能被验证。当无法进行客户端身份验证