Использование JWT в Postman (oauth2 от Google с реализацией на Spring)

Необходимо защитить приложение путём добавления Oauth 2.0 с использованием Google. В https://console.cloud.google.com/ прописал следующие URI:
https://oauth.pstmn.io/v1/callback
https://www.getpostman.com/oauth2/callback
http://localhost:8080/login/oauth2/code/google
http://localhost:8888/login/oauth2/code/google

В application.properties указал:

spring.security.oauth2.client.registration.google.client-secret=*******  
spring.security.oauth2.client.registration.google.accessTokenUri=https://www.googleapis.com/oauth2/v3/token  
spring.security.oauth2.client.registration.google.userAuthorizationUri=https://accounts.google.com/o/oauth2/auth

Ну и минимальную конфигурацию в файле SecurityConfig.java:

@Configuration
@EnableWebSecurity(debug = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
    
    http.
        authorizeRequests()
        .anyRequest().authenticated()
        .and()
        .oauth2Login();
    }
}
  1. Далее формирую POST-запрос на https://www.googleapis.com/oauth2/v3/tokeninfo Тут два варианта:
  • если прописать параметр access_token, то получаю в ответ следующий набор полей в формате JSON (лишнее позакрывал знаками "-------"):
{  
"azp": "-------.apps.googleusercontent.com",  
"aud": "-------.apps.googleusercontent.com",  
"sub": "-------",  
"scope": "openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email",  
"exp": "1626918989",  
"expires_in": "3426",  
"email": "-------",  
"email_verified": "true",  
"access_type": "online"  
}
  • а вот если уже прописать параметр id_token, то получаю как раз сам JWT, судя по последнему полю:
{  
"iss": "accounts.google.com", 
"azp": "-------.apps.googleusercontent.com",  
"aud": "-------.apps.googleusercontent.com",  
"sub": "-------",  
"email": "-------",  
"email_verified": "true",  
"at_hash": "-------",  
"iat": "1626914999",  
"exp": "1626918599",  
"alg": "RS256",  
"kid": "-------",  
"typ": "JWT"  
}

И теперь непосредственно сам вопрос: КАК ЕГО ИСПОЛЬЗОВАТЬ? Пытаюсь обратиться к ресурсу GET-запросом http://localhost:8888/catalog/expenses/types. Указываю в заголовках Authorization со значением Bearer с полем ... каким? Что я туда только не подставлял. Ни один, ни другой коды, полученные в конце первого пункта, конечно же, не работают. Ни одно поле из ответа с параметром access_token из второго пункта также не работает. Ровно как и с параметром id_token.

Как рассуждаю: раз получаю "typ": "JWT" в качестве последнего поля по запросу с id_token, то это как раз то, что мне нужно. Из представленных полей интересуют разве что поля "sub" и "kid". Также видел тут, что нужно токен вставлять в заголовок в закодированном base64 виде формата email:code. Что я только не использовал в качестве заголовка - результат один - меня Postman не пускает к ресурсу, выкидывая HTML-код страницы авторизации. Где я не так мыслю? И что нужно использовать в качестве значения, указываемого в заголовке Authorization?


Ответы (0 шт):