获取新的访问令牌时,不应替换oauth2中的刷新令牌

斯图尔特

标题中的陈述正确吗?我基于Taiseer Joudeh所做的工作提出问题(感谢您在这个问题上的工作,顺便说一句),网址http://bitoftech.net/2014/07/16/enable-oauth-refresh-tokens-angularjs-app -using-asp-net-web-api-2-owin /

如果我正确理解了刷新令牌的行为,那么当访问令牌过期时,我们应该使用以下方法调用身份验证服务器的令牌端点:

'grant_type=refresh_token&refresh_token=' + token

我们将取回新的访问令牌。该请求将有一个刷新令牌作为有效负载的一部分,但是该刷新令牌不应该与我们刚刚使用的令牌相同吗?或者至少,它应该具有相同的到期时间?如果不是,则刷新寿命实际上是无限的。

这是我希望通过的frisby.js测试,但是使用针对Web Api 2的Taiseer实现,最终的期望失败了。我们得到一个新的刷新令牌,该令牌具有新的到期时间。

'use strict';

var frisby = require('frisby');
var config = require('../test-config.json');

var args = config[process.env.test || 'local'];
var host = args.host,
    clientId = args.clientId,
    usr = args.user1,
    pwd = args.password1;

frisby.create('Try and fail to get a protected resource')
    .get(host + '/api/test')
    .expectStatus(401)
    .expectHeaderContains('WWW-Authenticate', 'bearer')
    .toss();

frisby.create('Log in and get a protected resource')
    .post(host + '/token', {
        grant_type: 'password',
        username: usr,
        password: pwd,
        client_id: clientId
    })
    .expectJSONTypes({
        access_token: String,
        token_type: String,
        expires_in: Number,
        userName: String,
        refresh_token: String,
        'as:client_id': String,
        '.issued': String,
        '.expires': String
    })
    .expectJSON({
        token_type: 'bearer',
        userName: '[email protected]'
    })
    .afterJSON(function (json) {
        frisby.create('and now get protected resource with attached bearer token')
            .get(host + '/api/test', {
                headers: { 'Authorization': 'Bearer ' + json.access_token }
            })
            .expectStatus(200)
            .toss();
        frisby.create('and try to get a new access token with our refresh token')
            .post(host + '/token', {
                grant_type: 'refresh_token',
                refresh_token: json.refresh_token,
                client_id: clientId
            })
            .afterJSON(function (json2) {
                //we should receive a new access token
                expect(json.access_token).not.toEqual(json2.access_token);
                //but shouldn't the refresh token remain the same until *it* expires?
                expect(json.refresh_token).toEqual(json2.refresh_token);
            })
            .toss();
    })
    .toss();
泰瑟·乔德(Taiseer Joudeh)

您是100%正确的,当前刷新令牌的实现对于刷新令牌有滑动的到期时间,因为每次使用Grant_type = refresh_token时,我们都会发布新的访问令牌和刷新令牌标识符,这对于我的情况而言是完美的,因为我希望用户只要他正在使用该应用程序就可以永久登录,如果他不使用该应用程序的时间超过刷新令牌的到期日期,那么当他尝试使用刷新获取新的访问令牌时,他将收到401令牌。

要更改此行为,您只需要发布单个刷新令牌标识符,并在用户使用刷新令牌请求新的访问令牌时返回相同的标识符。您也可以通过使用此方法和此方法自定义业务逻辑来做到这一点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Cookie中的OAuth2刷新令牌

来自分类Dev

使用OAuth刷新令牌获取新的访问令牌-Google API

来自分类Dev

从Android中的令牌和令牌密钥获取Linkedin OAuth2访问令牌

来自分类Dev

从 API 获取访问令牌 (oauth2)

来自分类Dev

如何从password.js中的刷新令牌获取新的Google oauth访问令牌

来自分类Dev

如何从password.js中的刷新令牌获取新的Google oauth访问令牌

来自分类Dev

从password.js中的刷新令牌获取oauth访问令牌

来自分类Dev

OAuth2访问令牌

来自分类Dev

客户端机密+在Spring OAuth2中刷新访问令牌

来自分类Dev

在OAuth2中刷新令牌有什么好处

来自分类Dev

如何在OAuth2中使用“刷新令牌”

