2016-02-12 7 views
5

に、私は次のメソッドを持つAPIを持って呼び出します。ユーザーがモバイルアプリにログインするときは、APIへの呼び出しを行う必要があります。セキュアサードパーティのAPIは、モバイルアプリ

私はAPIキーが危険な状態で、誰もがそれを取ることができるデバイスに格納されるので、3つのモバイルアプリをそれぞれ一つの異なるAPIキーを提供し、それをHTTP基本認証を行うことは、安全ではないことを知っているとそれを悪用する。

OAuth2のアプローチは、3人の顧客の情報しか持たず、何百人ものユーザーがいないため、機能しません。

私のAPIへの携帯電話の呼び出しを保護する最良の方法は何ですか?

答えて

5

あなたのケースでは、OAuth2のアプローチは良いです。モバイルアプリ(クライアント)は、リソースサーバー(API)上の保護されたリソースを呼び出すために、リソース所有者(ユーザー)からの委任を受け取ります。

OAuth2はユーザーの認証専用ではなく、クライアントの承認専用であるため、クライアントに関する情報があります。 クライアントはクライアントIDで識別されます。あなたのケースでは、あなたのリソースサーバーを呼び出すクライアントを知りたい場合は、各クライアントに専用のクライアントIDが必要です。また、IPアドレスや送信する要求のカスタムヘッダーなどの他の情報を使用して識別することもできます。

あなたのユーザーを知りたい場合は、OpenID Connect拡張機能を実装する必要があります。この拡張機能は、OAuth2に基づく認証サーバーの上で動作します。 ユーザーの認証は、認証サーバーによって実行されます。 IDトークンは、ユーザーに関する情報とともに発行されます。クライアント(またはモバイルアプリ)は、ユーザーの資格情報を取得または格納する必要はありません。

excellent video where the both protocols are explained(特に4:44から11:00まで)があります。

+0

ありがとうございます!あなたは、OAuth2は私のクライアント(モバイルアプリ)の承認に専念していると言いました。この認証はどのように機能しますか?アプリごとにAPIキーまたはユーザー名/パスワードはありますか?もしそうなら、私たちはどのようにしてその情報を秘密にすることができますかどのユーザーであるかを知る必要はありませんが、クライアントが要求を送信するかどうかを知る必要があります。 – Arturo

+0

こんにちは。私は私の答えを更新し、詳細を追加しました。それがあなたを助けることを願っています –

関連する問題