5

salesforce-chatter APIとやりとりするクロム拡張を構築しています。しかし、oAuth(ユーザー・エージェント・フロー)認証を使用するユーザーの場合、クライアント鍵を自分のエクステンションに埋め込む必要があります。クライアントIDをクロム拡張子に埋め込む

セキュリティに問題がありますか?または、拡張機能にクライアントIDを埋め込まずにoAuthを使用する方法はありますか?

答えて

6

クライアントIDがリクエストに含まれている必要がありますので、プロバイダは@Matt Laceyが既に指摘しているようにリクエストがあなたのものであることを知っています。通常、プロバイダーはクライアント秘密のアクセストークンにも追加されているので、プロバイダはクライアントIDを使用することが許可されていることをプロバイダが確認できます。

Chrome拡張機能はオープンプラットフォーム上で実行されます。プラットフォーム自体は、拡張機能をサーバー(Salesforceもサポートする必要があります)に対して認証する方法や、プロパティを安全に保存する方法を提供していません。オープンプラットフォーム)ので、のクライアント秘密を秘密にすることは残念ながら不可能です。

これは一般的な問題であるため、すでにOAuth仕様(section 10.1 Client Authenticationおよび10.2 Client Impersonationを参照)で考慮されています。したがって、プロバイダは追加のチェックを行う必要がありますが、クライアント側では、セキュリティを効果的に向上させるために何もできません。

これが今後Android搭載デバイスでどのように処理されるかについてさらに詳しく知りたい場合は、私の回答hereをご覧ください。

2

拡張子にクライアントIDを埋め込んで、認証しようとしているアプリケーションをSalesforceに知らせる必要があります。これらのクライアントIDは、常に格納されてサーバーに渡されるため、安全な方法で保管しておけば問題ありません。

+0

「安全な方法で保存する」とはどういう意味ですか?あなたのアプローチは?私の内線番号は公開されます。ハッカーがただ自分の内線番号をコピーして、私の代わりにそれをインストールさせるとしたらどうでしょうか? –

0

Mattパッケージされたアプリを作成する場合は、クライアントIDを含める必要があります。別のソリューションは、ホストされたアプリとしてアプリを書くことです:

What is the difference between packaged apps and hosted apps?

これの欠点は、Webサーバーを管理する追加複雑です。しかし、それはより大きなセキュリティを可能にするでしょう。

+0

そして、あなたはどのようにWebサーバーへのクロムエクステンションを認証しますか?これは問題を「クライアント<-> Salesforce」から「クライアント<->サーバ」に移動するだけです。 –

+1

あなたはしません!クライアントからコードを実行しないでください。ホストされたアプリは実質的にクロームアプリストアラッパーのウェブアプリです。 –

+0

ごめんなさい@ダニエル、あなたの答えを誤解:/ –

関連する問題