Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Re: Laravel 5.x » Аутентификация по ldap » 17.10.2016 15:03:11

Спасибо, ссылка на гитхаб помогла разобраться.

#2 Re: Laravel 5.x » Аутентификация по ldap » 12.10.2016 19:16:24

все просто, есть ад, где заведены пользователи, есть некий веб-ресурс, на который обращаются пользователи, и чтобы не заводить пользователей в двух местах, реализована синхронизация пользователей с ад.
на этом веб-ресурсе, есть специфичные поля(атрибуты) для пользователей, у которых нет аналогов в ад. (заводить кастомные поля в ад, нет возможности)

все достаточно безопасно, если пользователя блокируют в ад, то он сразу же не может зайти на сайт, не дожидаясь часовой синхронизации.

hzone пишет:

авторизовывать нельзя для того чтобы проверить можно ли авторизовываться - так делать не верно!

как раз таки, авторизовывать нельзя до тех пор пока пользователь не аутентифицирован, т.е. аутентификация должна проходить не на сайте, а на сервере ад. т.е. аутенифицирует ад, авторизовывает сайт.

#3 Re: Laravel 5.x » Аутентификация по ldap » 12.10.2016 17:51:46

hzone пишет:

после проверки в дереве чем ты собираешься авторизовать пользователя? пальцем?
лара ничего не знает о лдапе. даже что такое лдап.
следовательно для авторизации НА САЙТЕ надо пользователя создать.
ибо в противном случае лдап-не-лдап, а на сайте пользователь будет гостём всегда, для этого сайта

Ещё раз, у меня все пользователи есть в БД. От лдап мне только нужна аутентификация и больше ничего
Остальная инфа хранится в БД и я ничего сложного не вижу, чтобы сделать запрос в базу и достать пользователя по его логину.


hzone пишет:

как вариант, каждый час читать кроном дерево на предмет пользователей и кидать их в бд лары.
и работать от сайта без лдап.
не забывая удалять пользователей, которым доступ закрыли в течении последнего часа.

но этот вариант "грязного чтения" источника не гуд, ибо за безопасность тебе отвечать рублём как минимум, перед начальством.

Все верно, но чтобы избежать "грязного чтения", пользователя надо аутентифицировать не в ларе, а по лдпу проверять. На случай того, если его заблокируют, до запуска крона.

вариант читать свойства из лдапа я не могу использовать.


В общем то вопрос у меня не как написать лдап аутентификацию, а как это сделать в рамках ларавеля. Т.е. как написать свой "драйвер" авторизации, а не использовать коробочный.


За ссылку спасибо, посмотрю.

#4 Re: Laravel 5.x » Аутентификация по ldap » 12.10.2016 17:04:05

к сожалению я не осилил)
зачем дублировать пользователя? мне надо только проверить, что логин и пароль совпадает, и если совпадает, то по логину уже из БД вытащить всю остальную инфу, к примеру так(псевдо код):

$isAuth = ldap_bind(...);
if ($isAuth)
  $user = User::findByLogin($_POST['login']);
else
  редирект на страницу с логином/паролем

#5 Re: Laravel 5.x » Аутентификация по ldap » 12.10.2016 16:54:09

Логику авторизации через ldap я понимаю и как читать дерево и пользователя. Я не понимаю, как это реализовать в Laravel.

#7 Laravel 5.x » Аутентификация по ldap » 12.10.2016 16:45:51

alex_alex
Ответов: 16

Добрый день, подскажите, как сделать, следующее:

Проверять логин и пароль пользователя только через ldap, если успешно, то запоминать пользователя на 1 неделю, а данные о пользователе(телефон, должность и т.п.) брать из БД (модели User)?

Насколько я понял, надо написать свой драйвер и зарегистрировать, но я не понимаю, как это сделать.
По сделал следующее:

1. Создал провайдер

namespace App\Providers;

use Auth;
use Illuminate\Support\ServiceProvider;
use Ldap;

class LdapUserProvider extends ServiceProvider
{
    public function boot()
    {
        Auth::extend('ldap', function ($app)
        {
            return new Ldap(); // Некий класс, который реализует подключение по ldap
        });
    }
}

2. в файле config\auth.php указал свой драйвер

'providers' => [
        'users' => [
            'driver' => 'ldap'
        ],

3. Создал контроллер AuthController.php

namespace App\Http\Controllers;

use Auth;
use Illuminate\Http\Request;

class AuthController extends Controller
{
    public function login()
    {
        return view('auth.login');
    }

    public function loginProcess(Request $request)
    {
        // Что тут должно быть?
    }

}

А дальше я не понимаю, что надо делать.

Подвал раздела