【问题标题】:Unable to generate token using Laravel Passport无法使用 Laravel Passport 生成令牌
【发布时间】:2021-03-14 08:36:35
【问题描述】:

尝试通过 Laravel 8 Passport 生成令牌 通过向端点发送 Http 请求,(使用 laravel 代客部署应用程序)

https://project.test/oauth/token

我的作曲家:

        "php": "^7.3|^8.0",
        "fideloper/proxy": "^4.4",
        "fruitcake/laravel-cors": "^2.0",
        "guzzlehttp/guzzle": "^7.0.1",
        "laravel/framework": "^8.12",
        "laravel/jetstream": "^1.6",
        "laravel/passport": "^10.1",
        "laravel/sanctum": "^2.6",
        "laravel/socialite": "^5.1",
        "laravel/tinker": "^2.5",
        "livewire/livewire": "^2.0"

我收到此异常:无法解析您的密钥,但未指定原因, 我试图用谷歌搜索它,我什么也没找到,坚持几天。


{
{
    "message": "It was not possible to parse your key, reason: ",
    "exception": "Lcobucci\\JWT\\Signer\\InvalidKeyProvided",
    "file": "/Users/yassine/Desktop/apps/project/vendor/lcobucci/jwt/src/Signer/InvalidKeyProvided.php",
    "line": 17,
    "trace": [
        {
            "file": "/Users/yassine/Desktop/apps/project/vendor/lcobucci/jwt/src/Signer/OpenSSL.php",
            "line": 85,
            "function": "cannotBeParsed",
            "class": "Lcobucci\\JWT\\Signer\\InvalidKeyProvided",
            "type": "::"
        },
        {
            "file": "/Users/yassine/Desktop/apps/project/vendor/lcobucci/jwt/src/Signer/OpenSSL.php",
            "line": 42,
            "function": "validateKey",
            "class": "Lcobucci\\JWT\\Signer\\OpenSSL",
            "type": "->"
        },
        {
            "file": "/Users/yassine/Desktop/apps/project/vendor/lcobucci/jwt/src/Signer/OpenSSL.php",
            "line": 18,
            "function": "getPrivateKey",
            "class": "Lcobucci\\JWT\\Signer\\OpenSSL",
            "type": "->"
        },
        {
            "file": "/Users/yassine/Desktop/apps/project/vendor/lcobucci/jwt/src/Signer/BaseSigner.php",
            "line": 38,
            "function": "createHash",
            "class": "Lcobucci\\JWT\\Signer\\OpenSSL",
            "type": "->"
        },
        {
            "file": "/Users/yassine/Desktop/apps/project/vendor/lcobucci/jwt/src/Builder.php",
            "line": 568,
            "function": "sign",
            "class": "Lcobucci\\JWT\\Signer\\BaseSigner",
            "type": "->"
        },
        {
            "file": "/Users/yassine/Desktop/apps/project/vendor/lcobucci/jwt/src/Builder.php",
            "line": 529,
            "function": "createSignature",
            "class": "Lcobucci\\JWT\\Builder",
            "type": "->"
        },

【问题讨论】:

    标签: authentication oauth token laravel-passport laravel-8


    【解决方案1】:

    我找到了问题的根源,它是从 PHP 8.0 的变化中返回的 OpenSSL。 看:

    https://php.watch/versions/8.0/OpenSSL-resource

    Change Open SSL PHP 8.0

    在 lcobucci / jwt 包中使用了此验证。 他们已经完成了修复问题的更新。

    https://github.com/lcobucci/jwt/commit/be0f2f94c4bd24a2c69a6af9e5949848c29a0921#diff-6019fde4d9e0d7d2d060b7fd9d8ebd89f85be6d89f61de292660c9a01bea8ca9R84

    运行 composer update 为我解决了这个问题

    【讨论】:

    • 问题具体是 Passport 的 lcobucci/jwt 子依赖,而 v4 是获得 PHP 8 支持所需的主要版本。只要您拥有 Passport v10.1 或更高版本,就可以通过运行 composer update lcobucci/jwt 对其进行更新。
    猜你喜欢
    • 2019-03-24
    • 2019-07-27
    • 2019-02-03
    • 1970-01-01
    • 2017-07-25
    • 2017-02-28
    • 1970-01-01
    • 2019-08-30
    • 2017-09-24
    相关资源
    最近更新 更多