#php #laravel #api #authentication #office365
#php #ларавель #API #идентификация #офис365
Вопрос:
У нас есть эта система, к которой обращаются наши студенты, чтобы получить доступ к другим платформам, которые мы предоставляем, таким как Office 365 со студенческой лицензией и другими программами…
У нас есть доступ для создания этих ссылок доступа, создания маршрута и добавления некоторых доступных ТЕГОВ, которые они предоставляют, таких как электронная почта студента, уникальный код студента, мобильный телефон студента…
Эти ссылки работают как мост к нашему приложению Laravel 6.0, эта ссылка должна отправить учащегося на внутреннюю страницу, на которой он может создать свою учетную запись office 365 (если у них ее еще нет) и переопределить свои пароли, но проблема в том, что я не могу гарантировать, что этот зарегистрированный пользователь не изменит вручную (из инспектора разработчиков) данные, которые передаются из параметра маршрута, и получит доступ к другим данным учащихся и изменит свой пароль Office.
Дело в том, что я могу контролировать доступ к этой странице только по этому предыдущему URL (эта система, в которой зарегистрирован студент), и это работает, но я не могу использовать промежуточное программное обеспечение из своего приложения, которое проверяет, вошел ли пользователь в другое приложение, и у нас нет API для проверки подлинности из этой системы..
Есть ли какой-нибудь способ защитить наши маршруты от этой другой системы?
Метод контроллера, который получает эти параметры из другой системы и проверяет предыдущий URL-адрес:
public function index($ra, $email){ if(url()-gt;previous() != "https://other.system/" ){ return view('errors.503'); } $usuario = UsuariosMicrosoft::where('login', '=', $ra)-gt;get(); return view('portaloffice.pagina', compact('ra', 'email', 'usuario')); }
Это мой маршрут:
Route::get('office365/{ra}/{email}', 'PortalOfficePortalOfficeController@index')-gt;name('portaloffice.usuario');
Ответ №1:
Как правило, довольно плохая идея-защищать вещи, сохраняя URL-адреса в секрете. Их довольно легко обнюхать или угадать.
Обычно проекты защищаются от несанкционированного доступа с помощью Auth
защиты, а также с помощью взаимосвязи между моделью, которую вы пытаетесь защитить, и User
моделью.
После настройки моделей, отношений и охранников вы получите что-то подобное в своем контроллере:
$user = Auth::user(); $user-gt;UsuariosMicrosoft-gt;get() return $user;