2016-07-27 10 views
0

Firebaseデータベースを使用するクロム・エクステンションを作成しています。自分のカスタム認証のために私はでユーザーのサインを持っているJWTトークンを作成する必要がノード・アプリケーション外のノード・パッケージの使用

私は、関数呼び出しを使用してノードでこれらのトークンを生成する機能は自分であることを自分のドキュメントで見た:。

var customToken = firebase.auth().createCustomToken(uid);

私の問題は、Chrome拡張機能がノードアプリケーションではないため、この機能にアクセスできないということです。私は彼らのCDNからfirebase auth APIを持っていますが、私はその機能を使ってみるとfirebase.auth(...).createCustomToken is not a functionとなります。

create JWTトークン関数は、node.js firebaseユーザーのためのものだと思います。私の拡張がノードアプリケーションでなくてもこのトークンジェネレータにアクセスできる方法はありますか?

私はこのJWTの新機能ですから、実際にはこれらのトークンのいずれかを簡単に生成する方法を探しています。

答えて

1

カスタムトークンを作成するには、Firebaseプロジェクトのサービスアカウントにアクセスする必要があります。これはサーバー側の秘密であり、プロジェクトにアクセスするクライアントに存在してはいけません。カスタムトークンを作成するために必要な秘密をクライアントに与えると、プロジェクトに完全にアクセスできるようになります。その場合は、認証を使用しないこともできます。

典型的なアプローチは、サインインする(例えば、クロムの拡張子)、アプリケーションのニーズに基づいてserver that mints a custom tokenを実行し、use that token in your clientすることである。

別の方法としては、email+passwordとして、組み込みの認証方法のいずれかを使用することができますFacebook,Googleまたはさらにanonymous sign-inである。

+0

私の計画は、ユーザーが最初にその拡張子を使用するときにランダムな文字列を生成することです。次に、その文字列を使ってJWTトークンを生成し、それを使って署名します。これらのランダムな文字列をゲーム内のユーザー名にマップするデータベースの安全な部分を保ちます。そうすればfirebaseのルールを使って正しく生成されたランダムな文字列を持つ人だけがデータベースのセクションにアクセスできるようになります。 – MarksCode

+0

匿名のサインインに近いと思われます。私は強く非安全な方法であなた自身のロールバックの代わりにそれを使用することをお勧めします。 –

+0

匿名のサインインだけを使用したいのですが、データベースのルールをどのように活用するのか分かりません。クライアントが匿名でサインインするエクステンションをクライアントが使用するたびに、自分のゲーム内のユーザー名にマップするために使用できる認証オブジェクトに永続的なデータが存在するのでしょうか?それとも、毎回ランダムなuidですか?クライアントの認証オブジェクトにゲーム内の名前を付けるためには、何らかの方法が必要なので、私のアプローチが理にかなっていると思ったのです。しかし、私が匿名のサインインで同じことをすることができれば、むしろそれを使うことになります。 – MarksCode

関連する問題