1. 概要

Keycloak をサードパーティの認証サーバーとして使用して、Webまたはモバイルアプリケーションのユーザーを管理できます。

管理者がユーザーを追加することは可能ですが、Keycloakにはユーザーが自分で登録できるようにする機能もあります。 さらに、名、姓、電子メールなどのデフォルトの属性に加えて、アプリケーションのニーズに固有のユーザー属性を追加することもできます。

このチュートリアルでは、 Keycloakで自己登録を有効にし、ユーザー登録ページにカスタムフィールドを追加する方法を説明します。

ログインページのカスタマイズの上に構築しているので、最初に初期設定を行うと役に立ちます。

2. スタンドアロンサーバー

まず、スタンドアロンKeycloakサーバーのユーザー自己登録を確認します。

2.1. ユーザー登録の有効化

最初に、Keycloakを有効にしてユーザー登録を許可する必要があります。 そのためには、まず、Keycloakディストリビューションのbinフォルダーから次のコマンドを実行してサーバーを起動する必要があります。

./standalone.sh -Djboss.socket.binding.port-offset=100

次に、管理コンソールに移動し、 initial1 / zaq1!QAZ資格情報を入力する必要があります。

次に、レルム設定ページのログインタブで、ユーザー登録ボタンを切り替えます。

それで全部です! 保存をクリックするだけで、自己登録が有効になります。

これで、ログインページにRegisterという名前のリンクが表示されます。

繰り返しになりますが、以前に行ったカスタマイズを拡張しているため、ページはKeycloakのデフォルトのログインページとは異なって見えることを思い出してください。

登録リンクをクリックすると、登録ページに移動します。

ご覧のとおり、デフォルトページには、Keycloakユーザーの基本属性が含まれています。

次のセクションでは、選択に属性を追加する方法を説明します。

2.2. カスタムユーザー属性の追加

カスタムテーマを続けて、既存のテンプレート base / login /register.ftlcustom/loginフォルダーにコピーしましょう。

次に、生年月日に新しいフィールドdobを追加してみます。 そのためには、上記の register.ftl を変更して、次を追加する必要があります。

<div class="form-group">
    <div class="${properties.kcLabelWrapperClass!}">
        <label for="user.attributes.dob" class="${properties.kcLabelClass!}">
          Date of birth</label>
    </div>

    <div class="${properties.kcInputWrapperClass!}">
        <input type="date" class="${properties.kcInputClass!}" 
          id="user.attributes.dob" name="user.attributes.dob" 
          value="${(register.formData['user.attributes.dob']!'')}"/>
    </div>
</div>

これで、このページで新しいユーザーを登録するときに、その生年月日も入力できます

確認するために、管理コンソールでユーザーページを開き、ジェーンを検索してみましょう。

次に、 Jane 属性に移動して、DOBを確認します。

明らかなように、自己登録フォームに入力したのと同じ生年月日がここに表示されます。

3. 組み込みサーバー

次に、Spring BootアプリケーションにKeycloakサーバーEmbeddedの自己登録用のカスタム属性を追加する方法を見てみましょう。

スタンドアロンサーバーの最初のステップと同じように、最初にユーザー登録を有効にする必要があります。

これを行うには、レルム定義ファイルbaeldung-realm.jsonregistrationAllowedtrueに設定します。

"registrationAllowed" : true,

その後、以前のとまったく同じ方法で、生年月日をregister.ftlに追加する必要があります。

次に、このファイルを src / main / resources / themes / custom /loginディレクトリにコピーしましょう。

サーバーを起動すると、ログインページに登録リンクが表示されます。 カスタムフィールド生年月日を含む自己登録ページは次のとおりです。

組み込みサーバーの自己登録ページを介して追加されたユーザーは一時的なであることに注意することが重要です。

このユーザーを事前構成ファイルに追加しなかったため、サーバーの再起動時に使用できなくなります。 ただし、これは、設計と機能のみをチェックする開発段階で役立ちます。

テストするには、サーバーを再起動する前に、管理コンソールからカスタム属性としてDOBがユーザーに追加されていることを確認できます。 新しいユーザーの資格情報を使用してログインを試みることもできます。

4. 結論

このチュートリアルでは、Keycloakでユーザーの自己登録を有効にする方法を学びました。 また、新しいユーザーとして登録するときにカスタム属性を追加する方法も確認しました。

スタンドアロンインスタンスと埋め込みインスタンスの両方でこれを行う方法の例を確認しました。

いつものように、ソースコードはGitHubで入手できます。 スタンドアロンサーバーの場合はチュートリアルGitHubにあり、組み込みインスタンスの場合は OAuthGitHubにあります。