私は春のセキュリティとのOAuth2を実装しようと、私は次のGithubに春が提供するサンプル検討してきた: https://github.com/spring-projects/spring-security-oauth/blob/master/samples/oauth2/tonr/src/main/java/org/springframework/security/oauth/examples/config/WebMvcConfig.java傷:いくつかのプロバイダのために使用したのと同じOAuth2ClientContext
をこれのOAuth2のサンプルが分割されます二つのプロジェクト:のOAuth2クライアント(OAuth2Client)と
- AuthorizationServer)
TonrはSparklrの写真を表示でき、アカウントの友人を一覧表示するFacebook APIクライアントも含まれています。 一度プロバイダから取得した場合、トークンが被呼プロバイダから来ていない場合でも、すべてのOAuth2プロバイダに同じトークンが送信されるようです。
ステップ:
- 私はtonr2にログイン(ローカルホスト:8080/tonr2/login.jspに)
- 私は(ローカルホストSparklrの写真に移動し、sparklr2てログイン:8080/tonr2/sparklr /写真&ローカルホスト:8080/sparklr2/login.jspに)
- 私はスコープリードを承認し、私は写真を参照してください。そして、私はFacebookの友達のページに移動し、[OK]
- を:localhostを:8080/tonr2/Facebookの/情報
sparklrトークンがFacebookに送信され(デバッグログに表示されます)、明らかにFacebookは400 Bad Request Errorを返します。
今のところ私はtonrからログアウトし、Facebookの友達ページに直接クリックしてもう一度ログインしてください。トークンはFacebookに尋ねられ、アクセスが許可されます。 同じOAuth2ClientContextと同じトークンがSparklrからFacebookに保存されます。
質問:そのそれぞれのリソースサーバとのトークンを維持するためにOAuth2ClientContextを分離する方法 ?
私はfacebookRestTemplateに異なるOAuth2ClientContext Beanをインスタンス化しようとしましたが、のOAuth2フローがで壊れている:
@Bean(name = "facebookClientContext")
public OAuth2ClientContext facebookClientContext() {
return new DefaultOAuth2ClientContext();
}
@Bean
public OAuth2RestTemplate facebookRestTemplate(@Qualifier("facebookClientContext") OAuth2ClientContext clientContext) {
...