拥有用户表而不是oauth_clients与OAuth2-server for Lumen

时间:2016-08-23 10:25:18

标签: php oauth oauth-2.0 lumen lumen-5.2

我已使用此Tutorial在我的Lumen API中成功实施了OAuth2服务器。本教程使用OAuth2 server for Laravel + Lumen

不幸的是documentation part of creating own grants还没有。

在我的数据库中,现在有 oauth_clients 表。但我还有一个自己的表用户。有关于用户的更多信息。所有实体都引用此表。

现在,我想查看用户表,了解 oauth_clients 表的凭据 ,而不是 。这可能吗?

1 个答案:

答案 0 :(得分:1)

oauth_clients 表仅用于管理client_id和client_secret(以及范围等)。

您需要使用PasswordGrant而不是ClientCredentialsGrant来验证用户身份(从而处理用户表以及 oauth_clients )。

有关详细信息,请参阅:https://github.com/lucadegasperi/oauth2-server-laravel/blob/master/docs/authorization-server/password.md

PS:在Lumen你可能会遇到这样的例外:

  if (Auth::once($credentials)) {
      return Auth::user()->id;
  }

所以你需要以类似的方式重写它:

$user = User::where('username', strtolower($username))->first();

if (!isset($user)) {
    return null;
}

if (app('hash')->check($password, $user->getAuthPassword())) {
    return $user->id;
}

return null;

注意:您仍然需要oauth_clients表,并且至少定义了一个client_id / client_secret组合(请注意,秘密不是哈希,并且应该是普通的)

设置完成后,您将获得访问令牌(不完全是这样,取决于您的实施):

curl -X POST http://yourapp/access_token -d "grant_type=password&client_id=test&client_secret=testsecret&username=testuser&password=testpass"