问题标签 [refresh-token]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1879 浏览

php - OAUTH2 刷新令牌

我对 OAuth2 中的刷新令牌有点困惑。就像它说的访问令牌限制了黑客可以使用用户凭据的 1 小时时间窗口,并且刷新令牌是可用于重新创建访问令牌的长效令牌。

如果有人从 cookie 中窃取了访问令牌,我感到很困惑,他还可以窃取刷新令牌,并且可以使用刷新令牌来创建新的访问令牌,因为我在 JQuery(客户端)中有 ajax 请求

注意:我已经创建了 ajax 请求以在服务器端发送刷新令牌,我在此处附加了客户端 ID 和机密,并带有授权类型刷新令牌。

我已经在 cookie 中保存了访问令牌和刷新令牌,并使用 ajax 请求获取新的访问令牌

我应该如何使用刷新令牌来增强安全性?

0 投票
1 回答
614 浏览

javascript - Redux 和并发令牌刷新请求

我们正在开发一个 Redux 应用程序并使用 thunk 封装任何异步调用并组合多个操作。我遇到了一个有趣的问题;当 auth 令牌过期并且我点击了我的应用程序的一个部分,该部分对 api 有多个并发调用时,会出现刷新令牌的竞赛,这导致200我跟随我的 n 401s,因为竞赛的获胜者成功刷新令牌才离开亚军通过过时的令牌并被拒绝。在我们的实现中,这会导致注销,这有点违背刷新令牌的目的......

我是否应该编写一个中间件并将导致刷新请求失败的任何操作排队并重放它们?我不确定是否有一个干净的解决方案,但我认为肯定还有其他人有类似的问题。

0 投票
2 回答
2564 浏览

token - 使用 Microsoft Graph 时是否需要刷新访问令牌以及如何操作?

我正在为我的 iOS 应用程序使用 Microsoft Graph SDK。

访问令牌过期时是否需要手动刷新?

我说的访问令牌是:NXOAuth2AccountStore.sharedStore().accounts[0].accessToken

我已经测试过,即使 accessToken 过期了,我仍然可以查询。在我第一次登录时,过期时间是 3600 秒。所以,我等了 2 个小时,再次测试以获取用户信息、事件,仍然可以得到它。

我已转储“accessToken.hasExpired”和“accessToken.expiresAt”以确保访问令牌已过期

谢谢

* 更多细节 *

我在这里遵循示例: https ://github.com/microsoftgraph/ios-swift-connect-sample

我在 Microsoft Graph 上找不到任何有关刷新访问令牌的文档: https ://graph.microsoft.io/en-us/code-samples-and-sdks

0 投票
1 回答
1063 浏览

auth0 - 在 Auth0 中通过 refresh_token 更新 id_token 时,jti (JWT ID) 不在新的 id_token 中

登录 Auth0 时:

如果我jti在我的范围内指定,返回id_token的 JWT 将包含一个jti. Auth0jti建议使用 JWT。jtis 唯一标识 JWT,可用于将 JWT 列入黑名单之类的事情。

但是,由于某种原因,如果我尝试id_token使用刷新令牌获取新令牌:

即使我jti在我的范围内指定,id_token返回的也不包含jti.

这是一个错误吗?请帮忙。

0 投票
1 回答
1501 浏览

oauth-2.0 - 使用授权代码流获取具有有效刷新令牌的新令牌时出错

我正在使用 WSO2 API 管理器 1.10.0,将 WSO2 Identity Server 5.1.0 配置为密钥管理器,并将 MySQL Community Server 5.6 用于数据库。当我尝试刷新使用授权代码授予类型获得的令牌(refresh_token 授予类型)时,我收到 400 Bad Request 错误(invalid_grant - 提供的授权授予无效)并且我无法获得新的令牌。然后我尝试使用 client_credentials 和密码授权类型,对于那些我能够刷新令牌的类型。

我检查了身份服务器日志,发现身份服务器尝试检索最新令牌时出现错误(以下日志)。

我调试了源代码,我认为问题可能与以下 SQL 查询有关,特别是与 USER_DOMAIN=null 子句有关。

我还注意到,当使用授权码授权类型时,表 IDN_OAUTH2_ACCESS_TOKEN 中创建的访问令牌的用户域列设置为 NULL,但是当使用密码或 client_credentials 授权类型时,值是“PRIMARY”。

这可能是一个错误,还是我错过了在创建新访问令牌时以某种方式将用户域设置为 PRIMARY 的任何参数?

我写下我为重现该问题而执行的所有步骤:

第 1 步: 我通过重定向到https://identity-dev.domain.pt/oauth2/authorize?response_type=code&client_id=OQU0_FyRQcdvTFbygziFw67ASHwa&scope=openid profile&redirect_uri= http://localhost:8100来获取授权代码

