小编Noi*_*oir的帖子

使用OAuth2的laravel中的自定义用户提供程序

我想在我的控制下使用外部OAuth2服务器来验证Laravel 5.2应用程序的用户.作为客户端库,我想使用软件包league/oauth2-client据我所知,需要实现自定义用户提供程序,但我不确定所有必需步骤的大图.

这个想法是用户为我的Laravel应用程序提供凭据,换句话说client credentials就是使用该方法.然后,承载令牌和刷新令牌存储在客户端侧.每次客户端发出请求时,必须由OAuth服务器验证令牌.OAuth服务器还提供一些基本用户信息,如电子邮件和名称.因此,在我的应用程序中,本地用户和OAuth用户之间必须存在某种链接.这是通过一个简单的表来实现的

+-------------------+
|       Users       |
+-------------------+
| id      | int(10) |
| oauthId | int(10) |
+---------+---------+
Run Code Online (Sandbox Code Playgroud)

首先,我在laravel.io上按照本指南创建了一个基本的提供程序框架.但此时我有几个问题:

  1. 该方法retrieveById是应该从OAuth服务返回任何用户还是只允许请求发布者的用户看到?

  2. 我的OAuth服务器已经为每个用户进行了权限检查.如果retrieveById应该返回任何现有用户,我的权限检查OAuth服务器是否毫无价值?这将是我的架构中的一个缺陷.

  3. 某些方法必须返回\Illuminate\Contracts\Auth\Authenticatable接口的实现.我在哪里实现这个?这应该是试图验证的用户的表示吗?如果这应该代表我的模型中的用户,我遇到的问题是我不知道返回值,getAuthPassword因为此信息在我的OAuth服务器上.我怎么解决这个问题?

正如您所看到的,我在解决整个身份验证过程中如何协同工作方面遇到了问题.非常感谢您的帮助.

php authentication oauth-2.0 laravel-5

5
推荐指数
1
解决办法
1344
查看次数

扩展Laravel 5.2 SessionGuard

我想扩展Laravel股票身份验证,以在利用现有功能的同时使用OAuth服务器进行用户检索和身份验证。我已经设法将扩展EloquentUserProvider为部分覆盖/扩展Illuminate\Contracts\Auth\UserProvider合同的实现。当前的实现如下所示:

class EloquentOauthServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return HcOAuthProvider;
     */
    public function boot()
    {
        Auth::provider('oauth',function($app){
            $model = $app['config']['auth.providers.oauth.model'];
            $repository = new OauthUserRepository();
            return new EloquentOauthUserProvider($app['hash'], $model, $repository);
        });
    }

}
Run Code Online (Sandbox Code Playgroud)

auth.php配置中,我像这样更改了描述符:

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'oauth',
    ],
]

'providers' => [
    'oauth' => [
        'driver' => 'oauth',
        'model' => App\Models\User::class,
    ],
]
Run Code Online (Sandbox Code Playgroud)

到目前为止,这是可行的,我可以覆盖添加逻辑的方法。但我意识到,我还需要覆盖的一些方法SessionGuard类(loginlogout要具体),因为我要保存和检索OAuth的具体使用Laravel会话实现令牌。周围有一些建议,但它们要么不起作用(也许他们在Laravel 5.2之前就起作用了),要么需要重写 …

php authentication laravel laravel-5.2

5
推荐指数
1
解决办法
2230
查看次数