Новое в Symfony 6.3 — Обработчик токена OpenID Connect

Источник: «New in Symfony 6.3: OpenID Connect Token Handler»
Symfony 6.3 добавляет совместимость с серверами OpenID Connect с помощью двух новых обработчиков токенов OIDC.

В Symfony 6.2 мы представили аутентификатор токена доступа, который может извлекать токены доступа из заголовков запроса, тела или строки запроса для получения ассоциированного идентификатора пользователя.

В Symfony 6.3 мы представляем реализацию этого механизма проверки подлинности для взаимодействия с серверами OpenID Connect. OpenID Connect (OIDC) — это треть поколение технологии OpenID, представляющее собой RESTFul HTTP API, использующий JSON в качестве формата данных.

OpenID Connect — это уровень авторизации поверх платформы OAuth 2.0. Это позволяет проверить личность конечного пользователя на основе аутентификации, выполненной сервером авторизации.

Во-первых, мы представили OidcUserInfoTokenHandler для вызова вашего сервера OIDC и получения информации о пользователе. Вам нужно только настроить следующее, и Symfony создаст HTTP-клиент для обработки HTTP-запросов, необходимых для аутентификации (конфигурация указана в, но XML и PHP также работают):

# config/packages/security.yaml
security:
firewalls:
main:
access_token:
token_handler:
oidc_user_info:
client:
base_uri: https://www.example.com/realms/demo/protocol/openid-connect/userinfo
# by default, the claim is 'sub'; use this option to customize it
# claim: 'email'

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

В дополнение к предыдущему обработчику токенов мы добавили универсальный OidcTokenHandler для декодирования вашего токена, его валидации и извлечения информации о пользователе. Это снова вопрос добавления нескольких строк конфигурации (в YAML, XML или PHP):

# config/packages/security.yaml
security:
firewalls:
main:
access_token:
token_handler:
oidc:
signature:
# Algorithm used to sign the JWS
algorithm: 'HS256'
# A JSON-encoded JWK
key: '{"kty":"...","k":"..."}'

Вот и всё. В Symfony 6.3 вы можете добавить совместимость с OpenID Connect в свои приложения всего несколькими строками конфигурации безопасности. Если хотите узнать больше прочтите Pull Request с документацией по этой функции.

Дополнительные материалы

Предыдущая Статья

Менеджеры паролей: Какой выбрать

Следующая Статья

Корпоративные менеджеры паролей