注:これは私的メモに近いものです。
loginsrv は JWTログイン認証をマイクロサービスとして提供できるようにするサーバー。ログイン認証の無いサービスにログイン認証を追加したり、SPAとかで重宝するのかもしれない。
以下の記事を参考にloginsrvを試してみた。私が以下に記述していることはここに全部書いてます。
わからなかったこと。
- goreman の起動の仕方
- gorem の使い方
- github認証でのログイン
- htpasswdでのログイン
goreman の起動の仕方
上記記事中にもある通り、goremanはforemanのクローン。複数のアプリを一括で起動できる(?)
なので、foremanと同じく、Procfileをカレントディレクトリに作成して、`goreman start`で起動するだけ。
ちょっとはまったのは、記事中の `web1: ./app` の部分。Windows だと `web1: app.exe` としないと起動できなかった。(go build の仕方によって回避できる問題なのかもしれない)
あと、Port を自動で環境変数PORTに設定してくれる。今回使っているサービスは使っていないようなので問題ないんだけど、環境変数を引数指定よりも優先して設定するようなアプリの場合は注意が必要かも?
gorem の使い方
上記記事中にもある通り、gorem は リバースプロキシサーバー。
config.json をカレントディレクトリにおいて、gorem で起動すればいいだけだった。簡単。
github認証でのログイン
自分のgithubページに行き、フェイスアイコンからSettingsを選択。Developer settings から OAuth applications を選択し、アプリを登録する。
私の場合は以下の情報を登録した
- Application name : loginsrc
- Homepage URL : https://github.com/tarent/loginsrv
- Authorization callback URL : http://localhost:5000/login
登録すると、Client ID と Client Secret が表示されるのでそれを loginsrv の引数として設定してあげる。
loginsrv -github client_id=xxx,client_secret=yyy
簡単。
htpasswd認証でのログイン
htpasswd には {user}:{MD5等でハッシュ化されたパスワード} という文字列が記述されたアカウントリストファイル(?)
以下のページでその情報を疑似的に作成。.htpasswd としてカレントディレクトリに保存。
そのファイル名をloginsrv の引数として渡してやると完成。
loginsrv -htpasswd file=.htpasswd
簡単。
まとめ
ログインを外部サービスに任さることができるのはだいぶうれしい。loginsrv が拡張されてtwitter やら facebook とかのアカウントでもログインできるようになったら面白いかもしれない。
goreman や gorem を使用すると、簡単に別々のウェブサービスが連結できて便利。今まではDocker-compose とかでやってたことが、数ファイルでカジュアルに実行できるので、そんなにでかいサービスを動かす必要がないのであれば使っていきたいなと思った。
以下に試した結果を上げておきます。