Laravel Passport-我的用户应用可以使用哪些补助?

时间:2018-06-29 08:33:48

标签: laravel authentication laravel-5 oauth-2.0 laravel-passport

我有一个应用程序,用户可以在其中注册和添加自己的应用程序(网站,移动应用程序)。

对于这些应用程序中的每一个,我都希望访问我的API,并允许从数据库中获取产品。

例如: 用户X在我的应用程序中注册,添加他的博客用户X-blog.com并获得访问令牌。接下来,他可以调用我的API,并在他的博客文章中展示一些产品。

我应该实施哪些补助以使基于Laravel Passport的API安全和有用(每个用户应用程序都有其自己的令牌,无需用户登录即可进行api调用,并且令牌很长)?

为每个用户应用程序专用客户端创建并使用客户端凭据授予的好主意吗?对于我来说,它看起来并不安全(或者我错了)。

2 个答案:

答案 0 :(得分:0)

在您的情况下,我认为使用Personal Access Tokens是最佳选择:

每个注册并添加其博客帖子的唯一用户都将获得一个唯一令牌:

$user = App\User::find(1);

// Creating a token without scopes...
$token = $user->createToken('Token Name')->accessToken;

// Creating a token with scopes...
$token = $user->createToken('My Token', ['place-orders'])->accessToken;

然后,您可以发出请求并将令牌作为授权标头传递:

$response = $client->request('GET', '/api/user', [
    'headers' => [
        'Accept' => 'application/json',
        'Authorization' => 'Bearer '.$accessToken,
    ],
]);

您还可以在boot的{​​{1}}方法中为令牌设置lifetimes

AuthServiceProvider

答案 1 :(得分:0)

根据您的要求,很明显第三方可以访问您的api。允许第三方访问的方法有两种

  1. 传统oAuth(https://laravel.com/docs/5.6/passport#issuing-access-tokens

但是,如果客户的用户在系统中拥有帐户,则此方法适用。就像我们使用Facebook,Google等一样。

  1. 客户凭证授予令牌(https://laravel.com/docs/5.6/passport#client-credentials-grant-tokens) 这适用于机器对机器的身份验证。

您可以使用第二个选项。您可以做的是在您的客户端进行注册并生成client IDclient secret,然后他们将使用此信息从其服务器向您的服务器进行身份验证,然后服务器将返回访问令牌。无需客户端参与,之后他们的服务器或客户端都可以使用accessToken直接访问您的api。

希望它可能会清除您的信息。