5

Chrome 拡張機能で Firebase を認証するにはどうすればよいですか? Forge で許可されたドメイン リストを指定する必要があります。拡張機能の Chrome ドメインは、大きなハッシュのような文字列です。

私はこれを読みました: authClient.login の問題

しかし、Chrome 拡張機能のハッシュ ベースのドメインは、Firebase forge では受け入れられません。それについて別の方法はありますか?現在、ログインしていると想定するために CookiefirebaseSessionKeyを読み取っているだけですが、Firebase にこのセッション キーを検証させるほど安全ではありません。

4

2 に答える 2

8

Rob が指摘するように、認証は発信元の制限を強制しない環境では機能しません。ここでの根本的な問題は、認証プロバイダー (Facebook、Twitter、Persona、または独自のサービス) がブラウザーに ID を発行できないことです。つまり、Facebook を使用してブラウザー (または拡張機能) にログインしても意味がありません。

Firefox 用の F1 アドオンも同様の問題 ( http://f1.mozillamessaging.com/ ) に遭遇しました。F1 があなたに代わって twitter/facebook に投稿することを許可する場合です。拡張機能には Web サイトがあり、そこからログイン ページを提供し、Web ページで通常どおりに処理を進めました。Web ページと拡張機能の間で通信するためのコードが必要です。chrome は必要なツールを提供します。

同じアプローチをお勧めします - 実際のドメインで Web ページを作成します (これには Github ページが最適です)。これは、拡張機能がオフラインで動作できないことを意味しますが、ログインや Firebase への書き込みもできません!

于 2013-02-19T01:41:03.823 に答える
2

これは、相互認証を許可する唯一のものであると私が信じているGoogle Plus Login Flowを使用して機能するため、スコープはGoogle Plus Loginです。

「www[ドット]googleapis[ドット]com/auth/plus.login」

ここで何が起こっているかというと、chrome.identity.getAuthToken() から取得した access_token とともに、google をプロバイダーとして指定する authwihtoauthtoken を使用したリクエストで、firebase に送信する拡張機能から access_token を取得します!

https://www.firebase.com/docs/web/api/firebase/authwithoauthtoken.html

実際には、このアクセス トークンは他のアプリから発行される可能性があるため、それが有効であり、アプリに対して発行されていることを確認する必要があります。基本的に、アクセスしようとしている中間者がいないことを知る必要があります。私たちのデータベース。

この検証は、firebase によって行われています。

このトークンが、トークンが発行されたのと同じアプリケーションに属しているかどうかを確認します。

そのため、Google 開発者コンソールで、拡張機能と同じアプリケーションの下に別の資格情報セットを作成する必要があります。基本的には、Web ページに対して行う場合と同じことを行いますが、この新しい資格情報セットを Firebase の google oAuth のセキュリティ セクションに挿入します。

彼らはそこで私たちのためにこのチェックを行います. トークンが同じアプリに発行されているかどうか、Google で確認します。

それでおしまい。

背景情報。

https://developers.google.com/identity/protocols/OAuth2UserAgent#validatetoken

使用事例

認証が必要なリクエストで ID トークンを送信する。たとえば、サーバーにデータを渡す必要があり、特定のデータが特定のユーザーからのものであることを確認したい場合です。

アクセスを確認するタイミング すべてのトークンは、Google から直接送信されたものであることがわかっている場合を除き、サーバー上で確認する必要があります。クライアント アプリから受け取るトークンはすべて検証する必要があります。

Google には、次の場所にある python でこれを行う方法のチュートリアルがあります。

"github[dot]com/googleplus/gplus-verifytoken-python"

つまり、基本的にここで起こっていることは次のとおりです。サーバーから検証する代わりに、firebase に CLIENT_ID と APP_SECRET を入力して Google 認証を有効にすると、firebase がこの検証を行います。

これを正しく行う方法は、client_secret が発行された相手を確認する組み合わせまたは同じスタイルです。Chrome は access_token を提供し、この access_token は firebase のバックエンドでチェックされます。

于 2015-06-02T20:36:12.683 に答える