ちょっとSSO、認証関連の話題に最近興味がありまして、Keycloakを少しずつやってみようかなと思いまして。
Keycloak?
認証、認可に関するOSSで、OAuth 2.0/OpenID Connect 1.0に対応しています。ThouthtWorksのTechnology Radarにも出てきて、けっこう注目度高そうな
感じです。
WildFlyをベースに作られているようです。
情報としては、ちょうど去年Advent Calendarもあって良いですね。
Keycloak by OpenStandia Advent Calendar 2017
マイクロサービス時代のSSOを実現する「Keycloak」とは:Keycloak超入門(1) - @IT
まあ、自分としてはKeycloakを触ってOAuth 2.0/OpenID Connect 1.0あたりを勉強できたらいいなぁと思っています。
Java EEでもOAuth 2.0!~そしてPayara Micro on Cloud Foundryで遊ぶ~
基礎からの OAuth 2.0 - Developers.IO 2017 (2017-07-01)
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OAuth & OpenID Connect 入門のための入門
今回は、とりあえずインストールしてみます。
Keycloakのインストール
まずはドキュメントを読んで、システム要件の確認。
があればOKそうです。今回の環境では、OpenJDK 8で起動します。
以下からKeycloakをダウンロードして、展開します。
今回ダウンロードしたKeycloakのバージョンは3.4.3.Finalで、zip版を使用しました。
$ wget https://downloads.jboss.org/keycloak/3.4.3.Final/keycloak-3.4.3.Final.zip
$ unzip keycloak-3.4.3.Final.zip
$ cd keycloak-3.4.3.Final
Getting Startedを見ながら、
起動。
$ bin/standalone.sh
停止は、Ctrl-Cで。
起動したら、「http://localhost:8080」にアクセスすると、初回はKeycloakの管理ユーザーの作成を求められます。
ここでは、「keycloak-admin/password」でアカウントを作成します。
Webの画面ではなく、スクリプトで「add-user-keycloak.sh」で管理ユーザーを作成することもできます。
$ bin/add-user-keycloak.sh -u keycloak-admin -p password Added 'keycloak-admin' to '/path/to/keycloak-3.4.3.Final/standalone/configuration/keycloak-add-user.json', restart server to load user
この場合は、オペレーション後にKeycloakの再起動が必要なようです。
Webで管理ユーザーを作成する、またはスクリプトでユーザー追加後に再度「http://localhost:8080」にアクセスすると「http://localhost:8080/auth/」にリダイレクト
されるので、「Administration Console」リンクを選択してログイン画面へ。
Realmとユーザーを作成する
Getting Startedに沿って、Realmとユーザーを作成してみましょう。
管理ユーザーでログインした状態で、左上に表示されているRealm(Master)にマウスオーバーすると、「Add realm」というボタンが現れるので、こちらをクリック。
Realmを作成すると、作成したRealmに切り替わるようです。また、Realmにマウスオーバーすると、Realmを選択できるようになるみたいです。
次に、左のメニューのタブから「Manage」配下の「Users」を選び、「Add user」を選択。
パスワードは、今回は「Credentials」タブで変えてみます。今回は一時的なものになります。
作成したユーザーを確認してみましょう。
「http://localhost:8080/auth/realms/demo/account」にアクセスしてみます。URLは、Realm名っぽいですね。すると、ログインページにリダイレクトされます。
とりあえず、今回はこんなところで。