5

Próbuję uzyskać konfigurację Oauth2 bezpieczeństwa wiosennego w mojej aplikacji w aparacie aplikacji Google. Wszystko wydaje się działać dobrze lokalnie, ale kiedy wdrażam do silnika aplikacji, wszystko zaczyna się załamać. Po tym, jak uwierzytelniam się przez google, przekierowuję mnie na stronę błędu Whitelabel. W konsoli widzę ten błąd:Włączanie Oauth2sso w Google App Engine

http://my-application.appspot.com/login?state=t…m&session_state=8b67f5df659a8324430803973b9e1726e39fd454..1ae3&prompt=none 
401 (Unauthorized) 

konfiguracji i moje uwierzytelniania z tym application.yml pliku:

security: 
    oauth2: 
client: 
    clientId: client-key 
    clientSecret: secret-key 
    accessTokenUri: https://www.googleapis.com/oauth2/v4/token 
    userAuthorizationUri: https://accounts.google.com/o/oauth2/v2/auth 
    clientAuthenticationScheme: form 
    scope: 
    - openid 
    - email 
    - profile 
    - https://www.googleapis.com/auth/cloud-platform 
resource: 
    userInfoUri: https://www.googleapis.com/oauth2/v3/userinfo 
    preferTokenInfo: true 

Mój config bezpieczeństwo wygląda somethign tak:

@Override 
protected void configure(HttpSecurity http) throws Exception { 
    http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()) 
     .and() 
      .authorizeRequests() 
      .antMatchers("/static/**").permitAll() 
      .antMatchers("/**").hasAuthority("ROLE_ADMIN") 
      .anyRequest().authenticated() 
     .and() 
      .exceptionHandling() 
      .accessDeniedPage("/403"); 
} 

mam skonfigurował identyfikator Oauth na stronach referencyjnych google, aby zezwolić na autoryzowane pochodzenie języka javascript:

http://my-application.appspot.com 
https://my-application.appspot.com 
http://localhost:8080 

i autoryzowanym URI przekierowanie do:

http://my-application.appspot.com/login 
https://my-application.appspot.com/login 
http://localhost:8080/login 

Jakieś pomysły dlaczego mógłbym być coraz nieautoryzowanych błędy raz wdrożyć do GAE?

Dzięki,

Craig

+0

Czy jesteś pewien, że użytkownik próbujesz uwierzytelnienie ma "ROLE_ADMIN" władzę? –

+0

Pozytywna. Próbowałem rozebrać to i pozostawiając go z uwierzytelnianiem oauth na wszystkich stronach i nadal daje ten sam błąd. – craigtb

+0

Jeśli to możliwe, możesz udostępnić minimalny, powtarzalny przykładowy projekt na GitHub? –

Odpowiedz

2

problem jest o autoryzacji, może brakowało krok na całkowicie upoważniająca aplikacji, takich jak ruch client_secret.json do katalogu roboczego.

https://developers.google.com/drive/v3/web/quickstart/java#step_1_turn_on_the_api_name

Krok 1: Włącz API Dysk

  1. korzystać z tego kreatora, aby utworzyć lub wybrać projekt w Google Developers Console i automatycznie włączyć API. Kliknij przycisk Kontynuuj, a następnie Idź do poświadczeń. Na stronie Dodaj poświadczenia do strony projektu kliknij przycisk Anuluj.

    1. U góry strony wybierz kartę ekranu zgody OAuth. Wybierz adres e-mail, wprowadź nazwę produktu, jeśli nie jest jeszcze ustawiona, a następnie kliknij przycisk Zapisz, a następnie kliknij przycisk . Wybierz kartę Poświadczenia, kliknij przycisk Utwórz poświadczenia i wybierz identyfikator klienta OAuth.

    2. Wybierz typ aplikacji Inne, wprowadź nazwę "Drive API Quickstart" i kliknij przycisk Utwórz.

    3. Kliknij przycisk OK, aby zamknąć wyświetlone okno dialogowe.

    4. Kliknij przycisk file_download (Pobierz JSON) po prawej stronie identyfikatora klienta .

    5. Przenieś ten plik do swojego katalogu roboczego i zmień jego nazwę na client_secret.json.

pomocny Link: GCM http 401 authorization error

+0

Zostało to rozwiązane przez użycie tylko jednej instancji. Wygląda na to, że uwierzytelnianie nie przechodzi przez serwery. Nie miałem jeszcze okazji na to spojrzeć. – craigtb