Новое в Symfony 6.3 — Обработчик токена OpenID Connect
В 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 с документацией по этой функции.