加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 委托刷新令牌获取新JWT的基本策略

发布时间:2020-12-17 07:28:31 所属栏目:安全 来源:网络整理
导读:我一直在很好地实现Angular SPA和JWT,但我总是很难委派新的令牌. 我的基本策略是: 在auth拦截器中获取Auth Error =使用刷新令牌委派,替换JWT,否则注销 哪个不起作用,因为多个异步调用将触发,一个人将获得委托功能,但是然后刷新令牌将用于第二个并且那个将失
我一直在很好地实现Angular SPA和JWT,但我总是很难委派新的令牌.

我的基本策略是:

>在auth拦截器中获取Auth Error =>使用刷新令牌委派,替换JWT,否则注销

哪个不起作用,因为多个异步调用将触发,一个人将获得委托功能,但是然后刷新令牌将用于第二个并且那个将失败,然后用户将被注销.

>其他事项:检查令牌到期,如果已过期=>委托刷新令牌,替换jwt,否则注销

其中有一个类似的问题,第一次调用会注意到它已过期,然后获取新令牌,但由于它是Async,其余的调用将触发并失败等.

这里的基本策略是什么?我觉得应用程序应该做的第一件事是检查JWT并委托一个新的,如果它是一个坏令牌,但在这种情况下它不应该是异步的.我是否只是在使用时不删除刷新令牌?

任何帮助都会很棒,我觉得这是我理解中的最后一个主要漏洞.谢谢!

尝试使用 Witold Szczerba’s “http interceptor”.

简而言之,第一个失败的http调用触发器,事件和后续调用被推入数组.在事件发生后你有机会做一些逻辑,然后重播失败的电话.

这就是说你可能应该在需要实际使用刷新令牌之前进行令牌轮换.例如,考虑可以添加到this function的此代码

.config(function($httpProvider) {
    $httpProvider.interceptors.push(function(moment,$rootScope,$q,httpBuffer) {
        return {
            request: function (config) {
                if ($rootScope.authToken) {
                    config.headers["Authentication"] = 'Bearer ' + $rootScope.authToken;
                    var payload = angular.fromJson(atob($rootScope.authToken.split('.')[1]));
                    var utcNow = moment.utc().valueOf();
                    // 3600000 ms = 1 hr
                    if(utcNow > payload.iat + 3600000){
                        $rootScope.$broadcast('auth:rotateToken',$rootScope.authToken);
                    }
                }

                return config;
            },//responseError: ...see Witold's code...
    });
})

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读