To create an Authorization Server and grant access tokens you need to use
@EnableAuthorizationServer
and provide security.oauth2.client.client-id
and
security.oauth2.client.client-secret]
properties. The client will be registered for you
in an in-memory repository.
Having done that you will be able to use the client credentials to create an access token, for example:
$ curl client:secret@localhost:8080/oauth/token -d grant_type=password -d username=user -d password=pwd
The basic auth credentials for the /token
endpoint are the client-id
and
client-secret
. The user credentials are the normal Spring Security user details (which
default in Spring Boot to “user” and a random password).
To switch off the auto-configuration and configure the Authorization Server features
yourself just add a @Bean
of type AuthorizationServerConfigurer
.
If you use your own authorization server configuration to configure the list of
valid clients through an instance of ClientDetailsServiceConfigurer
as shown
below, take note that the passwords you configure here are subject to
the modernized password storage that came with
Spring Security 5. That means you have to prefix your passwords with an Id if
you use Spring Boot Securities defaults for password storage.
@Component public class CustomAuthorizationServerConfigurer extends AuthorizationServerConfigurerAdapter { @Override public void configure( ClientDetailsServiceConfigurer clients ) throws Exception { clients.inMemory() .withClient("client") .authorizedGrantTypes("password") .secret("{noop}secret") .scopes("all"); } }