Spring Security OAuth 2.0 и Apereo CAS

Фреймворк Spring Security позволяет реализовать авторизацию в приложении при помощи протокола OAuth 2.0. Провайдерами авторизации могут быть как общедоступные сервисы, вроде Google, Facebook или GitHub, так и персональные, реализованные, например, при помощи Apereo CAS.

Настройка поддержки OAuth 2.0 в сервере CAS

По умолчанию поддержка OAuth 2.0 в сервере CAS отключена, но её легко включить. Для этого в проект сервера потребуется добавить зависимость org.apereo.cas:cas-server-support-oauth-webflow:

Так же требуется настроить сервис, который будет использовать OAuth-авторизацию:

Обратите внимание на то, что свойство jsonFormat должно иметь значение true, так как Spring Security ожидает получить JSON при запросе ключа доступа.

Настройка Spring Security в клиентском приложении

В клиентском приложении на основе Spring Boot понадобятся две зависимости:

Допустим, наш сервер CAS имеет адрес example.com/cas, сконфигурируем поддержку OAuth в приложении согласно документации CAS и Spring Security:

Значения свойств client-id и client-secret должны соответствовать таковым в настройках сервиса в CAS. Обратите внимание, что в приведённом выше коде файла свойств в качестве provider_id и registration_id указано значение cas; по факту оно может быть любым, важно чтобы значения provider_id и registration_id совпадали. Так же идентификатор провайдера фигурирует в адресе перенаправления при успешной авторизации: redirect-uri-template: http://example.com/login/oauth2/code/cas.

Осталось включить поддержку OAuth в Spring Security:

Полезные ссылки