2016-07-22 17 views
4

私はAndroidアプリを実装しており、ユーザーログインが必要です。これを行うために、ログインの目的で自分のオーセンティケーターを1回だけ作成します。 AccountManagerはアクセストークンを要求することができるため、アプリケーションはパスワードを直接処理しません。 AccountManagerは、ユーザーアカウントとトークンを格納します。アカウントマネージャーを使用してAndroidでJWT認証を実装する

私はREST APIでユーザーを認証するためにJWT(Json Web Token)を使用しています。

このフローが正しいのか、それともAndroidでこれを行うより良いアプローチがあるのだろうか。

  1. ユーザーが初めてで、ログイン画面でユーザーとパスワードを入力します。ここでは

    は、私が現在使用している流れです。

  2. アカウントマネージャーに保存されている有効なトークン(JWT)を取得するようにサーバーに要求します。

  3. その後のリクエストでは、受け取ったアクセストークンが有効期限(1時間)まで使用され、APIからコンテンツが取得されます。

  4. トークンの有効期限が切れた後、発行日から最大2週間後にリフレッシュできます。この時点から、新しいトークンを取得するためにユーザーの資格情報が必要になります。

この処理は、トークンを処理する正しい方法ですか、それをリフレッシュしますか?プロセスは安全ですか?他のオプションはありますか?

このフローでは、「更新トークン」を使用して新しいトークンを生成するのではなく、アクセストークンを生成することを考慮すると、Androidアカウントマネージャの最適な使い方は何ですか?他にどんなツールを使うべきですか? 「リフレッシュトークン」を実装するために、JWTに沿ったOauth2の実装をお勧めしますか?

乾杯!

+0

解決方法はありますか? – ezdookie

+0

@ezdookieいいえ、私は説明したようにシステムを実装しました –

答えて

1

あなたはJSON Webトークンを使用してそれを再現する正しい道にいると言えます。

しかし、あなたが言及した安全がすべてに約あなたが取得したトークンを暗号化し、その後AESまたはRSAなどお好みのいくつかの暗号化方式で(ユーザー資格情報と同じも)アカウントマネージャでそれを保存しています使用する場合は復号化してください。また、サーバーが生成した秘密鍵を秘密のアルゴリズムと共に使用することで、あらゆるハッカーのための攻撃が中止されます。

root権限を持つすべての人が、保存された資格情報データベースにアクセスして使用することができます。

このトリックを使用すると、リフレッシュトークンを含むOauth 2.0を使用する必要性が低くなります。

役に立ったら

関連する問題