Аутентификация с помощью CAS, перенаправление после входа в систему, Laravel - PullRequest
0 голосов
/ 03 марта 2020

У меня есть аутентификация с помощью cas, и я пытаюсь перенаправить пользователя в мое приложение после того, как выполнен вход, и когда он выходит на страницу из приложения. Проблема в том, что работает только 1 / 2.

1) -> после входа в систему перенаправление корректно, но при выходе пропустите мою страницу и перенаправьте на cas (url: /)

2) -> Выход из системы перенаправлен нормально, но при входе в систему не было перенаправлено мое приложение, и я получаю это сообщение: (url: / login)

Вы, пользователь, успешно вошли в Службу Центральной Аутентификации , Однако вы видите эту страницу, потому что CAS не знает о вашей цели и о том, как туда добраться. Еще раз проверьте запрос аутентификации и убедитесь, что указан целевой сервис / приложение, которое авторизовано и зарегистрировано в CAS.

CAS_HOSTNAME=cas.example.co
CAS_REAL_HOSTS=cas.example.co
CAS_LOGOUT_REDIRECT=http://127.0.0.1:8000/login
CAS_REDIRECT_PATH=http://127.0.0.1:8000/login
CAS_CONTROL_SESSIONS=false
CAS_VALIDATE_CN=false
CAS_ENABLE_SAML=false

web. php

Route::get('/logout', function() {

    if( cas()->isAuthenticated() ) {

        auth()->logout();
        session()->flush();
        request()->session()->getHandler()->destroy(request()->session()->getId());
        cas()->logout();
        return redirect('/');
    } else {
        session()->flush();
        return redirect('/login');
    }
});

Route::group(['middleware'=>'cas.guest'],function () {
    Route::get('/login', 'AuthController@index');
});

1 Ответ

0 голосов
/ 05 марта 2020

Вы должны передать параметр service обоим конечным точкам /login и /logout, чтобы указать CAS перенаправить пользователей на указанный URL-адрес службы после успешного входа / выхода из системы.

При условии, что сервер CAS доступен на https://cas.example.com, URL для входа / выхода должны быть следующими:

Логин:

https://cas.example.com/login?service=https://myservice.example.com

Выход из системы:

https://cas.example.com/logout?service=https://myservice.example.com

В обоих случаях следует избегать обслуживания URL-адресов.

Другой вариант будет определять URL-адреса перенаправления по умолчанию для конечных точек входа / выхода в конфигурации сервера CAS. Таким образом, нет необходимости указывать параметр service для вышеуказанных конечных точек. Найдите ниже соответствующие свойства:

cas.logout.redirectUrl=your_service_url
cas.view.defaultRedirectUrl=your_service_url

Примечание: Что касается URL перенаправления выхода из системы, по умолчанию CAS не разрешает перенаправления при выходе из системы. Чтобы изменить это поведение, вы должны включить свойство cas.logout.followServiceRedirects. Подробнее здесь .

По приведенным выше рекомендациям я предполагаю, что у вас есть полный доступ к серверу CAS.

...