前提・実現したいこと
Spring Boot OAuth2 をつかって、OAuth2のクライアント機能を作っています。
Authorization Codeの取得と、Access Tokenの取得までは問題なく動きます。
問題は、最後のUserinfoの取得時のGETリクエストにおいて、Bearerトークンを詰めたAuthenticationヘッダ以外に、
Consumerkeyヘッダをを含めないといけないサーバ仕様のため、その実装に難航しております。
発生している問題・エラーメッセージ
user-info-uriへのGETリクエスト時、任意のヘッダ(今回はConsumerkey)を含める方法がわかりません。
application.ymlの設定は以下の通りです。
XML
1spring: 2 security: 3 oauth2: 4 client: 5 registration: 6 hogehoge: 7 provider: hoge 8 client-id: hogehoge 9 client-secret: hogehoge 10 client-authentication-method: post 11 authorization-grant-type: authorization_code 12 redirect-uri: '{baseUrl}/login/oauth2/code/hogehoge' 13 provider: 14 hogehoge: 15 authorization-uri: https://example.com/authorize 16 token-uri: https://example.com/token 17 user-info-uri: https://example.com/userinfo 18 user-info-authentication-method: header 19 user-name-attribute: user_id
試したこと
Spring Boot OAuth2は内部でRestTemplateを使っているので、以下のようにインターセプターを定義しましたが、呼ばれず、
標準のAuthenticationヘッダしかリクエストに含まれません。
Java
1@Configuration 2public class RestTemplateConfig { 3 @Bean 4 public RestTemplate restTemplate() { 5 RestTemplate restTemplate = new RestTemplate(); 6 7 List<ClientHttpRequestInterceptor> interceptors = new ArrayList<>(); 8 interceptors.add(new RestTemplateHeaderModifierInterceptor()); 9 restTemplate.setInterceptors(interceptors); 10 return restTemplate; 11 } 12 13 private static class RestTemplateHeaderModifierInterceptor 14 implements ClientHttpRequestInterceptor { 15 @Override 16 public ClientHttpResponse intercept(HttpRequest request, 17 byte[] body, 18 ClientHttpRequestExecution execution) 19 throws IOException { 20 request.getHeaders().add("consumerKey", "hogehoge12345"); 21 return execution.execute(request, body); 22 } 23 } 24}
補足情報(FW/ツールのバージョンなど)
Spring Boot 2.2.5
Java 8
回答1件
あなたの回答
tips
プレビュー