来自分类Dev

Google OAuth2 API刷新令牌

来自分类Dev

使用 jquery/axios 获取 OAuth2 访问令牌

来自分类Dev

Google Oauth2:刷新OAuth2令牌时出错,消息:'{“ error”:“ invalid_grant”}'

来自分类Dev

使用phpleague / oauth2-server使用刷新令牌创建新的新访问令牌

来自分类Dev

使用Spring Security的OAuth2提供程序在json中返回访问令牌;需要获取XML格式的令牌

来自分类Dev

Spring OAuth2 Security中如何在SuccessHandler登录后立即获取访问令牌?

来自分类Dev

如何使用OAuth2从奇妙清单中获取访问令牌

来自分类Dev

如何在 OAuth2 的 cookie 中存储访问令牌?

来自分类Dev

OAuth2访问令牌格式

来自分类Dev

Google Oauth 2获取访问令牌并从授权码刷新令牌

来自分类Dev

Google Oauth 2获取访问令牌并从授权码刷新令牌

来自分类Dev

PHP:Google plus Oauth 2.0-获取OAuth2访问令牌时出错,消息:“ invalid_client”

来自分类Dev

在Spring Security oauth2中生成令牌时获取用户详细信息

来自分类Dev

在Spring Security OAuth2中使用用户名-密码授予中的刷新令牌来请求新的访问令牌

来自分类Dev

具有单页面应用程序刷新访问令牌的Oauth2隐式流

来自分类Dev

Google OAuth2:以编程方式吊销特定的刷新令牌(但无法访问应用)

来自分类Dev

OAuth访问令牌和刷新令牌创建

来自分类Dev

OAuth 2.0访问令牌和刷新令牌

Related 相关文章

  1. 1

    Cookie中的OAuth2刷新令牌

  2. 2

    使用OAuth刷新令牌获取新的访问令牌-Google API

  3. 3

    从Android中的令牌和令牌密钥获取Linkedin OAuth2访问令牌

  4. 4

    从 API 获取访问令牌 (oauth2)

  5. 5

    如何从password.js中的刷新令牌获取新的Google oauth访问令牌

  6. 6

    如何从password.js中的刷新令牌获取新的Google oauth访问令牌

  7. 7

    从password.js中的刷新令牌获取oauth访问令牌

  8. 8

    OAuth2访问令牌

  9. 9

    客户端机密+在Spring OAuth2中刷新访问令牌

  10. 10

    在OAuth2中刷新令牌有什么好处

  11. 11

    如何在OAuth2中使用“刷新令牌”

  12. 12

    Google OAuth2 API刷新令牌

  13. 13

    使用 jquery/axios 获取 OAuth2 访问令牌

  14. 14

    Google Oauth2:刷新OAuth2令牌时出错,消息:'{“ error”:“ invalid_grant”}'

  15. 15

    使用phpleague / oauth2-server使用刷新令牌创建新的新访问令牌

  16. 16

    使用Spring Security的OAuth2提供程序在json中返回访问令牌;需要获取XML格式的令牌

  17. 17

    Spring OAuth2 Security中如何在SuccessHandler登录后立即获取访问令牌?

  18. 18

    如何使用OAuth2从奇妙清单中获取访问令牌

  19. 19

    如何在 OAuth2 的 cookie 中存储访问令牌?

  20. 20

    OAuth2访问令牌格式

  21. 21

    Google Oauth 2获取访问令牌并从授权码刷新令牌

  22. 22

    Google Oauth 2获取访问令牌并从授权码刷新令牌

  23. 23

    PHP:Google plus Oauth 2.0-获取OAuth2访问令牌时出错,消息:“ invalid_client”

  24. 24

    在Spring Security oauth2中生成令牌时获取用户详细信息

  25. 25

    在Spring Security OAuth2中使用用户名-密码授予中的刷新令牌来请求新的访问令牌

  26. 26

    具有单页面应用程序刷新访问令牌的Oauth2隐式流

  27. 27

    Google OAuth2:以编程方式吊销特定的刷新令牌(但无法访问应用)

  28. 28

    OAuth访问令牌和刷新令牌创建

  29. 29

    OAuth 2.0访问令牌和刷新令牌

热门标签

归档