2017-01-06 4 views
5

独自のロイヤルユーザベースを持つクロスプラットフォームWebアプリケーション(Web +モバイル)を開始することに興味があります(任意の良いアプリケーションとして)。クロスプラットフォームアプリケーション:Android +カスタムRESTバックエンド(Yii2)+ログイン用サードパーティSSOプロバイダ(Google+)

バックエンドはYii2フレームワーク(PHP)によって強化され、ユーザーによる認証(oAuth2アクセストークン)を必要とするいくつかのRESTエンドポイントを公開します。ユーザーは専用の「ログイン」APIエンドポイントを呼び出すことでアクセストークンを取得することができます。これは簡単な部分であり、この質問には関係しません。

私のアプリケーションのWebバージョンでは、外部のSSO(たとえばGoogle+)を使用してログインすることもできます。これにより、内部ユーザーデータベースに自動的に作成されます(外部のGoogle IDにも接続されます。同じユーザが同じ「内部」ユーザを自動的にログインさせる)。

これはweb + REST APIのペアでうまくいきますが、Androidを絵にすると複雑になり始めます。

Androidアプリケーションは、標準のAndroid SDKを使用してGoogle+プロフィールを通じてログインするオプションをユーザーに提供することができます。この方法でGoogleのIDを取得できます。しかし、問題は、内部データベースのユーザー名とパスワードをユーザーに要求せずに、REST APIによって発行されたアクセストークンに対して、Androidアプリケーションが持つGoogle IDを安全に交換する方法です(パスワードは最初のSSO中に自動生成されますエンドユーザは自分のパスワードを知らないので、Webプラットフォームとモバイルプラットフォームの両方にログインするためにSSOのみを使用します)。 Androidアプリが正しく認証して、AndroidアプリとRESTエンドポイントの間の通信を「ホワイトリスト」していると信じていれば、ここのキーワードは「安全」です(Androidアプリのみが知っている「サービスアクセストークン」など) )、潜在的なハッカーは、2人の間の通信をリバースエンジニアリングまたはスニッフィングすることができ、RESTエンドポイントを直接呼び出すことができ、同じ信頼できるアクセストークンを使用して自身を識別することができる。実際には、任意のランダムなユーザーのアクセストークンを取得します。

答えて

2

多分AccountManagerを使用しますか? https://developer.android.com/reference/android/accounts/AccountManager.html https://developer.android.com/training/id-auth/custom_auth.html

はその後、クレート独自のアカウントとは、ネイティブseciurityでネイティブandoridアカウントマネージャを使用できますか?

私のアプリでは、次のように使用します:Yii2 RestServiceではHttpBearerAuthを使用し、Andorid Appではログインとパスワードを使用してカスタムアカウントを作成し、このアカウントを使用してhttpリクエストを作成します。すべての資格情報はAndroidによって管理されます。

関連する問題