Search code examples
oauth-2.0spring-security-oauth2spring-oauth2oauth2client

Spring Boot + Security OAuth2.0 Client with Custom Provider


I am creating a OAuth2.0 client for a custom OAuth2 provider in Spring Boot + Security (version 5) application.

Below is the application.properties which has all the configuration and there is no additional configuration class in my project.

spring.security.oauth2.client.registration.xxxxxxxxx.client-id=XXXXXXXXXX
spring.security.oauth2.client.registration.xxxxxxxxx.client-secret=XXXXXXXXXX
spring.security.oauth2.client.registration.xxxxxxxxx.scope=openid
spring.security.oauth2.client.registration.xxxxxxxxx.redirect-uri-template=http://localhost:8080/login/oauth2/code/xxxxxxxxx
spring.security.oauth2.client.registration.xxxxxxxxx.client-name=xxxxxxxxx
spring.security.oauth2.client.registration.xxxxxxxxx.provider=xxxxxxxxx
spring.security.oauth2.client.registration.xxxxxxxxx.client-authentication-method=basic
spring.security.oauth2.client.registration.xxxxxxxxx.authorization-grant-type=authorization_code

spring.security.oauth2.client.provider.xxxxxxxxx.authorization-uri=https://api.xxxxxxxxx.com/authorize
spring.security.oauth2.client.provider.xxxxxxxxx.token-uri=https://api.xxxxxxxxx.com/token
spring.security.oauth2.client.provider.xxxxxxxxx.user-info-uri=https://api.xxxxxxxxx.com/userinfo?schema=openid
spring.security.oauth2.client.provider.xxxxxxxxx.user-name-attribute=name
spring.security.oauth2.client.provider.xxxxxxxxx.user-info-authentication-method=header

When i hit http://localhost:8080/ it redirects properly to provider's login page and after successful login it redirects back to my application.

Now the problem is when it redirects then it shows below error message. enter image description here

I have googled for this error but didn't get any proper answer. Also, the OAuth2 provider didn't share such URL.

After research I came to know that i need to set below property. Should it be provided by Auth Provider? spring.security.oauth2.client.provider.pepstores.jwk-set-uri

What exactly I am missing here in configuration?


Solution

  • Finally, the problem is solved. I just need to configure the jwk URI which should be provided by the Auth provider. Below the final configuration for customer Auth Provider.

    spring.security.oauth2.client.registration.xxxxxxxxx.client-id=XXXXXXXXXX
    spring.security.oauth2.client.registration.xxxxxxxxx.client-secret=XXXXXXXXXX
    spring.security.oauth2.client.registration.xxxxxxxxx.scope=openid
    spring.security.oauth2.client.registration.xxxxxxxxx.redirect-uri-template=http://localhost:8080/login/oauth2/code/xxxxxxxxx
    spring.security.oauth2.client.registration.xxxxxxxxx.client-name=xxxxxxxxx
    spring.security.oauth2.client.registration.xxxxxxxxx.provider=xxxxxxxxx
    spring.security.oauth2.client.registration.xxxxxxxxx.client-authentication-method=basic
    spring.security.oauth2.client.registration.xxxxxxxxx.authorization-grant-type=authorization_code
    
    spring.security.oauth2.client.provider.xxxxxxxxx.authorization-uri=https://api.xxxxxxxxx.com/authorize
    spring.security.oauth2.client.provider.xxxxxxxxx.token-uri=https://api.xxxxxxxxx.com/token
    spring.security.oauth2.client.provider.xxxxxxxxx.user-info-uri=https://api.xxxxxxxxx.com/userinfo?schema=openid
    spring.security.oauth2.client.provider.xxxxxxxxx.user-name-attribute=name
    spring.security.oauth2.client.provider.xxxxxxxxx.user-info-authentication-method=header
    spring.security.oauth2.client.provider.xxxxxxxxx.jwk-set-uri=https://api.xxxxxxxxx.com/jwks
    

    Thanks