|
前回の記事では、Keycloakについて簡単にご紹介しましたが、大変好評を博しました。この製品に多くの方が関心を寄せているようですので、今回はKeycloakについて詳しく見ていきましょう。まずは直感的に理解した上で、その設計哲学やコンセプトを深く掘り下げていきます。 全体的なアプローチKeycloak が Spring Security 用のアダプターを提供していることはすでに知っていたので、Spring Security とどのように統合するかを調べる前に、まず Keycloak の中核となる概念を独自に理解しました。 Keycloakをインストールするこの記事で使用されている Keycloak のバージョンは 14.0.0 です。 私はインストールに時間を無駄にするのが好きではないので、調査段階でインストールに Docker を使用するのが最も手間のかからないオプションです。
上記のコマンドを実行してKeycloakのインストールに成功したら、http://localhost:8011/auth/adminを開き、ユーザー名「admin」とパスワード「admin」を入力して管理コンソールにアクセスします。英語を使いたくない場合は、下の画像のように中国語に切り替えることができます。 中国語インターフェースの変更 変更を加えたら、いくつかのセクションをクリックして、それぞれの機能や役割を想像してみましょう。この時点では、リラックスして深く考えすぎず、全体像を把握するだけにしましょう。 レルム有名なセキュリティフレームワーク「Shiro」をご存知の方なら、この概念はお馴染みでしょう。レルムとは、ユーザーとそれに対応するアプリケーションを管理する空間であり、テナントのようなもので、異なるレルム間の論理的な分離を可能にします。 Keycloackはデフォルトで「マスター」と呼ばれるレルムを提供します。このマスターは特定のアプリケーションやユーザーを管理するのではなく、他のレルムのライフサイクル管理にのみ使用されます。 マスタードメインの管理機能の図 マスターの領域にログインし、カスタム ドメイン felord.cn を作成します。 カスタムドメインを作成する ユーザーユーザーとは、アプリケーションシステムにログインできるエンティティであり、本質的にはアカウントと捉えることができます。メールアドレス、ユーザー名、住所、電話番号、生年月日など、自身に関連付けられた属性を持つことができます。また、グループメンバーシップや特定のロールを割り当てることもできます。Keycloakでは、各ユーザーはレルムに属します。次に、カスタムドメイン felord.cn に新しいユーザーを作成しましょう。手順は以下のとおりです。
次に、現在のユーザー admin からログアウトし、http://localhost:8011/auth/realms/felord.cn/account に移動して、新しく作成されたユーザー felord として felord.cn ドメインにログインします。 ログインリンクの特徴に気づきましたか? これでレルムとアカウントの作成プロセスは完了です。しかし、この時点ではまだ多くの受講生が混乱していると思います。なぜ今、手動で作成する必要があるのでしょうか?ご安心ください。後ほど、コードとアプリケーション固有のワークフローを使って、このプロセスをご説明します。 Keycloakのコアコンセプト次に、Keycloakを使用する際に理解しておく必要のある概念をいくつか説明します。レルムとユーザーについては既に説明したので、ここでは詳しく説明しません。 認証ユーザーを識別し、検証するプロセス。「あなたが本人である」ことを証明します。 承認ユーザーにアクセス権限を与えるプロセス。「何ができて、何ができないか」を示します。 資格ユーザーの身元を証明する認証情報。パスワード、ワンタイムパスワード、デジタル証明書、指紋などがこれに該当します。 役割ロールは RBAC における重要な概念であり、ユーザーの ID の種類を示すために使用されます。 ユーザーロールマッピングユーザーロールのマッピング。通常、ユーザーは複数のロールを持つことができ、ロールは異なるユーザーに対応する場合があります。 複合役割複合ロールは複雑に聞こえるかもしれませんが、本質的にはキャラクター間の従属関係または継承関係に関するものです。キャラクターBがキャラクターAの従属関係にある場合、キャラクターAを持つことで、キャラクターBの権限が自動的に付与されます。 グループユーザーグループを使用すると、定義済みのユーザーグループに一連のロールを割り当てることができます。ユーザーがそのユーザーグループに所属すると、そのユーザーは対応するグループのすべてのロール権限を取得します。 クライアントクライアント。これは通常、Keycloackにユーザー認証を要求する必要があるアプリケーションまたはサービスを指します。実際、Keycloackの保護を求め、Keycloackに登録するあらゆるエンティティはクライアントと見なすことができます。 クライアントアダプタKeycloackのアダプターは、JavaやPythonなど、複数の言語とクロスプラットフォームの互換性をサポートするように設計されています。一部は組み込み実装ですが、Keycloackの抽象定義に従って実装する必要があるものもあります。今後は主にSpring Bootアダプターを扱っていきます。 アイデンティティプロバイダーユーザー認証に使用されるサービスはIDP(Instant Provider)と呼ばれます。Keycloack自体もIDPです。これはSpring SecurityのAuthenticationProviderインターフェースに似ています。 他にもいくつか概念があるので、出会ったら追加します。数が多いので、まずは理解したいと思います。 要約この投稿では、主にKeycloackの予備的な使用方法、今後の学習のための開発環境の構築、そしてKeycloackの中核概念のまとめについて紹介します。ただし、スペースの制約により、一部の概念については十分に説明できていません。学習は段階的なプロセスであり、急ぐ必要はありません。カスタムレルムとユーザーは設定済みです。次の投稿では、Keycloackを使ってSpring Bootアプリケーションを保護してみます。空き時間に執筆するのは大変な作業ですので、ぜひフォローして著者を応援してください。 この記事はWeChat公式アカウント「コードファーマー小デブ」から転載したものです。以下のQRコードからフォローできます。転載の許可については、「コードファーマー小デブ」WeChat公式アカウントまでご連絡ください。 |