Firebaseコア開発チームは今週,セッションの自動永続化やSecurity Rule用のリッチな認証トークンなどを含む,ユーザ認証のメジャーアップデートを発表した。
Firebaseはリアルタイムデータベースである。データの格納と複数クライアント間の同期を行うためのAPIを開発者に提供する。
"Major Updates to Firebase User Authentication"と題した記事の "Firebase Simple Login" という章の冒頭では,コア開発者のRob DiMarco氏が,認証の必要性は理解していたものの,"さまざまなOAuth実装の管理があまりにも大変である"という理由から実現されていなかった,と述べている。
Firebase Simple Loginの操作に関しては,GitHubのノートにその概要が記されている。
最初にFirebaseに接続した時点では,クライアントは匿名(anonymous)として,Security Ruleで指定されたデフォルトのアクセス権が付与されます。それ以外のアクセス権が必要な場合には認証する必要があります。
Firebaseの認証は,Simple Loginサービスを使用して管理されています。FacebookやGoogle,Twitter,GitHubなどのソーシャルログインプロバイダを使用した認証,およびEメールとパスワードログインを用いた管理が可能です。
発表の中でDiMarco氏は,Firebaseの認証APIについて,"完全に書き直された"と説明している。使い勝手がよくなっただけでなく,ログインフローがより詳細にコントロール可能になり,"サポートされるログイン方法やプラットフォームすべてに対して,一貫した開発者エクスペリエンス"の提供が期待される。
DiMarco氏によれば,
過去2年間,私たちはSimple Loginの改良を続けてきました。
モバイルプラットフォーム用のログインサポート,セッションの自動永続化,Security Rulesで使用する豊富な認証トークン,クライアント側コードのみを使用したユーザ認証用のシンプルなAPIなどを追加してきました。
本日のリリースで私たちは,これらがFirebase APIの重要な機能になったことを発表します。
アップデートで導入された他の新機能の中で注目すべきなのは,オフラインに最適化された認証だ。これによってFirebaseは,アプリケーションが非接続状態で起動した場合でも,ユーザ認証データへのフルアクセスを提供することができる。今回のアップデートによって,"接続状況を気にすることなく,アプリケーションを記述する"ことが可能になる。
同じように改良されたのが,認証状態のための新しいイベントリスナだ。Firebase value eventと同じように動作する一方で,webで使用されている認証トランスポートに特有の動作を行うことによって,認証フローやログイン中のユーザエクスペリエンスをより詳細にコントロールすることができる。
公表されているJavaScript Changelogによると,最新バージョンには他に次のような変更が含まれている。
- すべての認証方式においてセッションの自動永続化が追加された
- 認証状況に対する同期的なアクセサである
ref.getAuth()
が追加された - すべての認証プロバイダに返却する共通の
authData
が追加された auth()
の非推奨化。代わりにauthWithCustomToken()
を使用することが求められる。
GitHub上のFirebase Simpile Loginの資料によると,Simple Loginの初期化のため,
FirebaseSimpileLogin
オブジェクトを生成する必要がある。このオブジェクトはFirebase
への参照とコールバック関数を包含する。ユーザの認証状態が変化した時,このコールバック関数が起動される。
var myRef = new Firebase("https://
.firebaseio.com");
var authClient = new FirebaseSimpleLogin(myRef, function(error, user) {
if (error) {
// ログイン試行中にエラーが発生した
console.log(error);
} else if (user) {
// ユーザがFirebaseに認証された
console.log("User ID: " + user.uid + ", Provider: " + user.provider);
} else {
// ユーザがログアウトした
}
});
Firebase Simple LoginとFirebase APIに関する詳細は,こちらのGitHubプロジェクトを参照してほしい。
アップデートに関してFirebaseコミュニティは,冷静ではあるが好意的に受け止めている。
Hacker NewsでDiMarco氏は,"Major Updates to Firebase User Authentication"での議論に対して回答するとともに,フィードバックを歓迎するとコメントしている。氏に対して,ユーザのJohn Grosen氏が,Personaのサポートについて質問した。"Personaの公式サポートを止めたのはなぜですか? 使われていないから?"
共同創設者でCEOのJames Tamplin氏が,次のような回答を寄せている。
"Personaの後援企業であるMozillaが,採用率の低さを理由に機能開発の終了を決めたのです。そのことと,私たちの側でも利用数が非常に少ないことから,サポートの削除を決定しました。"
その他にGoogleのFirebaseグループでも,ユーザであるKyle Parisi氏が,"Major Updates to Firebase User Authentication"の解説に対するコメントとして,次のような質問をしている。
"とてもクールですね。唯一不足していると思うのは,サブドメインをサポートするシングルサインオンです。Eメールの適切な検証も必要かも知れませんね。予定はありますか?"
記事の公開時点では,質問に対する開発チームからの返答はない。