学校法人角川ドワンゴ学園でプログラミングコーチをしている @miya0 です。生徒からのプログラミング学習に関する質問や相談を解決するのが主な仕事です。一から技術を試して学ぶのが好きです。
はじめに
自前で簡単に認証トークンを発行できる認可サーバが作れるソフトウェアを紹介します。
試しやすさを重視して、今回はDockerを用いた公式ハンズオン手順を説明します。
Keycloakとは
RedHat社が開発・公開している認証認可のOSSソフトウェアです。
- OpenID Connect(OIDC)
- Security Assertion Markup Language(SAML)
- OAuth 2.0
などのSingle Sign-On(SSO)プロトコルに対応しています。
これによって、オープンソースでIdPとして運用・利用できます。
Keycloakでは、認証のバックエンドとしてActiveDirectory(AD)も利用できるため、KeycloakをIdPとして導入することで、Windowsログインで使っているIDとパスワードを使って、インターネット上のサービスに対しても利用可能となります。
私たちの身近では、GitHubやTwitterなどとのサービス連携に使われることがあります。
より詳細な実践や概念、システム構成などは大手技術系の記事で連載されていました。
ハンズオン
- 今回は公式に沿って、執筆時の最新Verを用いてDocker上で試します。
- https://www.keycloak.org/getting-started/getting-started-docker
- ID / Password は admin / admin, localhostは8080ポートを使います。
docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:20.0.1 start-dev
docker-compose.ymlに書いて、docker-compose upしたい場合は下記。
version: '3'
services:
keycloak:
image: quay.io/keycloak/keycloak:20.0.1
ports:
- 8080:8080
environment:
- KEYCLOAK_USER=admin
- KEYCLOAK_PASSWORD=admin
管理画面にログイン
準備・設定
左のmaster選択後、Create Realmを選択し、Realm nameの欄にmyrealmと入力してCreate。
新規ユーザーの作成後、Credentialsの設定を行い、Set Passwordを行う。この時初回ログイン時のパスワード変更をスキップするためにTemporaryはOFFにする。
Clientsの選択後、Client type:OpenID Connect/Client ID:myclient と入力し、Saveする。
その後、Access settings内の2つの項目をKeycloak公式アプリに設定する。
Valid redirect URIs: https://www.keycloak.org/app/*
Web origins: https://www.keycloak.org
動作確認と設定ミス時の画面例
下記公式アプリに対して、作成したrealmとClientを設定してSaveを行い、Sign inする。
これで、動作確認は完了です!
https://www.keycloak.org/app/
どこかで設定などを間違えている場合は、下記のようなエラーが出ます。エラー文が出ているので、これを確認しつつ、ハンズオンを読み返しながら、再確認しましょう。
加えて、詳細な機能ごとのハンズオンガイドなどは下記から学習することができます。
https://www.keycloak.org/guides#server
終わりに
今回は、OSSとして後発で開発された認証認可ソフトウェアを試してみました。
OAuth2.0の学習のおまけとして、よければ取り組んでみてください!