1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Keycloak×Spring SecurityによるOIDC(Keycloak設定完了まで)

Last updated at Posted at 2024-03-01

本記事は以下の記事を参考に、Keycloak×SpringSecurityによるOIDC実装を行った過程を備忘録として記事にしたものです。
参考: Keycloak×Spring SecurityでOIDC入門

OIDCとは

OIDCとは OpenID Connect の略で、認可が目的だったOAuth2.0を拡張して認証も行えるようにした標準プロトコルです。
この仕様では、認証認可に使用するトークンの生成や受け渡しなどのフローを定められており、これに沿って認証認可を実現します。
ユーザーがアプリにログインすると、そのアプリは認証クライアントとして認証サーバーに認証を要求します。認証サーバーはユーザー認証を行い、IDトークンを発行してクライアントに返します。このIDトークンは、アクセスするための認証情報のことです。認証クライアントとなるアプリをRP(Relying Party)、認証を行うサービスをOP(OpenID Provider)といいます。

Keycloakについて

Keycloakはオープンソースのソフトウェア(Identity Provider:idp)で、OIDCなどの標準プロトコルを実装しています。これによってシングルサインオンやAPIアクセスの認証・認可制御を実現できます。

ここからはKeycloakで認証サーバーを立てて、Spring Securityで保護されたアプリケーションの認証処理を実装していきます。

Keycloakの構築

dockerでコンテナとして起動

参考: KeycloakのDockerセットアップ

管理コンソールで設定

クライアントとなるアプリ(=認証したいアプリ)やユーザーの設定を行う。

レルム(Realm)

レルムは同一の認証情報やセキュリティ設定などが適用される範囲、同じ認証情報でシングルサインオンできる範囲です。クライアントとなるアプリやユーザーはレルム毎に設定することができます。
デフォルトで「master」という全てのレルムを包含して管理することができる特殊なレルムがあります。
「master」レルムはレルム内で最も高いレベルで、管理者(初回起動時に作成した管理者アカウント、ここでは環境変数で指定したアカウント)で管理できます。

まずはレルムを作成します。
管理コンソール左上のレルム名のプルダウン中の「Create Realm」ボタンから作成します。
image.png

任意のレルム名を設定します。(例:test-blog-app)
image.png

次に、クライアントとなるアプリを設定します。
左メニューの「clients」でクライアントの一覧を開き、「Create client」ボタンから設定します。
image.png

クライアントIDに任意の名前を設定(例:test-blog-app)、OIDCをするので、「Client type」が「OpenID Connect」になっていることを確認します。また、クライアントの身元証明を行うためにclient authenticationにチェックを入れます。
image.png
image.png

クライアントの一覧から作成したクライアント(demo-app)を開き、Keycloakで認証した後にリダイレクト可能なURIを設定します。(例:http://localhost:8080/)

ユーザーを作成します。
左メニューの「user」でユーザーの一覧を開き、「Create new user」ボタンから作成します。
任意の「ユーザー名」を入力(例:test-blog-app-user)して作成します。

パスワードを設定するため、ユーザー一覧から作成したユーザーを開き、「Credentials」タブから設定します。
ここでTemporaryにチェックを入れると初回ログイン時にパスワード変更を要求されるようになります。
image.png

次回の予定

次回の記事では、Spring Securityの設定していきます。現在、実装中ですので、完了次第記事にします。

1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?