Konfiguracja oauth2 client w Spring Boot

Konfiguracja oauth2 client w Spring Boot
AL
  • Rejestracja:ponad 3 lata
  • Ostatnio:prawie 3 lata
  • Postów:5
0

Hej, jak powinna wyglądać konfiguracja oauth2 client w spring boocie?

W tej chwili mam taki plik application.yml:

Kopiuj
spring:
  security:
    oauth2:
      client:
        registration:
          example:
            client-id: ${EXAMPLE_CLIENT_ID}
            client-secret: ${EXAMPLE_CLIENT_SECRET}
            authorization-grant-type: authorization_code
            redirect-uri: '{baseUrl}/login/oauth2/code/'
            client-authentication-method: BASIC
            scope:
              - read
              - write
        provider:
          example:
            authorization-uri: 'example.com/oauth/authorize/'
            token-uri: 'example.com/api/open/oauth/token'
            user-info-uri: 'example.com/api/partner/users/me'
            user-info-authentication-method: BASIC
            userNameAttribute: id

I taką klasę konfiguracyjną:

Kopiuj
@Configuration
class SecurityConfiguration extends WebSecurityConfigurerAdapter {

  @Override
  protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
        .antMatchers("/home", "/login**","/callback/", "/webjars/**", "/error**", "/oauth2/authorization/**").permitAll()
        .anyRequest().authenticated().and()
        .oauth2Login()
            .successHandler(successHandler());
  }

  @Bean
  SimpleUrlAuthenticationSuccessHandler successHandler(){
    return new SimpleUrlAuthenticationSuccessHandler("/hello");
  }
}

I tak:

  1. loguje się -> leci GET pod:
Kopiuj
example.com/oauth/authorize/?response_type=code&client_id=id&scope=scope&state=state=&redirect_uri=moja-apka/login/oauth2/code/
  1. leci GET z odp 500:
Kopiuj
moja-apka/login/oauth2/code/?code=code&state=state

Czyli tutaj to wygląda git - wysłało get pod prawidłowo wygenerowany url, z example.com dostałem odpowiedź z code i state ale i tak:
3. zostaje przekierowany na Whitelabel Error Page

W logach widzę tylko, że gdzieś tam po drodze wyrzuciło:

org.springframework.http.converter.HttpMessageNotReadableException: An error occurred reading the OAuth 2.0 Error: errorCode cannot be empty; nested exception is java.lang.IllegalArgumentException: errorCode cannot be empty

edytowany 1x, ostatnio: ajj_lamo
PI
  • Rejestracja:ponad 9 lat
  • Ostatnio:4 miesiące
  • Postów:2787
1

A tylko tak zapytam - skoro to ma być client, to rozumiem, że server uwierzytelniający gdzieś tam jest już, tak?

AL
  • Rejestracja:ponad 3 lata
  • Ostatnio:prawie 3 lata
  • Postów:5
0

@Pinek: Tak, ofc. Konkretniej jest to API olxa, https://developer.olx.pl/api/doc#section/Authentication

Charles_Ray
  • Rejestracja:około 17 lat
  • Ostatnio:około 23 godziny
  • Postów:1875
0

Masz opisane w dokumentacji jak powinny wyglądać te requesty. W szczególności musi iść POST, aby dostać token, który potem umieszczasz w nagłówku Authorization (dodając „Bearer”).

Zobacz czy curlem dasz radę to ogarnąć, potem zajmij się konfiguracją w Springu.


”Engineering is easy. People are hard.” Bill Coughran
edytowany 1x, ostatnio: Charles_Ray

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.