首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Django simple-jwt令牌认证中后端获取当前刷新令牌

在Django simple-jwt令牌认证中,后端获取当前刷新令牌的步骤如下:

  1. 首先,确保已经安装了Django和Django Rest Framework,并且已经在项目中配置了simple-jwt。
  2. 在Django的settings.py文件中,添加以下配置项:
代码语言:txt
复制
SIMPLE_JWT = {
    'REFRESH_TOKEN_LIFETIME': timedelta(days=30),
    'ROTATE_REFRESH_TOKENS': True,
    'BLACKLIST_AFTER_ROTATION': False,
}

这些配置项将设置刷新令牌的生命周期、是否轮换刷新令牌以及轮换后是否将旧令牌加入黑名单。

  1. 在Django的urls.py文件中,配置JWT认证的URL路径:
代码语言:txt
复制
from rest_framework_simplejwt.views import (
    TokenObtainPairView,
    TokenRefreshView,
)

urlpatterns = [
    # ...
    path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
    path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
    # ...
]

这将创建用于获取访问令牌和刷新令牌的URL路径。

  1. 在后端代码中,可以通过以下方式获取当前刷新令牌:
代码语言:txt
复制
from rest_framework_simplejwt.tokens import RefreshToken

def get_refresh_token(request):
    refresh_token = request.data.get('refresh')
    if refresh_token:
        try:
            token = RefreshToken(refresh_token)
            # 可以通过以下方式获取刷新令牌的相关信息
            token.payload
            token.access_token
            token.blacklisted
            # ...
        except Exception as e:
            # 处理异常情况
            pass
    else:
        # 处理未提供刷新令牌的情况
        pass

在上述代码中,我们首先从请求数据中获取刷新令牌,然后使用RefreshToken类对刷新令牌进行解析和验证。通过访问token.payload等属性,可以获取刷新令牌的相关信息。

需要注意的是,以上代码仅为示例,实际使用时需要根据具体的业务逻辑进行调整。

