Play2.3でSecureSocialを使う(2014年6月時点)
※(2014年6月27日)この情報はすでに古く、Play2.3に対応した公式モジュールがリリースされている可能性があります。公式サイトやリポジトリをご確認ください。
PlayFrameworkに認証/認可機能を追加できるSecureSocial
というモジュールがあります。
- 公式サイト
SecureSocial - Authentication for Play Framework Applications
http://securesocial.ws/ - リポジトリ
jaliss/securesocial
https://github.com/jaliss/securesocial
SecureSocialの特徴は以下のとおりで、必要とされている機能はひと通り用意されており、認証機能を手軽に構築できるモジュールです。(ほぼ上記ページの内容ですが。)
- ScalaだけでなくJavaでも使える。
- Play2だけでなくPlay1でも使える。
- ユーザ/パスワード認証だけでなく、OAuth1,2やOpenIDにも対応。また、TwitterやFacebookなど向けのモジュールも用意されている。
- 既存アプリへの組込みも簡単。
- 拡張性があり、新たな認証にも対応できる。
- ユーザ登録時やパスワードリセット時などにメールを送信する機能が使える。
さて、このモジュールですが残念ながら現在(2014/06/27)時点でPlay2.3向けのモジュールが提供されていません。 現在の状況としては、PRは投げられていますがメイン開発者が他の機能に注力しているため、レビュー・取り込みされていません。
ですが、PR元のプロジェクトをsbtで参照することで、Play2.3に対応したSecureSocialが使えますので、今回はその手順をまとめてみました。
- Playプロジェクトを作成する
- Play2.3対応版SecureSocialをプロジェクト参照する
1. Playプロジェクトを作成する
まずは、空のプロジェクトを作成してきます。Play2.3からはplayコマンドではなく、Typesafe Activatorを利用してプロジェクトを作成するように変更されていますのでご注意ください。
今回は、play23-securesocial
というプロジェクト名でplay-scala
というテンプレートを利用して作成します。
> activator new play23-securesocial play-scala
Typesafe Activatorとは?
Typesafe Activatorとは、Scalaプロジェクトをあらかじめ用意されたひな形を利用して作成できるツールです。実際には、Webからソースコードを編集するUIなども用意されているようですが、ここでは説明しません。
Typesafe Activatorをインストールしていない方は、公式サイトZIPファイルをダウンロードし、任意の場所に展開します。 その後、実行ファイルにPATHを通せばactivatorコマンドが利用できるようになります。
PlayFrameworkのインストールに関するドキュメント
Installing
http://www.playframework.com/documentation/2.3.x/InstallingTypesafe Activatorのインストールに関するドキュメント
Build Reactive Applications with Typesafe Activator | Typesafe
http://typesafe.com/platform/getstarted
Typesafe Activatorをインストールしたくない!
Typesafe Activatorをインストールしたくない方は、@xuwei_kさんがズバリのブログ記事を公開していますので、そちらを参考にしましょう。
- typesafe activatorを使わないplayframework2.3の始め方 - scalaとか・・・
http://d.hatena.ne.jp/xuwei/20140531/1401525122
ただし、この記事ではTypesafe Activatorを利用して作成したプロジェクトを元に話を進めます。build.sbt
の中身がTypesafe Activatorを利用した場合と@xuwei_kさんの記事とで若干異なりますのでご注意ください。
2. Play2.3対応版SecureSocialをプロジェクト参照する
プロジェクトが作成できましたので、Play2.3に対応したSecureSocialを参照するように設定します。
といっても、冒頭に記載したとおりPlay2.3に対応したモジュールはまだリリースされていませんので、libraryDependencies
では参照できません。そのため、GitHubのリポジトリを直接参照するように、build.sbt
を書いていきます。
//build.sbtの一部 lazy val root = (project in file(".")).enablePlugins(PlayScala) .dependsOn(ProjectRef(uri("https://github.com/ewiner/securesocial.git#play-2.3"), "mainModule"))
dependsOn
以降を追加することにより、uriで指定した、Play2.3対応SecureSocialのGitプロジェクトが参照されます。
まとめ
Play2.3対応のSecureSocialについて調査していたところ、上記の方法で使えるという情報があったのでまとめてみました。 それより、sbtにGitプロジェクトを直接参照する機能があることを知らず感動しました。知らないことはまだまだいっぱいありますね・・。
認証/認可に必要な機能はひと通り揃っているモジュールですので、興味のある方はSecureSocialを使ってみてください。