OAuth1.0aを使用してアプリケーションを認証するAPIがあります。これは、非推奨になっているカスタムビルドおよびhodge-podge呼び出しの数を使用していた古いAPIを置き換えています。
OAuth 1.0aは、コンシューマーシークレットが秘密に保たれていることに依存しているため、(クライアント側の)Javascriptでは安全ではないことはよく知られています。ソースは常に表示可能であるため、これは不可能です。
Chrome、Firefox、IE、Safari用のブラウザ拡張機能があり、将来このAPIを使用する必要があります。これらの拡張機能はすべてJavascriptで大部分または完全に記述されているため、セキュリティの問題があります。
これらの拡張機能は社内にあるため、アクセストークンを取得するためのカスタム認証方法を使用できます。
私が実装を計画しているのは次のとおりです。
- ユーザーはブラウザでWebサイトにログインします。
- Webサイトは、セッションキーを使用してCookieを発行します。
- 次に、拡張機能はそのCookieを取得し、それをAPIに渡します。
- APIは、それが有効でアクティブなセッションであることを検証し、拡張機能にアクセストークンを発行します。
- これらのトークンは、有効期限が切れる前に最大1時間持続します。
- また、JavaScriptで発行されたCookieにはレート制限が低くなります。
次の前提で動作します。
- 別のアプリケーションがあなたのCookieにアクセスできる場合、それらはとにかくWebサイトであなたになりすますことができるため、APIへのアクセスも同じです。
- すべての認証方法は、引き続き当社の管理下にあります。
- トークンの定期的な有効期限は、トークンが危険にさらされた場合、悪用される時間が限られていることを意味します。
私の質問は、これはAPIへのアクセスを制限する安全な方法ですか?より良いものはありますか?
いくつかのメモ。 Chrome拡張機能は、特定のサイトのCookieにアクセスするための許可を求めることができるという事実を知っています。Firefoxの拡張機能でもそうできると思います。
明らかに、どのページでもjavascriptを介してCookieにアクセスすることは望ましくありません。そうしないと、XSS攻撃にさらされるため、拡張機能を介してのみアクセスする必要があります。