オープンソースMBaaS「BaasBox」を使ってみる(1) インストールからログインまで


数回に分けて、このBaasBoxを手元のvagrant環境で動かしてAPIたたくところまで試す予定。

The open source backend for your mobile app | BAASBOX
BaasBox - オープンソースなmBaaS - モバイル/タブレット向けオープンソース紹介 - Mobile Touch - モバイル/タブレット開発者およびデザイナー向け情報ポータル

環境

$ uname -a
Linux vagrant-ubuntu-precise-64 3.2.0-57-generic #87-Ubuntu SMP Tue Nov 12 21:35:10 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux 

準備

JDK(6以上)とPlay Framework(バージョンはBaasBoxのREADMEにあった2.1.1にした)が必要

# jdk インストール
# http://www.devlog.alt-area.org/?p=1817 を見た 
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java7-installer

# playフレームワークのインストール
# http://hirooka.pro/?p=1618 を見た
$ wget http://downloads.typesafe.com/play/2.1.1/play-2.1.1.zip
$ unzip play-2.1.1.zip
$ sudo mv play-2.1.1 /usr/local/
$ sudo ln -sf /usr/local/play-2.1.1 /usr/local/play

# パスの設定
$ vi ~/.profile
# export PLAY_HOME=/usr/local/play
# export PATH=$PATH:$PLAY_HOME

$ source ~/.profile
# 確認
$ which play
$ play help

BaasBox

# 落としてきて
$ wget https://github.com/baasbox/baasbox/archive/master.zip
$ unzip master.zip
$ cd baasbox-master

# 一回パッケージング?
$ play dist

# dist以下にzipファイルが生成されるので、それを展開
$ cd dist
$ unzip baasbox-0.7.3-snapshot.zip

# startという起動用のスクリプトを実行
$ cd baasbox-0.7.3-snapshot
$ chmod 755 start
$ ./start

これでhttp://localhost:9000とかhttp://192.168.33.10:9000とかでアクセスできるようになる。READMEにも書いてあるとおり、admin/admin/1234567890で管理画面にログインできて、上記リンクにあるスクリーンショットみたいな画面になる。

ユーザーを作成してログインしてみる

私がとっつきやすそうなところといえばユーザー認証なので、ユーザーを作成してログインしてみる。APIでも作成できるけど画面から。作成するユーザーは以下のとおり。

Username : ritou
Password : (パスワードランキング1位になった6文字)
Role : administrator

ログインするAPIをたたいてみる。

$ curl -i -X POST -d "username=ritou&password=123456&appcode=1234567890" http://localhost:9000/login
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: X-Requested-With
Content-Length: 292
X-BB-SESSION: c60e3705-0fe9-48fc-93cf-a26bd00e752e
Content-Type: application/json

{"result":"ok","data":{"user":{"name":"ritou","status":"ACTIVE","roles":[{"name":"administrator"}]},"visibleByAnonymousUsers":{},"visibleByTheUser":{},"visibleByRegisteredUsers":{},"signUpDate":"2014-01-24 02:47:26+0000","X-BB-SESSION":"c60e3705-0fe9-48fc-93cf-a26bd00e752e"},"http_code":200}

ログインできた。レスポンスヘッダ、ボディに含まれる"X-BB-SESSION"がBaasBoxにおけるセッションIDとなる。せっかくなのでユーザー新規作成もAPIでやってみる。

$ curl -i -X POST -H "Content-Type: application/json" -H "X-BAASBOX-APPCODE: 1234567890" -d '{"username":"ritou2","password":"password","visibleByTheUser":{},"visibleByFriend":{},"visibleByRegisteredUsers":{},"visibleByAnonymousUsers":{}}' http://localhost:9000/user
HTTP/1.1 201 Created
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: X-Requested-With
Content-Length: 290
X-BB-SESSION: fb30f20b-5fab-4623-b19c-f78abde069f3
Content-Type: application/json
BB-USERNAME: internal_admin

{"result":"ok","data":{"user":{"name":"ritou2","status":"ACTIVE","roles":[{"name":"registered"}]},"visibleByAnonymousUsers":{},"visibleByTheUser":{},"visibleByRegisteredUsers":{},"signUpDate":"2014-01-24 03:46:12+0000","X-BB-SESSION":"fb30f20b-5fab-4623-b19c-f78abde069f3"},"http_code":201}

そのユーザーでログイン。

$ curl -i -X POST -d "username=ritou2&password=password&appcode=1234567890" http://localhost:9000/login
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: X-Requested-With
Content-Length: 290
X-BB-SESSION: 1b02a39a-b7fa-4cdc-a278-a3f657743703
Content-Type: application/json

{"result":"ok","data":{"user":{"name":"ritou2","status":"ACTIVE","roles":[{"name":"registered"}]},"visibleByAnonymousUsers":{},"visibleByTheUser":{},"visibleByRegisteredUsers":{},"signUpDate":"2014-01-24 03:46:12+0000","X-BB-SESSION":"1b02a39a-b7fa-4cdc-a278-a3f657743703"},"http_code":200}

ここまでの動作には問題なし。passwordや123456っていうパスワードは自動ではじきたい気もするが。。。
次回はソーシャルログインやコレクション登録のあたりを触ってみる予定。