【问题标题】:Oauth2 & Laravel - `Client_id` & `Client_secret` - where to place, store, call?Oauth2 和 Laravel - `Client_id` 和 `Client_secret` - 在哪里放置、存储、调用?
【发布时间】:2016-02-10 06:55:01
【问题描述】:

我正在使用OAuth-Server-Laravel repo docs,我正在使用 Lumen。我已经成功地将客户端凭据授予类型设置为工作,并尝试将其移至密码授予类型。

我添加了带有verify() 函数的PasswordVerifier 类,将我的数据库oauth_clients 表更改为:

        $table->string('id', 40)->primary();
        $table->string('username');
        $table->string('password');
        $table->string('email');
        $table->timestamps();

        $table->unique(['id', 'username']); 

verify() 的作用是:

        'username' => $username,
        'password' => $password,

当我在 Postman 中尝试时,我收到: "The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed. Check the \"client_id\" parameter."

然后我阅读了问题,发现我需要在usernamepassword 凭据旁边导入client_idclient_secret。我知道这些是我应该定义的。

但是,我不知道在哪里放置、存储和调用它们?我应该将它们存储在.env 文件中吗?如果是这样,我应该如何在验证函数中调用它?

【问题讨论】:

    标签: php laravel oauth oauth-2.0 lumen


    【解决方案1】:

    应该有一个由该包创建的oauth_clients 表。这定义了哪些客户端有权对您的资源服务器进行 API 调用。您的授权服务器会验证这些客户端是否存在于此表中,并且无论何时从客户端发出请求,这些密钥都会匹配。

    那个表的结构是这样的:

    id (primary)
    secret
    name
    created_at
    updated_at
    

    此表中的每个条目都代表一个客户端应用程序,它可以对您的 API 进行某种访问。

    【讨论】:

    • 我删除了oauth_clients 中的内容,并在其中添加了用户名、密码和电子邮件。但是,oauth_clients 的结构应该保持原样,我应该把我的用户名和密码放在哪里?
    • 在单独的users 表中。这些是用户而不是客户
    • 哦。但是我应该如何在verify() 函数中调用client idclient_secret 并将其与数据库中的client_id 和client_secret 进行比较?用户名和密码将来自发布请求,但是 client_id 和 client_secret?我无法完全理解其中的逻辑。
    • 您没有验证client_idclient_secret。该软件包在中间件(laravel 4 的过滤器)中为您提供该功能,以及每个不同的授权类型 completeFlow 函数。
    • 当我尝试在该路由中发帖时,它会强制我包含client_idclient_secret。如果我不提交这两个值,它将失败。我很困惑。我是否需要在 html 中放置 client_id 和 client_secret 并在发布用户名、密码变量时发布它们?我知道这没有意义,但我想不出任何其他方式
    猜你喜欢
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 2017-10-20
    • 2013-11-02
    • 2017-06-06
    • 1970-01-01
    • 2013-08-30
    • 2016-04-08
    相关资源
    最近更新 更多