[解決済み] OAuth 2.0におけるクライアントシークレット
質問
google drive apiを使用するために、OAuth2.0を使用した認証を行う必要があります。また、これに関していくつか質問があります。
-
Client id と client secret は、私のアプリが何であるかを識別するために使用されます。しかし、クライアント アプリケーションである場合、これらはハードコードされていなければなりません。そのため、誰でも私のアプリを逆コンパイルして、ソースコードからそれらを抽出することができます。 悪いアプリが、良いアプリのクライアントIDとシークレットを使って、良いアプリのふりをすることができるということでしょうか? つまり、悪いアプリに許可を求められても、良いアプリに許可を求める画面が表示されるのでしょうか?もしそうなら、私は何をすべきですか? または、実際にはこのことについて心配する必要はないのでしょうか?
-
モバイルアプリケーションでは、アプリにWebビューを埋め込むことができます。そして、許可を求めるアプリは実際にはブラウザであるため、Webviewのパスワードフィールドを抽出することは簡単です。 では、モバイルアプリケーションのOAuthには、クライアントアプリケーションがサービスプロバイダのユーザ証明書にアクセスできないという利点はないのですか?
どのように解決するのですか?
あなたの質問に対してコメントを書き始めましたが、あまりにも言いたいことがたくさんあることがわかったので、回答でこのテーマに対する私の見解を述べます。
-
はい、これには実際の可能性があり、これに基づいていくつかの悪用がありました。提案としては、アプリの秘密をアプリ内に保持しないことです。分散アプリはこのトークンを使用すべきではないという仕様の部分さえあります。しかし、XYZはこのトークンを必要とします。その場合、彼らは仕様を適切に実装していないので、Aそのサービスを使用しない(可能性は低い)か、B難読化メソッドを使用してトークンを確保し、発見されにくくするか、サーバーをプロキシとして使用する必要があります。
例えば、Android 用の Facebook ライブラリには、トークンをログに漏らしてしまうというバグがいくつかありました。 http://attack-secure.com/all-your-facebook-access-tokens-are-belong-to-us とこちら https://www.youtube.com/watch?v=twyL7Uxe6sk . 全体として、サードパーティライブラリの使用には特に注意が必要です(実際には常識ですが、トークンのハイジャックが大きな懸念事項である場合は、さらにもう1つ注意が必要です)。
-
私はかなり長い間、ポイント2についてわめき散らしてきました。私は、同意ページを修正するために、アプリでいくつかの回避策を実行しましたが (たとえば、アプリに合わせてズームやデザインを変更する)、ユーザー名とパスワードで Web ビュー内のフィールドから値を読み取ることを止めるものは何もありませんでした。したがって、私はあなたの2番目のポイントに完全に同意し、OAuth仕様の大きなバグであることを発見しました。つまり、OAuth仕様にある「アプリがユーザの認証情報にアクセスできない」というのは夢物語であり、ユーザに誤った安心感を与えてしまうということです...また、アプリがFacebookやTwitter、Dropboxなどの認証情報を聞いてきたら、普通は怪しむと思います。OAuthの仕様書を読んで「これで安心」と言う人はあまりいないと思いますが、常識的に考えて、信用できないアプリは使わないのが一般的でしょう。
関連
-
[解決済み] OpenIDとOAuthの違いは何ですか?
-
[解決済み】OAuth v2には、なぜアクセス・トークンとリフレッシュ・トークンの両方があるのでしょうか?
-
[解決済み】OAuth2.メリットとユースケース - なぜ?
-
[解決済み] SSOはCASかOAuthか?
-
[解決済み] Androidでアクセストークンとシークレットを安全に保存するには?
-
[解決済み] サーバー側に送信する前にパスワードをハッシュ化した方が良いですか?
-
[解決済み] なぜ、すべてをHTTPSにしないのか?
-
[解決済み] Firefoxの同一生成元ポリシーを無効にする
-
[解決済み] ステートレス(セッションレス)・クッキーレス認証を行うには?
-
[解決済み] ファイル暗号化におけるAESとBlowfishの比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] HTTPSのクエリ文字列は安全ですか?
-
[解決済み] サーバー側に送信する前にパスワードをハッシュ化した方が良いですか?
-
[解決済み] セッションハイジャックを防止する最善の方法は何ですか?
-
[解決済み] なぜ、すべてをHTTPSにしないのか?
-
[解決済み] Firefoxの同一生成元ポリシーを無効にする
-
[解決済み] PHP セッションセキュリティ
-
[解決済み] ステートレス(セッションレス)・クッキーレス認証を行うには?
-
[解決済み] ファイル暗号化におけるAESとBlowfishの比較
-
[解決済み] Firebaseのデータ改変を制限するには?
-
[解決済み] ポーカーボットを倒す