web-dev-qa-db-ja.com

更新トークンAPIを保護する方法は?

私はauthで2つのAPIを使用しています:

  1. api/auth/newtoken:ユーザーの検証に成功し(DBでのユーザー名とパスワードのチェック)、token(3日で有効期限切れ)とrefreshTokenを返します。
  2. api/auth/updatetoken:トークンの有効期限が切れたら、refreshTokenを指定してこのAPIを呼び出し、新しいtokenを取得します。

api/auth/updatetoken AP​​Iを保護するにはどうすればよいですか?現在のところ、これらのAPIはAndroidアプリケーション用であり、アプリケーションを逆コンパイルすると、これらのAPIを簡単に取得できます。

このAPIを保護するためのより良いアプローチは何ですか?

2
iam batman

APIに接続できるすべてのデバイスを制御しない限り、APIを「保護」する方法はありません。インターネット経由で接続するユーザー所有のデバイスによる使用を許可するAPIの場合、誰でも何でも送信できると想定する必要があります。

ここには2つの選択肢があります-

  • トークンを期限切れにしないで、uptatetoken呼び出しを破棄してください。
  • updatetokenには既存の有効なトークンが必要です。有効期限が切れている場合は、newtokenを再度呼び出し、ユーザーを再認証する必要があります。

個人的には、Webブラウザークライアントがない場合(および1つでも-Webブラウザークライアントに有効期限切れのトークンを与えるだけ)、最初のものをお勧めします。トークンは、クライアントのデバイスにのみ存在する必要があり-デバイスのキーチェーンに格納されているため、安全でなければなりません。一方、誰かがそれを傍受した場合は、自分でupdatetokenを呼び出して、期限切れを停止できます。

2
Hector