【问题标题】:Error Could not deserialize key data when Using RSA Algorithm Django Rest Framework Simple JWT使用 RSA 算法 Django Rest Framework 简单 JWT 时出现错误无法反序列化密钥数据
【发布时间】:2021-04-08 03:11:26
【问题描述】:

在使用 django rest 框架和简单的 jwt 身份验证和 RSA 算法时出现错误。

当我使用 HS 算法时,我的代码运行良好,但是当我将算法更改为 RS 时,出现以下错误:

无法反序列化关键数据。数据可能格式不正确,或者可能使用加密 不支持的算法。

我的设置:

SIMPLE_JWT = {
    'ALGORITHM': 'RS512',
    'SIGNING_KEY' : 'ssh-rsa MIIBPAIBAAJBALZ+WuuTIol2cwEALcqn+/d0AER+sX269KVZt7sdl9C0QcspNHvHGYBWLoYIV5i72fsINX4V5IvkqsIn83O4jQMCAwEAAQJBAJ8E/Y73GAo2V8IQeNZ1iH646x7EUz9e8J1Az3PSNp7ZZ4tNjEhyA817qQGT9nfvRPXqIKkKFVe0THfmWmbK5cECIQD4M/qhoT2n99iIJwJq2DhbVvqx74hal+ocuboSwDZuIwIhALw58q4+YZlg79fGc2PyK8MUQLIx/i+O3bK7moMCf6OhAiEA04E/15IWf1clzsgnODMuuy9AjHaJJGIGHxpppObkuy8CIGqjwhRqD02gmAH90x5K8/RAIy9SF5rGLGC43R9gaQRBAiEAoLxLZuvXosXy6XR67ODCgZI7yB1XXVIwB73LxWXrnkk=',

    'VERIFYING_KEY' : 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALZ+WuuTIol2cwEALcqn+/d0AER+sX269KVZt7sdl9C0QcspNHvHGYBWLoYIV5i72fsINX4V5IvkqsIn83O4jQMCAwEAAQ=='
}

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
    ]
}

查看和其他使用Djoser Package

Request POST | http://localhost:8000/api/jwt/create/

 username : userExample,
 password : **********

注意:使用 Postman 进行测试

【问题讨论】:

    标签: django django-rest-framework jwt jwt-auth django-rest-framework-simplejwt


    【解决方案1】:

    它是固定的,我只需要更改 SIGNING KEY & VERIFYING KEY 字符串

    Settings.py

    SIMPLE_JWT = {
            'SIGNING_KEY' : '''-----BEGIN RSA PRIVATE KEY-----
    MIICXAIBAAKBgQCpjDCwMjok1ez1Hr+eOnCs7Ms/hczI1pZ3txyGKrMPLN2Tof3s
    gtW6fBOlpCctNo3rG00V64SDLbXHx59QTo+GBY8EdVY8KnGy8ihMpBX86aD2SngP
    /pGXMBw/XjCvu7uXCQs0I52EfXmK1+/u5LgGFLizN1upQIcaJq3hm2KZPwIDAQAB
    AoGAWDyQXjJVljQLNOpCuRsa5rP5dt6wW9lpx3Xxj1WLiJtF2X5Vww+4IWxPYUYT
    6XDZ3QCBVqYSeZ6BWy5lmAq6oCCf56V7j/gBTB6/1aBTXBAhKIXxk040qcrGAMUW
    ZoJXz6py0C16MaOQVKgHkMw7F07XovCVGWZI9dik7kOln7ECQQDhcaltBqPOprGl
    kfDLx4PyCCP2HLN/vEw/UaOTtGUvc5DjvcEp/7BQsAvmCG1Y8GIHXTA1ITYIR9KI
    QBwk4WsZAkEAwIcQq3CxOn7MP3XF99alrO19UXOO4D5Z7xL7mgjLjUrO/6wjMZ83
    bQOt2noiCU6522RPZ53CY04h+vRQNesKFwJBAJFXYL4sOLECoKa4hsApmXQRMXX6
    nPJt584uiMGx3EYSQEfCzuSPthDe3lzn8+8R0nEi7/Bgv9/oxd8XTc2tEgkCQESv
    qxXO5Zu94vZ8+Pzbmk3giIYHmSCNfh5aAmNI4f3tg34ZlpC8gdSlrF+2lPAHIy2P
    UvjfgptVI7BZe0hRK08CQBva/cZfIbq8HSWmLnRtzlbELg7UlRzGcIc6KElwDlid
    8SOZOXGZjKY9Xll5g/ecRXgRoE0/hw6ThOrsrObHZ7w=
    -----END RSA PRIVATE KEY-----
    ''',
    
        'VERIFYING_KEY' : '''-----BEGIN PUBLIC KEY-----
    MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCpjDCwMjok1ez1Hr+eOnCs7Ms/
    hczI1pZ3txyGKrMPLN2Tof3sgtW6fBOlpCctNo3rG00V64SDLbXHx59QTo+GBY8E
    dVY8KnGy8ihMpBX86aD2SngP/pGXMBw/XjCvu7uXCQs0I52EfXmK1+/u5LgGFLiz
    N1upQIcaJq3hm2KZPwIDAQAB
    -----END PUBLIC KEY-----
    ''',
    }
    

    【讨论】:

    • 干得好。虽然我确定这是您不打算长时间使用的密钥,但您可能不应该发布它。您可能会继续使用它,并且其他人会复制/粘贴它。只要说"SIGNING_KEY": "{private-key-here}"等等就足够了
    • 谢谢,这只是虚拟钥匙....我的项目没有使用这个钥匙
    猜你喜欢
    • 2020-11-26
    • 1970-01-01
    • 2019-10-08
    • 1970-01-01
    • 2021-12-27
    • 2015-05-06
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    相关资源
    最近更新 更多