Laravel和OAuth 2.0

4

我已经四处搜寻,但没有找到任何能够帮助我的东西。

我对oAuth非常陌生。

我正在使用 https://github.com/lucadegasperi/oauth2-server-laravel

我正在构建一个REST API服务。 客户端 将是网站。我使用 密码流程 进行身份验证。

我的理解是,如果我错了,请纠正我。

oauth_clients 表(id、secret、name)。客户端 不是登录网站的个人用户,而是网站本身。我将使用 客户端 的 id 和 secret 以及个人用户的用户名和密码。

我正在按照上面页面上的说明进行操作。

我正在使用POST方法访问http://api.domain.com/oauth/access_token?grant_type=password&client_id=BCA545A934F5F4528DA3EE567E8E4&client_secret=5184B7C4E11ED3EEF99DA1A1DD9C3&username=email@email.com&password=password&scope=scope1,scope2&state=123456789 这样可以对客户端和用户进行身份验证,但这里有一个问题。我不知道在哪里设置scopestate 以下是响应结果:{ "error": "invalid_scope", "error_description": "The requested scope is invalid, unknown, or malformed. Check the \"scope1\" scope." } 即使我设置了Scope或State,我也不知道下一步该怎么做?
谢谢。
编辑
我向作用域表添加了一个虚拟记录,并将该值添加到作用域中,它起作用了。
我现在理解了作用域,但我不知道为什么需要它。
我收到了一个带有访问令牌的响应。我现在真正理解了oAuth的概念。我已经实现了一个登录/访问令牌系统,但我可能会放弃它并坚持使用oAuth。 我试图使用oAuth对网站进行REST API服务身份验证,但看起来这不是正确的方法。 那么现在我的下一个问题是:是否有一种将访问令牌添加到标头而不是URL参数的方法?

你是想创建一个OAuth服务还是尝试使用社交认证服务登录用户? - Anil Sharma
oAuth服务。连接API服务到网站是否有更好的方式?我想将API锁定,只允许网站访问,并有可能开放部分API。 - user742736
1个回答

4

如果还未完成,需要发布OAuth2服务器配置,使用以下方法:

php artisan config:publish lucadegasperi/oauth2-server-laravel

打开文件app/config/packages/lucadegasperi/oauth2-server-laravel/oauth2.php

如果您不需要作用域,请将一个名为basic的单一作用域添加到oauth_scopes表中。

|--------------------------------------------------------------------------
    | Default Scope
    |--------------------------------------------------------------------------
    |
    | The default scope to use if not present in the query string
    |
    */
    'default_scope' => 'basic',

现在在access_token请求中不需要添加scope参数。

Q2:有没有一种方法可以将访问令牌添加到头部而不是作为URL参数?

是的。默认情况下,它会检查查询字符串和HTTP标头。

将下面的选项更改为true以防止在提供作为查询字符串时验证访问令牌。

 |--------------------------------------------------------------------------
    | HTTP Header Only
    |--------------------------------------------------------------------------
    |
    | This will tell the resource server where to check for the access_token.
    | By default it checks both the query string and the http headers
    |
    */
    'http_headers_only' => false, 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接