0

ユーザー関連の情報のために、認証サーバーが(個別のリソースサーバー上の)保護されたリソースにアクセスする必要があるシナリオがあります。この保護されたリソースにアクセスするには、アクセストークンが必要です。私はTokenGranterによってこのトークンを手動で生成し、それをRest Templateによって作られたリクエストのヘッダに加えました。リソースにアクセスすると、認可サーバーでトークンを認証します。認証サーバーから保護されたリソースへのアクセス

私の問題は、アクセストークンが現在データベースに生成されていても、リソースにアクセスしようとするとアクセスが拒否され続けることです。

リソースへのアクセスに問題がありますか?認可サーバーから保護されたリソースにアクセスする方法以下は

は、リソースを要求するために、認可、残りのコントローラで使用されるコードです:

private final OAuth2TokenGranter tg; 
TokenRequest tr = new TokenRequest(reqparams, clientId, scope, grantType); 

OAuth2AccessToken grantToken = tg.grant("bearer", tr); 

String token = "Bearer " + grantToken.getValue(); 

RestTemplate restTemplate = new RestTemplate(); 
HttpHeaders headers = new HttpHeaders(); 
headers.set("Authorization", token); 
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON)); 

HttpEntity<String> entity = new HttpEntity<String>(headers); 
restTemplate.exchange(url, HttpMethod.GET, entity, PagedResources.class, authentication.getName()); 

答えて

0

多くのことが間違っている可能性があります。まず、リソースサーバがアクセストークンに必要とするもの(必要なスコープなど)を確認してください。正しいスコープでアクセストークンを生成してください。また、ユーザーリソースにアクセスするためにアクセストークンが必要であると述べました。私は使用しているOAuth2TokenGranterに精通していませんが、生成されたアクセストークンがユーザ認証にリンクされていることを確認してください。トークン・グラントがアクセス・トークンを生成した可能性がありますが、それがユーザー許可にリンクされていない場合、認証サーバーは不完全な情報を含むリソース・サーバーの照会に応答し、リソース・サーバーは要求アクセスを拒否します。

関連する問題