1

我已经使用本教程在我的 Lumen API 中成功实现了 OAuth2 服务器。本教程使用Laravel + Lumen 的 OAuth2 服务器

不幸的是,创建自己的赠款的文档部分还没有。

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

现在我想检查users表中的凭据而不是oauth_clients。这可能吗?

4

1 回答 1

1

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

您需要使用 PasswordGrant 而不是 ClientCredentialsGrant 来验证用户身份(从而处理users表和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;

注意:您仍然需要定义了至少一个 client_id/client_secret 组合的 oauth_clients 表(请注意,secret 不是散列,应该是普通的)

设置后,您将获得类似的访问令牌(不完全像这样,取决于您的实现):

curl -X POST http://yourapp/access_token -d "grant_type=password&client_id=test&client_secret=testsecret&username=testuser&password=testpass"
于 2016-08-23T14:14:25.550 回答