4

私は現在、SpringSocialとSpringSecurityを使用してWebアプリケーションを開発しています。Webアプリケーションでは、特定のユーザーがを使用してFacebookにサインインできますProviderSignInController。スタッフがFBで正常に認証されると、SpringSecurityを使用してローカルWebアプリにプログラムでサインインします。このコンセプトは、spring-social-showcaseから採用されています。その後、Spring Socialは、認証されたユーザーがイベントを作成できるようにします。イベントは、Facebookページでも作成されます。

ここで、ユーザーがゲストブックに投稿したり、Webアプリケーションを介してイベントを表示/作成したりできるAndroidアプリを作成したいと思います。私の質問は、Androidアプリからサインインを実現する方法です。私のWebアプリケーションでは、UsersConnectionRepositoryFacebookアカウントをローカルアカウントにマップします。このデータを再利用して、AndroidアプリからWebアプリケーションとまったく同じ方法でサインインできますか? FacebookのサインインページにリダイレクトするProviderSignInControllerパスマッピングを追加します。http://_webapp_/signin/facebookこれはAndroidのWebViewで簡単に実行できますか?

春を見て-android-facebook- clientim混乱しています。この例では、OAuth認証を手動で管理しているようです。しかし、認証をすでに管理している他のWebアプリケーションがバックグラウンドにない場合、これが進むべき道なのか、それとも単に別の実装の可能性なのか、私はまだ理解していません。

フィードバックは大歓迎です。ありがとう。

Jeyp

4

1 に答える 1

7

ここで、ユーザーがゲストブックに投稿したり、Webアプリケーションを介してイベントを表示/作成したりできるAndroidアプリを作成したいと思います。

Androidクライアントには、セキュリティで保護されたRESTfulエンドポイントに投稿するために、Webアプリケーションにサインインする方法が必要です。OAuthはこれを行うための優れた方法です。Spring Security OAuthは、Spring Securityの拡張機能であり、サードパーティのモバイルクライアントまたはWebクライアントがWebサイトと対話できるようにします。

OAuthサーバーを構成したら、Androidクライアント内でSpring Socialを使用してカスタムプロバイダーを作成し、WebサイトへのOAuth接続を確立できます。この場合、ユーザーはローカル資格情報を使用してWebサイトに認証されます。接続すると、Androidアプリは、カスタムのSpring Social APIバインディングを使用して、Webサイト内のRESTfulエンドポイントにイベントを投稿できます。

このシナリオでは、ユーザーはAndroidアプリケーションからFacebookへの認証を行いません。これは、彼らがすでにあなたのウェブサイトでFacebookへのアカウントと接続を確立していることを前提としています。実際、これがSpringSourceGreenhouseリファレンスアプリケーションの動作方法です

これにより、質問の前の部分に戻ります。

スタッフがFBで正常に認証されると、SpringSecurityを使用してローカルWebアプリにプログラムでサインインします。

私が正しく理解している場合は、AndroidクライアントがFacebookのクレデンシャルを使用してサードパーティのWebサイトにアクセスすることを許可するように求めています。これは確かに可能ですが、現在、SpringSocialおよびSpringforAndroidではサポートされていません。

もう1つのオプションは、Webサイトのモバイルバージョンを検討することです。そうすれば、Androidやその他のモバイルデバイスは、Facebookのクレデンシャルを使用して、通常のブラウザーからのようにサイトに簡単にサインインできます。UIはモバイルデバイスにより適していて、追加のOAuthサーバー/クライアント構成の余分な複雑さを排除します。

そして最後に、あなたの質問の最後の部分に対処します。これは実際には前の部分とは別の問題です。

この例では、OAuth認証を手動で管理しているようです。

主な問題は、SpringSocialがResourceOwner Credentials Grant(ROCG)をまだサポートしていないことです。この機能を追加すると、ブラウザーのリダイレクトを処理する必要がなくなるため、AndroidでFacebookのアクセストークンを取得するプロセスが簡素化されます。詳細については、この春の社会問題を参照してください。

ROCGがないため、Spring for Androidサンプルアプリは、SpringSocialを使用してアクセストークンを取得する1つの方法を示しています。この場合、これはクライアント側の認証フローの修正バージョンです。参考までに、Facebookには、利用可能なすべての認証方法を説明する役立つページがあります。認証が成功すると、WebビューはURLにリダイレクトします。その時点で、アプリはこのURLからアクセストークンを取得できます。

SpringSourceは、認証を簡素化し、SpringSocialとSpringforAndroidの統合のこの部分を将来のリリースで改善する方法について話し合っています。

于 2012-07-13T16:52:45.830 に答える