当前位置: 首页 > 知识库问答 >
问题:

django-oauth-toolkit发布JWT令牌

佴英奕
2023-03-14

{“access_token”:“txxxxxxxxxxxxxxxxxxfb45a”,“expires_in”:36000,“token_type”:“承载”,“scope”:“读写组”,“refresh_token”:“16okxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxfb45a”}

{“access_token”:“xxxxxxxx.xxxxx.xxxxxx”,“expires_in”:36000,“token_type”:“承载”,“scope”:“读写组”,“refresh_token”:“xxxxxxx.xxxxxx.xxxxx”}

我浏览了https://github.com/humanitec/django-oauth-toolkit-jwt/,但我认为我使用的django-oauth-toolkit版本不兼容。

共有1个答案

赫连棋
2023-03-14
class OauthServer(oauth2.Server):
    def __init__(self, request_validator, token_expires_in=None, token_generator=None, *args, **kwargs):
        token_generator = custom_token_generator
        super().__init__(request_validator, token_expires_in, token_generator, *args, **kwargs)

code>custom_token_generator函数将生成jwt令牌

def custom_token_generator(request, refresh_token=False):
    client_code = request.user and request.user.client.codigo

    now = datetime.now()
    payload = {
        'iat': int(now.timestamp()),
        'exp': int(expires.timestamp()),
    }
    if client_code:
        payload['org'] = client_code
    return jwt.encode(payload, settings.JWT['EC_PRIVATE_KEY'].encode(), algorithm='ES256').decode('ascii')

它不是理想的JWT,但您可以根据需要制作,唯一的问题是将AccessToken和RefreshTokenToken字段更改为TextField,因为JWT的长度将远远超过限制

from oauth2_provider.models import AbstractAccessToken, AbstractRefreshToken

class AccessToken(AbstractAccessToken):
    token = models.TextField()

class RefreshToken(AbstractRefreshToken):
    token = models.TextField()

django-oauth-toolkit文档将提供更多关于在django设置中覆盖这些字段的信息

 类似资料:
  • 据我所知,OAuth 2.0规范在访问令牌应该采取什么形式方面非常模糊: 令牌可以表示用于检索授权信息的标识符,或者可以以可验证的方式自包含授权信息(即,由一些数据和签名组成的令牌字符串)。为了让客户端使用令牌,可能需要额外的身份验证凭据,这些凭据超出了本规范的范围。 访问令牌提供了一个抽象层,将不同的授权构造(例如用户名和密码)替换为资源服务器可以理解的单个令牌。这种抽象使得发布访问令牌比用于获

  • 问题内容: 我正在使用Django Rest Framework构建API。后来,该API应该由iOS和Android设备使用。我想允许我的用户使用Facebook和Google等oauth2提供程序进行注册。在这种情况下,他们根本不必在我的平台上创建帐户。但是,当我没有django-oauth-toolkit的Facebook / Google帐户时,用户也应该能够注册,所以我有自己的oauth

  • 我正在阅读以下关于授权的文章: https://auth0.com/docs/quickstart/backend/aspnet-core-webapi/02-authorization 这让我有点困惑。 Auth0使用范围声明来提及endpoint操作的授权。 OAuth 2.0范围参数也用于相同目的,例如Slack在以下链接中提到其范围: https://api.slack.com/docs/

  • 我一直在开发一个系统,使用JSON Web Tokens对我网站上的用户进行身份验证和授权。我的系统即将完成,但当我尝试在我的代码中使用[Authorize(“承载”)]属性时,我遇到了错误。错误如下: System.IdentityModel.Tokens。消息中出现SecurityTokenInvalidSignatureException:抛出异常:“System.IdentityModel

  • JSON Web Token authentication for Django GraphQL. Fantastic documentation is available at https://django-graphql-jwt.domake.io. Installation Install last stable version from Pypi: pip install django-g

  • 问题内容: 我正在使用制作REST API 。我正在使用(https://github.com/auth0/java- jwt )进行令牌生成工作。请检查以下代码。 UserJSONInfo -REST方法类 UserInfoService- 服务层 AuthKey-仅 包含 web.xml 我将令牌生成类维护为另一个Java项目,并将其作为库导入此处(我正在使用Netbeans)。下面是代码 现