Использование 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();
}
}
- Далее формирую 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?