推荐的腾讯云相关产品:腾讯云服务器(CVM)、腾讯云数据库(TencentDB)、腾讯云容器服务(TKE)、腾讯云人工智能(AI)等。你可以通过访问腾讯云官网(https://cloud.tencent.com/)了解更多关于这些产品的详细信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JWT 实现

可以采用类似oauth2.0协议的做法,认证后颁布2个token,access token和refresh token。...access token访问令牌为一个JWT,设置一个较短的过期时间,比如1小时。访问令牌每次调用后端服务都需要携带,往返网络的频率非常高,暴露的可能性就越大,设置较短的过期时间也可以降低安全风险。...客户端要长时间维护登录态,就需要当访问令牌失效后,自动使用刷新令牌获取新的访问令牌。或者访问令牌失效之前,提前刷新令牌。 现在我们想要踢人,只需要将用户相关的刷新令牌从redis里删除。...当前的访问令牌失效后,自然也没有办法再刷新令牌了。从而达到强制用户登出的目的。 这么设计有个缺陷就是强制用户登出不是及时的。需要有一个等待访问令牌过期的时间。...每次调用服务api时仍然是原汁原味的jwt无状态认证,无需访问任何中心存储。仅在刷新访问令牌的时候需要访问中心存储。也算是一种折中的方案。

80310

.NET 云原生架构师训练营(Identity Server)--学习笔记

token 权限范围 scope 刷新令牌 refresh token 授权许可 grant_type grant_type 授权方式 授权前置条件 使用通信信道 说明 authorization_code.../PKCE 授权码模式 授权码 前端/后端 客户端通过code在后端与授权服务器进行交互获取令牌 implict(不建议使用) 简化模式 password(不建议使用) 密码模式 用户名/密码 后端...客户端输入用户名和密码,由客户端向授权服务器获取令牌 client_credentials 客户端模式 无 后端 device_code 设备码 refresh_token 刷新token...第二次 302 重定向:在用户提交授权,认证服务器认证成功后,会分配授权码 code,并重定向回第三方应用的 redirect_uri (建议第三方应用要根据当前用户会话生成随机且唯一的 state...access_token 是有有效期的,过期后需要刷新 拿到令牌 access_token 后,第三方应用就可以访问资源方,获取所需资源 access_token 相当于用户的 session id 选择正确的许可类型

73820

OAuth 2.0 的探险之旅

授权服务器对客户端进行身份验证可以保证把令牌颁发给了合法的客户端, 但是认证其实已经超出了 OAuth2.0 的协议范围, [RFC 6749] 也只是简单介绍了以下2种认证方式: 第一种是使用...)的, 刷新令牌的时效性比访问令牌要长, 当访问令牌过期的时候, 可以直接用刷新令牌去授权服务器获取新的访问令牌, 而无需重新登录。...(G) 客户端发起获取刷新令牌的请求, 同时要带上当前刷新令牌。 (H) 授权服务器对客户端进行认证并验证刷新令牌,如果有效,则发出新的访问令牌和一个可选的新的刷新令牌。...(通过code换取access_token的时候,需要使用 Http Basic认证,或者传入client_secret) , 而隐式授权整个流程并没有客户端认证,所以是不安全也不推荐使用的。..., 资源本身就属于客户端, 通过在请求体传入 client_id,client_secret参数或者Http Basic 进行客户端认证, 这种模式很适合后端服务或者api之间调用的场景。

1.6K10

深入理解OAuth 2.0:原理、流程与实践

刷新令牌(Refresh Token): 刷新令牌是授权服务器发放访问令牌时一同发放的一个凭证,用于访问令牌过期后获取新的访问令牌刷新令牌通常有较长的有效期,甚至可以设置为永不过期。...(A) 用户客户端应用输入他们的用户名和密码。 (B) 客户端应用使用用户提供的用户名和密码,以及自己的客户端ID和客户端密钥,向认证服务器的令牌端点发送请求,请求获取访问令牌。...(A)客户端应用程序使用自己的客户端ID和客户端密钥,向认证服务器的令牌端点发送请求,请求获取访问令牌。 (B) 认证服务器验证客户端ID和客户端密钥。...存储访问令牌时,也应该使用适当的加密措施进行保护。 刷新令牌的使用和保护 刷新令牌通常有较长的有效期,甚至可以设置为永不过期。因此,如果刷新令牌被攻击者获取,他们就可以持续访问用户的资源。...为了防止这种情况,刷新令牌应该只在后端服务中使用,不应该暴露给前端应用。此外,刷新令牌也应该在所有传输和存储过程中进行加密保护。

1.7K31

【需要重视的BUG】:偷权限的情况

故事源于文章开头的图片,今天QQ群,偶然看到了大家讨论问题,最后发现是一个小伙伴(@---)发现了系统的漏洞,这里感谢他哟,通过一系列操作会篡改自己的权限,具体的过程是这样的: 1、Swagger...,用自己的测试账号登录,获取Token令牌; 2、jwt.io等工具内,修改jti为超级管理员的id; 3、用更换后的令牌,去刷新令牌接口发起请求; 4、得到最终的新令牌,此刻,你已经拥有管理员权限...; 相关的动图,可以参考: (公众号最多300帧,详细的可以自己操作) 到这里你应该能看懂了,核心的BUG就出在刷新令牌的时候,我直接硬解了TOKEN,然后获取到了数据,根据UID直接生成了新的令牌,...这个问题已经被解决了,具体的代码可以看我的提交记录,这里感谢@wuare老铁提供技术帮忙: (已经提交到Github了,欢迎查看) 思路其实很简单,就是获取用户信息的时候,增加一次令牌校验,看看当前令牌是否被篡改了...这样就没有问题了,刷新令牌的时候,做个判断,来看看是否被篡改了: if (tokenModel !

24030

Spring Boot Security+JWT前后端分离架构登录认证

accessToken一旦过期需要客户端携带refreshToken调用刷新令牌的接口重新获取一个新的accessToken。...角色集合....其中有一个方法如下: UserDetails loadUserByUsername(String username) throws UsernameNotFoundException; 认证逻辑...校验过滤器的代码如下: 刷新令牌接口 accessToken一旦过期,客户端必须携带着refreshToken重新获取令牌,传统web服务是放在cookie,只需要服务端完成刷新,完全做到无感知令牌续期...,但是前后端分离架构必须由客户端拿着refreshToken调接口手动刷新。...4、刷新令牌接口测试,携带一个过期的令牌访问如下: 5、刷新令牌接口测试,携带未过期的令牌测试,如下: 可以看到,成功返回了两个新的令牌

43010

Spring Boot Security+JWT前后端分离架构认证登录,居然还有人不会?

token,如下: accessToken:客户端携带这个token访问服务端的资源 refreshToken:刷新令牌,一旦accessToken过期了,客户端需要使用refreshToken重新获取一个...accessToken一旦过期需要客户端携带refreshToken调用刷新令牌的接口重新获取一个新的accessToken。...校验过滤器的代码如下: 图片 刷新令牌接口 accessToken一旦过期,客户端必须携带着refreshToken重新获取令牌,传统web服务是放在cookie,只需要服务端完成刷新,完全做到无感知令牌续期...,但是前后端分离架构必须由客户端拿着refreshToken调接口手动刷新。...4、刷新令牌接口测试,携带一个过期的令牌访问如下: 图片 5、刷新令牌接口测试,携带未过期的令牌测试,如下: 图片 可以看到,成功返回了两个新的令牌

1.7K31

8种至关重要OAuth API授权流与能力

三、获取令牌 相关规范定义的许多授权流,有四种基本流程用于获取OAuth令牌。在这里,我将就这几个基本流程和其他我认为比较重要的流程进行一些描述。...由于这是针对公共客户端的,因此将不会发出刷新令牌。这意味着只有让用户参与才能接收新的访问令牌。 白小白: 实际上隐式流在很多文档也称为简化流,相对于认证码授权流,少了第一个获取CODE的过程。...使用OAuth,用户可以通过撤销令牌的方式随时决定收回确认。OAuth,有两种撤销选项。可以撤销访问令牌,这将被视作是当前会话的结束。如果存在刷新令牌,则该令牌仍然有效。...而一次代理过程可能获得多次令牌,包括访问令牌刷新令牌。 ? 事实上可能存在3种撤销场景: 1、如果某一个当前有效的访问令牌被撤销了,比如访问访问令牌1被撤销,则刷新令牌1仍旧有效。...2、如果某一个当前有效的刷新令牌被撤销了,则所有访问和刷新令牌都会撤销,也就是这一次代理都被撤销 3、如果通过某一个刷新令牌X获得了新的访问令牌和新的刷新令牌

1.6K10

使用微服务架构思想,设计部署OAuth2.0授权认证框架

在这个场景,用户登录系统实际上分为了3个步骤: 用户登录界面,输入用户名和密码,提交登录请求; 【认证】系统校验用户输入的用户名和密码是否人员信息表; 【授权】给当前用户授予相应的角色权限。...本例获取令牌有效期只有1分钟,超过时间就需要刷新令牌: /// /// 使用指定的令牌,直接刷新访问令牌 /// </summary...然后看TakeToken 方法,它首先尝试获取一个当前用户的令牌,如果令牌快过期,就尝试刷新令牌: /// /// 取一个访问令牌 /...方案,用户的访问令牌缓存在Port站点的进程,每当用户登录成功后,就生成一个用户访问令牌当前用户票据关联。...我们的这个架构认证服务器属于后端服务,是不能跟网关服务器放在一起对外访问的,所以也需要进行代理访问。

10.8K32

使用 React 和 Django REST Framework 构建你的网站

我们最近的工作,构建网站使用的架构是带有 Django REST Framework(DRF)后端的 React 前端。它们是通过在前端使用 axios(前端库)调用后端 API 来交互的。...有些同学对前后端分离的认证方式有些懵逼,我们下面就看一下前后端分离的架构如何配置认证后端: # file: api/urls.py from django.conf.urls import url from...现在,你已经拥有了一个后端 DRF API:叫 /auth 的 endpoint,访问它可以获得一个身份验证令牌。让我们先配置一个用户,并运行后端服务器以供测试。...一旦完成,我们就可以使用我们存储的 token 令牌来创建一个基于 axios 的 API 客户端(译者注:这样就不需要每次都显式的将令牌信息从 store 拿出来再插入 payload 中了),这样从我们的...你现在可以尝试使用 Auth.js 登录功能来获取我们之前创建的用户身份验令牌

7K70

Spring Security----JWT详解

首先,客户端需要向服务端申请JWT令牌,这个过程通常是登录功能。即:由用户名和密码换取JWT令牌。 当你访问系统其他的接口时,HTTP的header携带JWT令牌。...另外,我们需要写一个工具类JwtTokenUtil,该工具类的主要功能就是根据用户信息生成JWT,解签JWT获取用户信息,校验令牌是否过期,刷新令牌等。...Header的名称前后端服务自己定义,但是要统一。 服务端需要自定义JwtRequestFilter,拦截HTTP请求,并判断请求Header是否有JWT令牌。如果没有,就执行后续的过滤器。...---- JWT集群应用方案 回顾JWT授权与验证流程 我们之前实现的JWT应用,登录认证的Controller和令牌验证的Filter是同一个应用的。...如果认证过程是“应用A”获取的JWT令牌,可以访问“应用B”的接口资源么?(如下图) 答案是:可以。

2.4K21

微服务下的身份认证令牌管理

我们需要将这些系统有机的进行整合,通过项目中的不断实践,配置恰当的身份认证令牌管理,我们总结了一些微服务间的身份认证令牌管理的架构演进与最佳实践。...具体流程如下: 服务消费者从OAuth服务器获取令牌 服务消费者携带令牌调用Service API 请求流入Service Service从OAuth服务器获取公钥,验证令牌是否有效。...整体的流程: Ingress sidecar启动时从OAuth服务器获取公钥或者证书,服务消费者请求OAuth服务器获得访问后端Service的令牌 服务消费者携带令牌调用Service 服务消费者的请求会通过...左半部分是系统自身鉴权系统出站请求流程,首先Service从OAuth服务器获取令牌,然后携带令牌调用其他后端微服务。...因为令牌存储sidecar缓存,不需要每次都调用OAuth 服务器。当令牌过期时,自动刷新令牌。 Authentication sidecar的全景图 ?

1.9K30

浏览器存储访问令牌的最佳实践

更常见的是,web应用程序逻辑浏览器运行。 与从服务器获取所有内容不同,应用程序浏览器运行JavaScript,从后端API获取数据,并相应地更新web应用程序呈现。...当前的最佳实践建议通过“授权码流”这一方式来获取访问令牌: 授权码流是一个两步流程,首先从用户那里收集一个授权许可——授权码,然后应用程序在后台通道中用授权码交换访问令牌。...一些存储机制是持久的,另一些一段时间后或页面关闭或刷新后会被清除。 一些解决方案跨选项卡共享数据,而其他解决方案仅限于当前选项卡。但是,本指南中介绍的大多数方法都针对每个源存储数据。...最后,使用刷新令牌时,请确保将它们存储自己的cookie。没有必要在每个API请求中都发送它们,所以请确保不是这种情况。刷新令牌必须只刷新过期的访问令牌时添加。...该模式引入了一个后端组件,能够发出带有加密令牌和上述必要属性的cookie。 后端组件的责任是: 作为OAuth客户端与授权服务器交互,启动用户认证获取令牌

15010

小程序前后端交互使用JWT

基于token(令牌)的用户认证 用户输入其登录信息 服务器验证信息是否正确,并返回已签名的token token储客户端,例如存在local storage或cookie 之后的HTTP请求都将token...后端服务器不需要保存令牌当前session的记录。   关于JWT的详细介绍网上有很多,这里也就不说了,下面介绍Koa2框架里的添加方法。...用户的认证状态引入这种附加影响,这破坏了这一原则。另外JWT的载荷可以存储一些常用信息,用于交换信息,有效地使用JWT,可以降低服务器查询数据库的次数。...例如你payload存储了一些信息,当信息需要更新时,则重新签发一个JWT,但是由于旧的JWT还没过期,拿着这个旧的JWT依旧可以登录,那登录后服务端从JWT拿到的信息就是过时的。...另一种方法是redis单独为每个JWT设置过期时间,每次访问时刷新JWT的过期时间。

1.6K41

如何正确集成社交登录

当开发人员初次接触 OAuth 时,他们通常期望使用从社交 Provider 收到的令牌之一。 收到的令牌通常是 ID 令牌、访问令牌和可选的刷新令牌。... OpenID Connect ,ID 令牌代表认证事件的证明,并通知客户端应用程序认证是如何以及何时发生的。它应该由客户端存储,不应发送到任何远程端点。它不是用于 API 的授权。...架构的 API 方面,应使用多种令牌类型。JWT 访问令牌仅设计用于在后端环境内使用。互联网客户端应该使用机密的、不透明的访问令牌作为隐私最佳实践。...另一个困难是,每个社交 Provider 将在其令牌的主题声明为用户的身份发行不同的值。如果用户通过多种方式进行认证,存在风险会导致业务数据中出现重复的身份。...认证后,可以使用账户链接来确保 API 接收到的访问令牌的一致身份。如何颁发令牌提供了对令牌格式、声明和生命周期的控制。

8610

从五个方面入手,保障微服务应用安全

授权服务 指身份认证授权服务,微服务架构,通常是认证管理系统(IAM)的一个应用。认证中心具备读取"访问者"身份信息的权限。...对访问令牌时间较短如2分钟,刷新令牌为一次性令牌有效期略长如30分,如果存在已作废的刷新令牌换取访问令牌的请求,授权端点也能够及时发现做出相应入侵处理,如注销该用户的所有刷新令牌。...因此微服务架构,即便是纯前端单页应用类的Web应用,仍可以用基于网关交互的授权码模式获取访问令牌。其他非前后端分离的混合Web应用自身就是客户端,不需要借助网关交换访问令牌。 ?...访问令牌失效后,网关根据自己的客户端凭证+刷新令牌一起发送授权服务器,获取新的访问令牌刷新令牌,并再返回响应中将访问令牌写入到用户浏览器的存储。...推荐采用方案二实现令牌检查,需要注意的是方案二的JWT令牌仅包含必要的信息即可,不要放太多的角色权限信息。后续功能需要额外的信息时,可以根据令牌再去IAM获取

2.6K20

python测试开发django-61.权限认证(permission)

前言 用户登录后,才有操作当前用户的权限,不能操作其它人的用户,这就是需要用到权限认证,要不然你登录自己的用户,去操作别人用户的相关数据,就很危险了。...authentication是身份认证,判断当前用户的登录方式是哪种认证方式 permissions 是权限认证,判断哪些用户有操作权限 authentication身份认证 身份验证是将收到的请求和一组标识证书...基本身份验证通常仅适用于测试 TokenAuthentication 此身份验证方案使用基于令牌的简单HTTP身份验证方案。令牌认证适用于客户端 - 服务器设置,例如本机桌面和移动客户端。...SessionAuthentication 此身份验证方案使用Django的默认会话后端进行身份验证。会话身份验证适用于与您的网站在同一会话上下文中运行的AJAX客户端。...相关配置 settings.py,INSTALLED_APPS添加rest_framework和rest_framework.authtoken INSTALLED_APPS = [ 'apiapp

1.9K40

重学SpringCloud系列八之微服务网关安全认证-JWT篇

二、流程优化方案 从上面的流程我们可以看出 令牌的颁发是由认证服务完成的 令牌的校验是由网关完成的 也就是说这个JWT密钥相关的基础配置必须得认证服务”和“网关服务”上都配置一份,这样的配置分散不利于维护和密钥管理...所以我们优化一下流程:gateway服务网关的服务上开发登录认证功能。.../** * JWT获取令牌刷新令牌接口 */ @RestController @ConditionalOnProperty(name = "zimug.gateway.jwt.useDefaultController...测试令牌刷新 ---- 全局过滤器实现JWT鉴权 在上一小节我们已经实现了用户登录认证,用户如果认证成功后会返回给用户客户端一个令牌,也就是JWT。...只有令牌合法请求才会被转发到具体的业务服务。并且在过滤器我们JWT令牌解析出userId(用户身份信息),并向网关后面的服务传递。

2.8K20
领券