问题标签 [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.
php - Google 日历 API 无法离线工作。我在哪里可以在 codeigniter 控制器中获得刷新令牌
我正在使用 Google Calendar API 在 fullcalendar 上显示事件(因此在我的视图中使用 json 对象)。我正在使用 codeignitor php 框架,我的控制器中有一些函数来创建一个新客户端,然后我在 oauth2callback() 函数中使用它来将我的代码交换为 access_token 然后我开始在 gcalendar() 中调用服务并gcalendar_events。我已将 accessType 设置为离线,但这似乎并没有让我离线访问事件。效果很好,只是每次会话结束时我都会被重定向到再次登录。我不希望这样,我希望它们在会话结束后一直显示。我正在尝试使用刷新令牌以防 access_token 过期以查看是否可以解决问题。
这是我控制器中的代码
函数 oauth2callback() {
}
我的会话中的问题是否结束?或者访问令牌是否过期并且我需要刷新令牌?我在哪里设置刷新令牌,因为我尝试将它放在多个地方,但我收到一条错误消息,提示必须将刷新令牌设置为 setAccessToken 的一部分。我把它全部放完,仍然收到错误消息。
这是我使用的代码
我只是注意到它曾经在我的授权中说“授予离线访问权限”,但现在它不再提到虽然谷歌文档说
用户授予对请求范围的离线访问权限后,您可以在用户离线时继续使用 API 客户端代表用户访问 Google API。客户端对象将根据需要刷新访问令牌。
jwt - 刷新令牌、真正短暂的访问令牌和服务器负载
我一直在为我们正在构建的基于 PHP 的 API 实现 JWT 进行一些研究,目前最让我困惑的一件事是刷新令牌。根据我收集的信息,您在初始身份验证期间同时获得了访问令牌和刷新令牌,并且刷新令牌将允许您基本上跳过此初始身份验证步骤,以便在需要时为您获取新的访问令牌。如果我理解正确,生成的刷新令牌需要存储在与刚刚进行身份验证的客户端配对的数据库中。如果我的访问令牌仅存在极短的时间(例如 1 分钟),这是否意味着使用 API 的非常繁忙的客户端可能最终每分钟查询我的数据存储以执行刷新步骤(以检查是否刷新令牌存在/仍然有效/尚未被撤销/等)?不会
security - 为什么我不能在浏览器中存储 oauth 刷新令牌?
我想在浏览器中存储一个 oauth 刷新令牌。我想将它存储在那里的原因是应用程序可以刷新访问令牌并让用户不间断地继续他们的会话。我还想消除服务器上任何类型的缓存来存储令牌的需要,从而使其成为有状态的。
我被告知在浏览器中存储刷新令牌是错误的,因为它不安全。
我认为没关系,因为:
- 令牌将存储在 httpOnly 安全会话 cookie 中,因此它们不应该容易受到 XSS 或中间人攻击,并且当用户关闭会话时它们将被丢弃。
- 与服务器的所有通信均通过 HTTPS 完成
- 如果检测到可疑活动,刷新令牌可能会失效
- 最重要的是,除非您知道只有服务器知道的客户端密码,否则您不能使用刷新令牌。
我认为应该没问题有错吗?请解释原因!
authentication - 使用刷新令牌进行 JWT 身份验证的多个 SPA
我有一个奇怪的场景。我希望有一个带有多个 SPA 作为前端的后端 API(都在同一个域下但不同的子域下)。这是使用 JWT 和 Refresh 令牌的最初想法。
- 用户使用 USN/PWD 登录。
- 服务器对请求进行身份验证并在声明中发回具有过期和权限的 JWT。
- 服务器在域和所有子域的 cookie 中设置刷新令牌(存储在会话的数据存储中)。
- 现在所有请求都将 JWT 和 cookie 发送到服务器。
- 如果 JWT 已过期,则检查刷新 cookie 是否仍然有效并发送新的 JWT
现在,如果用户在同一域下的不同 SPA 中,我们可以发送一个请求,/token?grant_type=refresh_token
如果刷新令牌存储在 cookie 中,则该请求将发送一个 JWT 令牌。
我想知道这种方法的缺点。
我阅读的另一种方法(https://stackoverflow.com/a/29088725/4664675)看起来很有趣,因为 JTI 基本上是会话 ID。
我不太担心 15 分钟到期令牌和大约 1 周滑动会话的刷新令牌。从 SPA 到 API 的所有连接也都通过 HTTPS。
有人会推荐处理这种情况的最佳方法(用于许多应用程序的登录名,例如 Google 用于邮件、驱动器、照片、youtube 等)?我喜欢 JWT 的想法,这样我就不必在每次请求时都访问数据存储区。
再往前走一点,我想制作使用相同 API 的本机应用程序,因此可以处理两者的身份验证和授权过程将是理想的!好像我需要单点登录方法?
PS。这一切都来自研究,这将是我将要编写的第一个身份验证/授权工作流程。
authentication - Symfony 3 JWT 用户注册认证
我正在使用 JWT 进行身份验证的 symfony 中的 API。对于 JWT,我使用 LexikJWTAuthenticationBundle,对于令牌刷新,我使用 JWTRefreshTokenBundle。我想要做的是通过令牌对用户进行身份验证并给它刷新令牌。在安全方面,我有:
在我的注册操作中,我有:
在生成操作方法中,我可以从用户实体创建令牌,但我也无法创建刷新令牌。对于提供商,我使用 FOSUserBundle,它是 login_check 控制器。我尝试从 generateToken 方法向该控制器发送发布请求,但没有成功。任何帮助,将不胜感激。
firebase - 如何通过 HTTP REST API 访问我的 Firebase 数据库?
感谢这个答案,我能够通过 HTTP REST API 和电子邮件/密码连接到 Firebase 3。使用此 API 登录会返回用于访问 Firebase 数据库的访问令牌。此访问令牌将在 1 小时后过期。登录后还会返回一个刷新令牌,我可以用它来刷新我的访问令牌。这是我正在做的具体事情:
方法:
网址:
有效载荷:
回复:
在刷新我的访问令牌的情况下:
网址:
有效载荷:
回复:
鉴于我有访问令牌,如何通过 HTTP REST API 访问我的数据库?
c# - IdentityServer4 刷新令牌为空
我已经在这个问题上摸索了好几天了。我对 IdentityServer4 有问题,其中令牌响应不包含刷新令牌。关于获取访问令牌,我已经可以正常工作的代码 - 这只是我似乎无法弄清楚的刷新令牌。
在我的 project.json 文件中,我添加了以下条目:
我的 Startup.cs 文件包含以下内容:
您可能已经注意到我正在使用 Config.Clients、Config.Scope 和 Config.Users。这是那些(Config.cs)的代码:
我调用这个 IdentityController.cs 是为了获取令牌:
我已经阅读了很多文章,但是我在哪里找不到他们单独关注刷新令牌的地方。他们似乎都只关注返回访问令牌的基本代码。
有人可以告诉我我错过了什么,也许可以向我展示/指出正确的方向吗?任何帮助将不胜感激!
google-oauth - Google oauth:在 Power Query 中刷新令牌
我正在尝试使用 oauth 方法和 power bi 连接到 youtube/google 分析。我已经成功了一半,我需要一些帮助。这就是我所在的位置:
我使用以下方法手动获取授权令牌:
一旦我有了它,我把它放在我的查询中,我就可以获得 access_token 和 refresh_token:
现在,如果我正确理解文档,当 access_token 一个小时后过期时,我可以使用我得到的 refresh_token 自动创建一个新的 access_token,
在 Power Query 中可以这样做吗?有人试过吗?
我完全不知道如何做到这一点,而且我不是开发人员,所以我的技能有限:(
任何帮助表示赞赏!
api - 护照密码授予令牌刷新
我执行此问题中描述的步骤:
从 api 的路线来看,一切正常,我可以注册新用户,读取他们的数据等。
然后在 AuthServiceProvider 上添加这个命令
Passport::tokensExpireIn(Carbon::now()->addMinute(2)); Passport::refreshTokensExpireIn(Carbon::now()->addDays(1));
我在 url {{url}}/oauth/token中登录邮递员
正文:application/x-www-form-urlencoded
{
grant_type : 'password'
client_id : {{用户注册的电子邮件}}
client_secret : {{从移动应用程序生成客户端密码}}
用户名 : {{email with用户注册}}
密码:{{用户输入的密码}}
范围:''
}
响应成功
{
“token_type”:“Bearer”
“expires_in”:120
“access_token”:{{access_token}}
“refresh_token”:{{refresh_token}}
}
我尝试将令牌生命周期刷新到一天发送到{{url}}/oauth/token
参考 => https://laravel.com/docs/5.3/passport#refreshing-tokens
在邮递员中我发送
标题:
授权:承载 {{access_token}}
正文:application/x-www-form-urlencoded
{
client_secret : {{从移动应用程序生成客户端密码}}
grant_type : refresh_token
refresh_token : {{刷新令牌}}
client_id : {{用户注册的电子邮件}}
范围:''
}
预期的反应:
{
"access_token": {{new access_token}}
"token_type": 'Bearer'
"expires_in": 86400
"refresh_token": {{new access_token}}
}
但它没有按预期工作,它的响应
{
"access_token": {{new access_token}}
"token_type": 'Bearer'
"expires_in": 120
"refresh_token": {{new access_token}}
}
azure - 在 Azure 中部署身份服务器 3 刷新令牌问题
我在 Azure 中有一个 Thinktecture 的 Identity Server v3 实例,它作为 WebApp 托管。一般来说,它按预期工作,但我在尝试通过令牌身份/连接/令牌端点和refresh_token授权类型使用刷新令牌时遇到一些问题。我有一个使用授权代码流的客户端,这是与有关此客户端的刷新令牌选项相关的设置:
对于使用过此功能的人,很明显我使用 JWT 令牌,并且我的访问令牌有效期为 1 小时,之后,无需再次登录 Identity Server,我可以使用刷新令牌并获取新的访问和刷新令牌. 我的刷新令牌必须在 15 天(1296000 秒)内有效。实际发生的是它没有按预期工作。出于某种原因,当我决定在前一个半小时后调用我的 REST API(身份服务器的依赖方)时,我得到了invalid_grant响应。
我决定对其进行一些测试,并让我的访问令牌在 2 分钟内过期,我的刷新令牌在 10 分钟内过期。好吧,然后我尝试在访问令牌过期后 1、2、3 分钟拨打电话,它按预期工作。我真的不想用 1 小时访问令牌进行这种测试,所以这就是为什么我决定在这里询问是否有人以前经历过这种情况。