2011-06-20 16 views
4

私は、ユーザー名/パスワードSpringSecurity設定を使用する実用的なWebアプリケーションを持っています。今私はそれを簡単なFacebookアプリケーションに移植したいと思っています。何らかの理由で、返されたfacebookアクセストークンを使用して認証を行い、ユーザー名とパスワードのバリデーターを保持したいと考えています。詳細はFacebook認証をFacebook SecurityのSpring Securityに統合する

、私はで返され、認証のためにユーザーのFacebookのアクセストークンをチェックします:

https://graph.facebook.com/oauth/access_token?client_id=[my_api_key]&redirect_uri=[my_redirect_uri]&client_secret=[my_api_secret]&code=[code]

ユーザーが、彼らはすでに、Facebookのアカウントでログインしているので任意のユーザー名/パスワードを入力する必要はありません。しかし、私は(ユーザー名/パスワード)春のセキュリティ構成を維持して、ユーザーがオリジナルのWebサイトにサインインできるようにしたいと思います。

この種の認証はSpringSecurityでサポートされていますか?答えが「はい」の場合、どのように実行できるのだろうか?カスタム認証プロバイダを作成してそれを行う必要がありますか?

UPDATE:最後に、我々はそれが(formLoginFilterとしてそれを宣言する)UsernamePasswordAuthenticationFilterを拡張することで、認証パラメータとしてaccess_tokenは受け入れるように、道のSpringSecurityの認証をカスタマイズしてい

+0

@HaveAGuess:私は問題の私の答えを更新しました。 –

答えて

9

春から別のプロジェクトがあります:Spring Socialました非常に便利です。

複数のソーシャルネットワークをサポートしています。私は正常にFacebookに認証するためにそれを使用しました。私はその後、私の春のセキュリティコンテキストにFacebookのユーザーをログに記録する小さな関数を書いた:

protected void authenticate(UserDTO user){ 
    SecurityContextHolder.getContext().getAuthentication(); 
    UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(user.getUsername(), user.getPassword()); 
    token.setDetails(new WebAuthenticationDetails(getRequest())); 
    Authentication authentication = authenticationManager.authenticate(token); 
    SecurityContextHolder.getContext().setAuthentication(authentication); 
} 

UserDTOは、ユーザ名と(生成)パスワード属性を持っている必要があり、データベースに保存する必要があるので、あなたのuser-serviceは(春のセキュリティから)はそれを取得できます。あなたは正しい道に沿って考えている

+0

Bart Vangeneugdenは動作していません...エラーを表示しています。私は春のAPIも含んでいます。追加されるAPIもあります – lulu

関連する問題