2016-02-07 8 views
5

OAuthed inのセキュリティルールで電子メールを安全に取得する方法はありますか?アプリケーション全体、またはアプリケーションのセクションは電子メールアドレスのサフィックスに固定されるようにユーザのoauthメールに基づいてセキュリティルールのファイアベースを設定する

{ 
    ".read": "auth.google.email.matches(/@example.com$/)" 
    ".write": "auth.google.email.matches(/@example.com$/)" 
} 

は、理想的には私のようなルールを作りたかったのです。これは、アプリケーションを管理する方がはるかに簡単です。ユーザーには、会社のメールに基づいてアクセス権が与えられます。

また、ユーザーの電子メールアドレスをデータベースに保存して、書き込みできないような方法もありますが、同様のプロセスを達成できると思います。

答えて

3

OAuthプロバイダのプロパティはセキュリティルールで使用できません。 Per documentation on the auth variable

定義済みのauth変数は、認証が行われる前にヌルです。使用

プロバイダ認証方式(「パスワード」、「匿名」、「フェイスブック」、「githubの」、「グーグル」、ユーザがFirebaseログインの認証方法によって認証されると、それは次の属性が含まれていますまたは "twitter")。

uid一意のユーザーIDで、すべてのプロバイダで一意であることが保証されています。

安全な方法で電子メールドメインを提供するサーバーがない限り、電子メールアドレスに基づいてデータを保護することはできません。

サーバーが関与すると、次のいずれかを実行します

  • は、メールアドレスを確認し、データベースで検証した電子メールアドレスを格納します。セキュリティルールでroot.child('users').child(auth.uid).child('emailDomain').val()
  • mint your own tokensなどの電子メールドメインを含むセキュリティルールにアクセスして、auth.emailDomainなどのセキュリティルールの変数authで利用できるようにします。
関連する問題