Laravel Passport APi - 隐性补助金

时间:2018-01-10 07:47:56

标签: laravel oauth-2.0 authorization

我想通过angularjs建立一个水疗中心,并使用laravel作为水疗中心的api。通过laravel护照的文件阅读我发现我需要为此目的使用隐含的补助金。但我不确定它应该如何从前到后工作。我只是希望能够使用用户名和密码登录用户,然后只需使用它,我需要对流程进行一些澄清。这就是我想要的:

  1. 通过用户名和密码通过html / javascript登录laravel(Angular),通过ajax请求登录。
  2. 获取访问令牌以与api
  3. 进行通信
  4. 在spa中执行一些操作,使用访问令牌
  5. 触发对api的请求
  6. 从api获取数据以响应该请求。
  7. 但我现在看到的隐含授权与我的期望有点不同。

    1. 通过默认刀片登录表单登录laravel(尚未使用ajax创建一个)
    2. 像这样重定向到oauth / autorize

      Route::get('/redirect', function () {
      $query = http_build_query([
          'client_id' => 'client-id',
          'response_type' => 'token',
          'scope' => '',
      ]);
      
      return redirect('http://your-app.com/oauth/authorize?'.$query);
      

      });

    3. 重定向显示批准或拒绝授权请求屏幕(这不是我期望的)

    4. 当我批准请求时,浏览器会将我重定向到使用访问令牌在oAuth客户端数据库条目中指定的重定向uri。我应该能够。
    5. 令我更加困惑的是,我似乎需要为每个laravel用户提供一个新客户端。我希望有一个代表我的水疗中心的oauth客户端可以访问laravel用户。你能澄清一下吗?

1 个答案:

答案 0 :(得分:0)

如果要在JavaScript应用程序中使用密码授予,则必须使用服务器端代理进行身份验证并保护client_secret和刷新令牌。

代理管理整个api通信过程或仅管理认证部分并返回短暂的access_token。身份验证状态通过服务器会话进行管理。由于大多数实现都使用cookie,因此必须根据您的实现保护某些请求免受CSRF攻击。

否则使用隐式授权来验证您的应用。 (有关详细信息,请参阅以下链接)

https://auth0.com/docs/api-auth/tutorials/implicit-grant

https://oauth2.thephpleague.com/authorization-server/implicit-grant/

您可以使用此处所述的静默身份验证刷新访问令牌 https://auth0.com/docs/api-auth/tutorials/silent-authentication

注意:在大多数情况下,刷新令牌不会过期,这对于前端存储来说是一个很大的NO。

客户秘密应始终保密。