Данный Spring Boot Starter предназначен для упрощения взаимодействия с сервером авторизации на клиентской части в рамках Code Flow протокола OpenID Connect , подробнее: https://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth.
Он поддерживат автоматическую работу с токенами (обмен, проверка, обновление), имеет функционал отзыва токенов и упрощенную конфигурацию (по сравнению, например, с Spring Security).
Ссылка для redirect_uri всегда имеет следующий вид: http(s)://{gateway-address}/openid/authorize/{client_id}
Префикс для всех настроек: gatekeeper.
Ссылка на страницу - куда будет выполнена переадресация в случае ошибки (например, ID Token имеет неправильную подпись)
Ссылка на страницу аторизации
спецификация: https://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint
Ссылка на endpoint для обработки code и обмена токенов
спецификация: https://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint
Ссылка на endpoint для проверки access токенов
спецификация: https://tools.ietf.org/html/rfc7662#section-2
Ссылка на endpoint для отзыва токенов
спецификация: https://tools.ietf.org/html/rfc7009#section-2
Список клиентов
Идентификатор клиента (client_id), должен быть равен route id в настройках Spring Cloud Gateway для которого необходим Code Flow
Дополнительный scope клиента (можно не указывать, если требуется только openid, этот scope добавляется автоматичеки для всех клиентов)
Пароль клиента для обращения к API token/introspection/revocation (client_secret)
Secret для валидации ID Token по алгоритму HS256
Ссылка на страницу - куда будет выполнена переадресация в случае потери/отсутсвия первоначального запроса к Gateway
Принимает значения true или false. Если флаг активен, то после успешной аутентификации клиент получит редирект на default-page-uri
Описание конфигурации Spring Cloud Gateway: https://cloud.spring.io/spring-cloud-gateway/reference/html/#gateway-request-predicates-factories
spring:
cloud:
gateway:
routes:
- id: test-app
uri: http://web-application.com/
predicates:
- Path=/web-app/**
filters:
- StripPrefix=1
gatekeeper:
error-page-uri: "https://authorization-server/error"
authorization-page-uri: "https://authorization-server/login"
token-endpoint-uri: "https://authorization-server/openid/token"
introspection-endpoint-uri: "https://authorization-server/openid/check_token"
revocation-endpoint-uri: "https://authorization-server/openid/logout"
clients:
- id: test-app
scope: profile
password: A4aympy2hkiohobesqugbprkp
secret: T1x23hldjancmr3zooy7dlp8evkfkciz81c+y2z99oo=
default-page-uri: "https://gateway/web-app/main"