Как реализовать безопасность на странице, разделяемой токеном на Symfony3 - PullRequest
1 голос
/ 21 апреля 2020

Необходимость:

Мне нужно предоставить общий доступ к странице "client" для IS_AUTHENTICATED_ANONYMOUSLY пользователей моего приложения Symfony3.

Какие практические рекомендации для реализации это особенность?


Мои мысли:

  1. Specifi c контроль доступа в security.yaml

    access_control:

    - { path: {regex with token?}, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    
  2. Объект токена для хранения токена

  3. findOnBy с токеном, переданным в URL

    if(null === $token){
        throw new NotFoundHttpException('Page not found');
    }
    

Вопросы:

  1. Регулярное выражение не работает, что будет соответствующим регулярным выражением для case/{token}?
  2. У меня такое ощущение, что этот метод работает, но он не очень эффективен с точки зрения требований безопасности. Достаточно ли моей идеи для управления безопасностью этой функции? Что было бы лучше практики?

1 Ответ

1 голос
/ 21 апреля 2020

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

В основном вам нужно будет создать реализацию AuthenticatorInterface, которая обычно выполняется расширив AbstractGuardAuthenticator как описано здесь .

В вашем методе supports() вы, скорее всего, будете проверять наличие этого токена и, вероятно, тот маршрут, который вы действительно хотите защитить /authenticate.

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