現在、新しいAPIを保護し、必要な機能を安全に提供する方法が不明なOAuth2を実装中です。私たちは、モバイルデバイスから次許可する必要があります。すぐにユーザーが写真を撮ると、最初のログにせずにそれを提出することができ、アプリをダウンロードした後OAuth2を使用してモバイルアクセスを安全に認証するオプション
を
我々はしたいものの特定の機能を使用するためにログインまたは登録する必要がない匿名ユーザーのアクセスを許可するため、APIへの認証されていないアクセスを許可したくありません。これは通常、client credentials authorization flowを使用して達成され、アプリケーションアクセストークンを取得しますが、これにはクライアントの秘密を知る必要があります。私が読んだところでは、モバイルデバイスは信頼できるクライアントとはみなされず、クライアントシークレットを含むべきではないため、独自のアプリケーションアクセストークンを生成できません。
私たちは、この要件を達成するためにいくつかのオプションを作ってみたが、それらのいくつかの入力をしたいと思います:
- は、アプリ内のクライアント秘密を埋め込みます。セキュリティの観点からは理想的ではないようですが、セキュリティを確保するための明白な方法がないのでしょうか?私たちは少なくともiOSとAndroidをターゲットにしています。
- アプリのアクセストークンをオフラインで生成し、アプリに埋め込みます。まだあまり安全ではありませんが、少なくとも秘密は公開されていません。
- アクセストークンではなくクライアントIDのみを使用して、特定の機能にアクセスできるようにします。これは最も簡単かもしれませんが、矛盾が生じ、クライアントの認証方法が複数必要です。
- コンパニオンウェブアプリを構築して使用して、モバイルアプリのアプリアクセストークンを生成します。表面は勝者のようですが、コンパニオンアプリへのアクセスを確保する必要があります。
モバイルデバイスからOAuth2を使用して初めてユーザーがログインすることなく、APIへのアクセスを安全に認証しますか?
?匿名アクセスが指定されているため、ユーザーを認証しようとしていません。あなたはクライアントアプリケーションを認証しようとしていますか?暗号化された接続を介して通信しようとしていますか? 「セキュア」はやや曖昧です。 – Fantius
「安全な」という言葉が最良の用語ではないかもしれません。私たちが望んでいないのは、APIへの匿名アクセスです。リクエストを出しているアプリを知りたいのです。私たちが望むのは、ユーザーがログインする必要がなくてもアプリケーションがリクエストを行うことができるようにすることです。質問を明確にしようと更新します。 –
その後、アプリには他に何もない秘密が必要です。これが唯一の方法です。何かがその秘密を取得した場合、それはアプリを偽装することができます。 – Fantius