- replace any spring-addons starter with
com.c4-soft.springaddons:spring-addons-starter-oidc
- replace any spring-addons test starter with
com.c4-soft.springaddons:spring-addons-starter-oidc-test
- depending or your needs, add a dependency to
org.springframework.boot:spring-boot-starter-oauth2-resource-server
for a REST API secured with access tokensorg.springframework.boot:spring-boot-starter-oauth2-client
when configuringspring-cloud-gateway
as BFF or exposing server-side rendered templates with frameworks like Thymeleaf- both of above when exposing publicly both a REST API secured with access tokens and other resources secured with sessions
- rename
SpringAddonsSecurityProperties
toSpringAddonsOidcProperties
. Also, if using nested properties, renamegetIssuers()
togetOps()
getLocation()
togetIss()
- replace
SpringAddonsOAuth2ClientProperties
withSpringAddonsOidcProperties::getClient
(onlySpringAddonsOidcProperties
can be autowired) - organize imports
- replace
@AutoConfigureAddonsSecurity
with@AutoConfigureAddonsMinimalSecurity
- replace
@AutoConfigureAddonsWebSecurity
with one of:@AutoConfigureAddonsWebmvcSecurity
@AutoConfigureAddonsWefluxSecurity
This is probably the most tedious part of the migration. Hopefully, your IDE auto-completion and syntax highliting should help you there.
- rename
com.c4-soft.springaddons.security
tocom.c4-soft.springaddons.oidc
- rename
issuers
toops
which stands for OpenID Providers (com.c4-soft.springaddons.security.issuers
becomescom.c4-soft.springaddons.oidc.ops
) - rename OpenID Providers
location
toiss
: if set, the is used to add an "issuer" (tokensiss
claim) validator to JWT decoder (com.c4-soft.springaddons.security.issuers[].location
becomescom.c4-soft.springaddons.oidc.ops[].iss
) - rename
audience
toaud
: if set, the is used to add an "audience" (tokensaud
claim) validator to JWT decoder (com.c4-soft.springaddons.security.issuers[].aud
becomescom.c4-soft.springaddons.oidc.ops[].aud
)
CORS configuration has also improved for both clients and resource servers: allowed-origin-patterns
is used instead of allowed-origins
. This is a requirement for using allow-credentials
and is also more flexible: you can define ant patterns like https://*.my-domain.pf
.
- rename
allowed-origins
toallowed-origin-patterns
- add
allow-credentials
andmax-age
if it makes sens (this are added configuration options)
Resource server Security(Web)FilterChain
can now be completely disabled with com.c4-soft.springaddons.security.resourceserver.enabled=false
Resource server specific properties are grouped in a new resourceserver
subset:
- move
cors
down 1 level intoresourceserver
(com.c4-soft.springaddons.security.cors
becomescom.c4-soft.springaddons.oidc.resourceserver.cors
) - move
permit-all
down one level toresourceserver
(com.c4-soft.springaddons.security.permit-all
becomescom.c4-soft.springaddons.oidc.resourceserver.permit-all
)
- rename
allowed-origins
toallowed-origin-patterns
(com.c4-soft.springaddons.security.client.cors.allowed-origins
becomescom.c4-soft.springaddons.security.client.cors.allowed-origin-patterns
) oauth2-logout
is now a map indexed by client registraion ID instead of being an array. Useclient-registration-id
as key for each entry for the remaining properties. For instance:
oauth2-logout:
- client-registration-id: cognito-confidential-user
uri: https://spring-addons.auth.us-west-2.amazoncognito.com/logout
client-id-request-param: client_id
post-logout-uri-request-param: logout_uri
- client-registration-id: auth0-confidential-user
uri: ${auth0-issuer}v2/logout
client-id-request-param: client_id
post-logout-uri-request-param: returnTo
becomes
oauth2-logout:
cognito-confidential-user:
uri: https://spring-addons.auth.us-west-2.amazoncognito.com/logout
client-id-request-param: client_id
post-logout-uri-request-param: logout_uri
auth0-confidential-user:
uri: ${auth0-issuer}v2/logout
client-id-request-param: client_id
post-logout-uri-request-param: returnTo
where cognito
and auth0
are the values of spring.security.oauth2.client.registration.cognito-confidential-user.provider
and spring.security.oauth2.client.registration.auth0-confidential-user.provider