parent
79dca94ce1
commit
31d5b5068c
|
@ -21,7 +21,10 @@ You will need to replace the `client-id` and `client-secret` with values registe
|
|||
|
||||
The next step is to instruct Spring Security that you wish to act as an OAuth2 Client so that you can obtain an access token.
|
||||
|
||||
[source,java]
|
||||
.OAuth2 Client
|
||||
====
|
||||
.Java
|
||||
[source,java,role="primary"]
|
||||
----
|
||||
@Bean
|
||||
SecurityWebFilterChain configure(ServerHttpSecurity http) throws Exception {
|
||||
|
@ -32,4 +35,18 @@ SecurityWebFilterChain configure(ServerHttpSecurity http) throws Exception {
|
|||
}
|
||||
----
|
||||
|
||||
|
||||
.Kotlin
|
||||
[source,kotlin,role="secondary"]
|
||||
----
|
||||
@Bean
|
||||
fun webFilterChain(http: ServerHttpSecurity): SecurityWebFilterChain {
|
||||
return http {
|
||||
// ...
|
||||
oauth2Client { }
|
||||
}
|
||||
}
|
||||
----
|
||||
====
|
||||
|
||||
You can now leverage Spring Security's <<webclient>> or <<webflux-roac,@RegisteredOAuth2AuthorizedClient>> support to obtain and use the access token.
|
||||
|
|
|
@ -122,7 +122,10 @@ The `client-id` and `client-secret` are linked to the provider because `keycloak
|
|||
|
||||
A minimal OAuth2 Login configuration is shown below:
|
||||
|
||||
[source,java]
|
||||
.Minimal OAuth2 Login
|
||||
====
|
||||
.Java
|
||||
[source,java,role="primary"]
|
||||
----
|
||||
@Bean
|
||||
ReactiveClientRegistrationRepository clientRegistrations() {
|
||||
|
@ -143,9 +146,34 @@ SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
|
|||
}
|
||||
----
|
||||
|
||||
.Kotlin
|
||||
[source,kotlin,role="secondary"]
|
||||
----
|
||||
@Bean
|
||||
fun clientRegistrations(): ReactiveClientRegistrationRepository {
|
||||
val clientRegistration: ClientRegistration = ClientRegistrations
|
||||
.fromIssuerLocation("https://idp.example.com/auth/realms/demo")
|
||||
.clientId("spring-security")
|
||||
.clientSecret("6cea952f-10d0-4d00-ac79-cc865820dc2c")
|
||||
.build()
|
||||
return InMemoryReactiveClientRegistrationRepository(clientRegistration)
|
||||
}
|
||||
|
||||
@Bean
|
||||
fun webFilterChain(http: ServerHttpSecurity): SecurityWebFilterChain {
|
||||
return http {
|
||||
oauth2Login { }
|
||||
}
|
||||
}
|
||||
----
|
||||
====
|
||||
|
||||
Additional configuration options can be seen below:
|
||||
|
||||
[source,java]
|
||||
.Advanced OAuth2 Login
|
||||
====
|
||||
.Java
|
||||
[source,java,role="primary"]
|
||||
----
|
||||
@Bean
|
||||
SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
|
||||
|
@ -161,9 +189,29 @@ SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
|
|||
}
|
||||
----
|
||||
|
||||
.Kotlin
|
||||
[source,kotlin,role="secondary"]
|
||||
----
|
||||
@Bean
|
||||
fun webFilterChain(http: ServerHttpSecurity): SecurityWebFilterChain {
|
||||
return http {
|
||||
oauth2Login {
|
||||
authenticationConverter = converter
|
||||
authenticationManager = manager
|
||||
authorizedClientRepository = authorizedClients
|
||||
clientRegistrationRepository = clientRegistration
|
||||
}
|
||||
}
|
||||
}
|
||||
----
|
||||
====
|
||||
|
||||
You may register a `GrantedAuthoritiesMapper` `@Bean` to have it automatically applied to the default configuration, as shown in the following example:
|
||||
|
||||
[source,java]
|
||||
.GrantedAuthoritiesMapper Bean
|
||||
====
|
||||
.Java
|
||||
[source,java,role="primary"]
|
||||
----
|
||||
@Bean
|
||||
public GrantedAuthoritiesMapper userAuthoritiesMapper() {
|
||||
|
@ -178,3 +226,20 @@ SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
|
|||
return http.build();
|
||||
}
|
||||
----
|
||||
|
||||
.Kotlin
|
||||
[source,kotlin,role="secondary"]
|
||||
----
|
||||
@Bean
|
||||
fun userAuthoritiesMapper(): GrantedAuthoritiesMapper {
|
||||
// ...
|
||||
}
|
||||
|
||||
@Bean
|
||||
fun webFilterChain(http: ServerHttpSecurity): SecurityWebFilterChain {
|
||||
return http {
|
||||
oauth2Login { }
|
||||
}
|
||||
}
|
||||
----
|
||||
====
|
||||
|
|
Loading…
Reference in New Issue