10
0

More than 1 year has passed since last update.

Keycloakを使った自前認証を試してみた

Last updated at Posted at 2022-12-21

学校法人角川ドワンゴ学園でプログラミングコーチをしている @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などとのサービス連携に使われることがあります。

より詳細な実践や概念、システム構成などは大手技術系の記事で連載されていました。

ハンズオン

実行コマンド
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したい場合は下記。

docker-compose.yml
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にする。
Credentialsの設定時

ユーザーアカウント設定完了

Clientsの選択後、Client type:OpenID Connect/Client ID:myclient と入力し、Saveする。
Clients設定

その後、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/
Sign in

どこかで設定などを間違えている場合は、下記のようなエラーが出ます。エラー文が出ているので、これを確認しつつ、ハンズオンを読み返しながら、再確認しましょう。
Error

加えて、詳細な機能ごとのハンズオンガイドなどは下記から学習することができます。
https://www.keycloak.org/guides#server

終わりに

今回は、OSSとして後発で開発された認証認可ソフトウェアを試してみました。
OAuth2.0の学習のおまけとして、よければ取り組んでみてください!

10
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
0