第 2 步: 使用上一步中收到的代码,我通过执行以下命令获取访问令牌(和刷新令牌):

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d 'grant_type=authorization_code&client_id=OQU0_FyRQcdvTFbygziFw67ASHwa&client_secret=3kC6Uf9f8Lr8HVl2n03dhQc57Jsa&scope=openid profile&code = fd2f827afefba0ab0b0b17f9d701ad14 "身份-dev.domain.pt/oauth2/token "

第 3 步: 使用上一步中收到的刷新令牌,我执行以下请求以获取新令牌,但是我收到了 400 错误请求,如本文所述。

curl -X POST -H "Authorization: Basic T1FVMF9GeVJRY2R2VEZieWd6aUZ3NjdBU0h3YToza0M2VWY5ZjhMcjhIVmwybjAzZGhRYzU3SnNh" -H "Content-Type: application/x-www-form-urlencoded" -H "Accept: application/json" -d 'grant_type=refresh_token&scope=openid profile&refresh_token=7a7da99d70d48e10ac82e3681c63b0a1' “ https://identity-dev.domain.pt/oauth2/token

欢迎任何帮助!

0 投票
0 回答
98 浏览

objective-c - 连接:willSendRequestForAuthenticationChallenge:AFNetworking 3.0

我已迁移到 AFNetworking 3.0 并正在寻找一种使用 Auth Refresh Token 的方法

是否有任何替代品:

0 投票
1 回答
433 浏览

c# - 将 AuthenticationTokenCreateContext.SerializeTicket 的结果发送给客户端是否安全?

我正在努力寻找有关 Microsoft.Owin.Security.Infrastructure.AuthenticationTokenCreateContext.SerializeTicket 结果的敏感程度的信息

理想情况下,我想避免将其存储在服务器上,而只是将其发送到客户端(作为令牌),以便我可以在 AuthenticationTokenProvider.ReceiveAsync 中对其进行反序列化

我需要加密吗?即使加密后发送给客户端是否有问题?

我见过的所有实现都存储这个票服务器端,并且只向客户端发送一个标识符。不知道有没有理由不自己送票?

0 投票
0 回答
1640 浏览

c# - 使用访问令牌和刷新令牌进行 WebAPI 身份验证

我有一个针对自定义数据库用户表使用表单身份验证的 ASP.NET MVC 应用程序。

我需要为移动应用程序添加一系列 Web API 控制器以与 Web 应用程序交互。

对于身份验证,我需要生成并访问令牌和刷新令牌以返回到移动应用程序。我怎样才能做到这一点?

任何人都可以为我指出正确的教程资源方向吗?我已经找到了很多不清楚的。

0 投票
1 回答
798 浏览

c# - 如何为网络浏览器生成唯一 ID?

我想使用C#为 Web 浏览器实现唯一 id 。是否也必须考虑所有浏览器和隐身窗口?如何生成?

我的场景 我正在使用带有 web api 令牌的 angularjs。我也包含了刷新令牌。

用户从一个浏览器登录后,如果用户登录到另一个浏览器,我将为同一用户提供新的刷新令牌。因此,当用户访问另一个页面时,他会退出。

所以我想根据唯一的浏览器来识别用户。这个可以吗?

或者我可以在用户登录时生成 guid。

0 投票
1 回答
278 浏览

oauth - Podio Oauth - 刷新令牌寿命

我目前正在研究 Podio 集成,我偶然发现了一些文章,这些文章没有给出明确的答案,refresh_token 是否会自行过期,以及在这种情况下获取新刷新令牌的确切流程是什么。

文章:

Podio 刷新令牌过期- 它不会过期(来自用户名中有 Podio 的人的回答,最近的)

https://help.podio.com/hc/en-us/community/posts/206669587-Get-new-refresh-token - 它已过期,您将其作为响应的一部分而不是 rly?有一些没有结论的讨论

我问这个是因为我使用了很多服务和 OAuth 实现,但它是第一次刷新令牌实际上变得无效。那么如果 28 天过去了,那么用户必须重新进行身份验证?或者只是一个令牌无效但“授予”仍然存在?我不得不说这很令人困惑,因为我习惯于使用授权 == 刷新令牌,但我在 OAuth 规范中理解它。此外,我们只想将刷新令牌存储在数据库中。我很想测试它,但我不想等待 28 天。

文档没有明确说明刷新令牌的生命周期。

我希望 Podio 的某个人对此给出明确的答案。刷新令牌是否过期,仅在完全不活动(没有 api 调用)或只是固定数量时,以及在什么情况下(不活动或经过时间),获取刷新令牌的确切流程是什么,是否需要用户重新身份验证?