# 3.9.12 User profile

The **User Profile** section in Keycloak allows you to manage user attributes, attribute groups, and related configurations.\
This guide explains each available setting in detail to help administrators configure user profiles effectively.

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2Fm9h98LiHvhk2DRVcyr3Z%2F1.png?alt=media&#x26;token=2bc4b2d2-a4e0-49bf-b967-38c07d5fa986" alt=""><figcaption></figcaption></figure>

#### **Attributes**

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2FHqc3R1lzHp6NC04sVS1b%2F2.png?alt=media&#x26;token=3577f926-95fe-427d-b417-61ec87f7bd36" alt=""><figcaption></figcaption></figure>

You have the option to filter attributes based on attribute groups, such as user-metadata. Alternatively, you can select All groups to view attributes from all available attribute groups.

#### **Attribute \[Name]**

It denotes the name of the user attribute, which serves as a unique identifier for the attribute.

#### **Display Name**

It indicates the display name of the attribute, which can also support keys for localized values.

#### **Attribute group**

It determines the user profile group where this attribute will be included, facilitating the grouping of similar attributes together.

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2FYQI5vfqWujnqpELhBYT9%2F3.png?alt=media&#x26;token=bbe16773-a000-4fdb-9d70-07b40908c869" alt=""><figcaption></figcaption></figure>

To create a new attribute, click on Create attribute.

After clicking on Create attribute, you will be redirected to the below screen

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2FSem91TsW8T45wP6tqai5%2F4.png?alt=media&#x26;token=354f692c-e0cd-458c-80f0-63de18a4e093" alt=""><figcaption></figcaption></figure>

### **General Settings**

#### **Attribute \[Name]**

It denotes the name of the user attribute, which serves as a unique identifier for the attribute.

#### **Display name**

It indicates the display name of the attribute, which can also support keys for localized values.

#### **Multivalued**

This toggle button, when enabled (toggled ON), permits the attribute to support multiple values.&#x20;

When toggled OFF, it doesn't support multiple values. This setting acts as an indicator and does not enable any validation.&#x20;

You can toggle it ON or OFF according to your needs.

#### **Attribute group**

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2F2ygzGyFiQC1ITpb9vT8A%2F5.png?alt=media&#x26;token=89eb1494-56d1-4a75-8f1e-603dbfd21a0b" alt=""><figcaption></figcaption></figure>

It determines the user profile group where this attribute will be included, facilitating the grouping of similar attributes together.&#x20;

You can choose the most suitable option from the dropdown according to your requirements.

#### **Enabled when**

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2FnIehXc3N0n3zWzInKTzV%2F6.png?alt=media&#x26;token=9d288154-bf61-472c-9879-fd449b666591" alt=""><figcaption></figcaption></figure>

This setting specifies when an attribute is available.

When scopes are used, attribute is available when at least one of configured scopes is applied in the login request. Both default and optional scopes of current request are evaluated. In the admin console and account console contexts, scopes are not evaluated and attribute is always available

#### **Required field**&#x20;

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2FvDW3JORiL6Mbd4rmOqUf%2F7.png?alt=media&#x26;token=f4f2c192-bd85-44fb-abf5-5fbd4937607d" alt=""><figcaption></figcaption></figure>

This toggle button, when enabled (toggled ON), requires the attribute to be set by both users and administrators.&#x20;

When disabled (toggled OFF), the attribute becomes optional.&#x20;

You can toggle this setting ON or OFF according to your needs. When activated, the fields below are also enabled.

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2F1OqFx8mJ0GZqS79ELVnL%2F8.png?alt=media&#x26;token=ddd87958-952d-42e6-ba35-10a288c6a41f" alt=""><figcaption></figcaption></figure>

#### **Required for**

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2FEKz1PJTHHKpbFPKpJh3f%2F9.png?alt=media&#x26;token=f92623d0-c191-4779-bf75-1fd9877f2967" alt=""><figcaption></figcaption></figure>

It indicates whether the field is mandatory for users, administrators, or both.

#### **Required when**

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2F9sxKfnkkJcT6W7iMDuqy%2F10.png?alt=media&#x26;token=dc9230da-afbe-44fa-8c0d-8a09e66498d3" alt=""><figcaption></figcaption></figure>

You can use this setting to designate the attribute as required only when specific client scopes are requested. This setting has two options:

* Always: The attribute is required regardless of the user profile context.
* Scopes are requested: The attribute is required only when the client, acting on behalf of the user, requests a set of one or more scopes.

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2Frh3hMxoOCWohTMB22Mkv%2F11.png?alt=media&#x26;token=09a22108-585b-4d16-93fc-faf8377c0986" alt=""><figcaption></figcaption></figure>

#### **Permission**

#### **Who can edit?**

You can activate it by checking the checkbox. If activated, users or administrators can edit the attribute. Otherwise, users or administrators won't have access to edit the attribute.

#### **Who can view?**

You can enable it by checking the checkbox. If activated, users or administrators can view the attribute. Otherwise, users or administrators won't have access to the attribute.

#### **Validations**

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2FOjg3ahjtTuaAhRK49WVB%2F12.png?alt=media&#x26;token=9d9df249-8dd1-472e-8e26-03e5e0241d04" alt=""><figcaption></figcaption></figure>

In this section, you can define the validations that will be performed when managing the attribute value.

Upon clicking Add validator, a prompt similar to the one displayed below will appear.

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2FUWtsz82Z5EefLBp8efiv%2F13.png?alt=media&#x26;token=b2c2b8af-96a3-4f57-8ed0-137fbb60eaaa" alt=""><figcaption></figcaption></figure>

#### **Validator type**

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2FBbfBxXpk78l7ZuWVe6PI%2F14.png?alt=media&#x26;token=e0584ca7-831a-4a17-9a4e-85e38013b724" alt=""><figcaption></figcaption></figure>

You can choose the most suitable validator based on your needs.&#x20;

For instance, if you select double, you will encounter the prompt below.

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2Fwlk98cOpZMY82zOJseoE%2F15.png?alt=media&#x26;token=a8402d2a-30e7-4676-903f-24563789e442" alt=""><figcaption></figcaption></figure>

#### **Validator type**

It indicates the validator type that you have previously selected.

#### **Minimum**

This is an optional configuration representing the minimum allowed value.

#### **Maximum**

This is an optional configuration representing the maximum allowed value.

#### **Save**

If you've made any changes and wish to apply them, click on Save.

#### **Cancel**

If you decide not to implement the changes, click on Cancel.

After clicking on Save, you will be directed to the screen below.

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2FVxaj8G9MpWf109JOUjhB%2F16.png?alt=media&#x26;token=379db6b4-ab78-409b-ba8a-342ec8b74210" alt=""><figcaption></figcaption></figure>

You'll find a table similar to the one displayed above, which contains the names of validators and other configuration details.

#### **Validator name**

It indicates the validator type that you previously added.

#### **Config**

It denotes the configuration settings that have been configured for the specific validator.

If you no longer need a validator, click on Delete.

Upon clicking Delete, you will receive the following prompt asking for confirmation.

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2FGu1d5pma6JGKGGfxtOvU%2F17.png?alt=media&#x26;token=fe4edb30-e93a-435b-b9f1-3e6bcf63ccf8" alt=""><figcaption></figcaption></figure>

Click Delete to remove it, or click Cancel if you want to retain it.

You can consult the table below to explore the various types of validators and their respective purposes.

<table><thead><tr><th width="180">Validator type</th><th width="256">Description</th><th>Configuration</th></tr></thead><tbody><tr><td>double</td><td>This validator checks if the attribute value is a double within a specified lower and/or upper range. If no range is defined, it only verifies whether the value is a valid number.</td><td><p>Minimum - This optional configuration sets the minimum allowed value.</p><p><br></p><p>Maximum - This optional configuration specifies the maximum allowed value.</p></td></tr><tr><td>email</td><td>This validates whether the value has a valid email format.</td><td><p>Maximum length for the local part - This specifies the maximum length allowed for the local portion of the email.</p><p>By default, it is set to 64 as per the specification.</p></td></tr><tr><td>integer</td><td>This validator checks if the value is an integer within a specified lower and/or upper range. If no range is defined, it only verifies whether the value is a valid number.</td><td><p>Minimum - This optional configuration indicates the minimum permissible value.</p><p><br></p><p>Maximum - This optional configuration specifies the maximum permissible value.</p></td></tr><tr><td>length</td><td>This validates the length of the value, considering both minimum and maximum lengths.</td><td><p>Minimum length - It specifies the minimum permissible length.</p><p><br></p><p>Maximum length - It specifies the maximum permissible length.</p><p><br></p><p>Trimming disabled - This toggle button, when turned ON, prevents trimming the String value before performing the length check.</p></td></tr><tr><td>local-date</td><td>This validator checks if the value has a valid format based on the realm and/or user locale.</td><td>None</td></tr><tr><td>multivalued</td><td>This validator validates the size of a multivalued attribute.</td><td><p>Minimum size - It specifies the minimum size.</p><p><br></p><p>Maximum size - It specifies the maximum size.</p></td></tr><tr><td>options</td><td>This validator checks if the value belongs to a defined set of allowed values. It's useful for validating values entered through select and multiselect fields.</td><td>Options - It defines an array of strings containing allowed values.</td></tr><tr><td>pattern</td><td>This validator checks if the value matches a specific regular expression (RegEx) pattern.</td><td><p>RegExp pattern - It defines the RegExp pattern that the value must match.</p><p><br></p><p>Error message key - It specifies the key of the error message in the i18n bundle. The default message key is error-pattern-no-match.</p></td></tr><tr><td>person-name-prohibited-characters</td><td>This validator checks if the value is a valid person name. The validation is based on a default regular expression (RegEx) pattern that restricts characters not commonly found in person names.</td><td>Error message key - It defines the key of the error message in the i18n bundle. The default message key is error-person-name-invalid-character.</td></tr><tr><td>up-username-not-idn-homograph</td><td>This indicates that the field can only contain Latin characters and common Unicode characters. This is beneficial for fields that may be targeted by IDN homograph attacks.</td><td>Error message key - It defines the key of the error message in the i18n bundle. The default message key is error-username-invalid-character.</td></tr><tr><td>uri</td><td>This validator checks if the value is a valid URI.</td><td><p>Allowed schemes - It specifies the allowed URL schemes. By default, only 'http' and 'https' are allowed.</p><p><br></p><p>Allow fragment - This toggle button determines whether URLs with the URI fragment are allowed. By default, it is toggled ON.</p><p><br></p><p>Require Valid URL - This toggle button verifies if the specified URL is a valid URL. By default, it is toggled ON.</p></td></tr><tr><td>username-prohibited-characters</td><td>This validator checks if the value is a valid username. The validation is based on a default regular expression (RegEx) pattern that restricts characters not commonly used in usernames.</td><td><p>Error message key - It defines the key of the error message in the i18n bundle. The default message key is error-username-invalid-character.</p><p><br><br><br><br><br></p></td></tr></tbody></table>

#### **Annotations**

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2F9RIMeXsWmO9WCj8DqOUa%2F18.png?alt=media&#x26;token=2c072e47-1a82-4055-a5c3-c79547309cf4" alt=""><figcaption></figcaption></figure>

In this section, you can add annotations to the attribute. Annotations are primarily used to provide additional metadata to frontends for rendering purposes.

Upon selecting Add annotations, the following screen will appear.

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2FAqWj66EN0nxvjb203d3F%2F19.png?alt=media&#x26;token=189f2ccf-852d-4715-8079-2d65c5693051" alt=""><figcaption></figcaption></figure>

#### **Key**

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2FEXeTnrAiCJAzygleJkAe%2F20.png?alt=media&#x26;token=c7a2af91-3422-4ab3-873b-0ad0a42714a0" alt=""><figcaption></figcaption></figure>

You can choose the desired option from the dropdown menu based on your needs.

You can also create a custom annotation according to your preference by clicking on Custom Attribute.

Upon clicking, the key field will be blank, allowing you to enter the desired key.

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2FMTj5aiQsYQHikrn3DusP%2F21.png?alt=media&#x26;token=20cec4a8-4bc1-457b-81ad-920f7a6d9bf4" alt=""><figcaption></figcaption></figure>

#### **Value**

You can input any value you wish to assign to this key.

After entering the details, to save the annotation, click on + Add Annotations.&#x20;

To delete an existing annotation, click on the '-' symbol.

#### **Create**

If you've entered the details above and wish to proceed with creating the attribute, click on Create.

#### **Cancel**

If you've entered the above details but don't wish to create any attribute, click on Cancel.

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2F55cisbQg0zxSPvEjHbHJ%2F22.png?alt=media&#x26;token=73f516a4-d7f8-4198-ad90-f2ceeece2261" alt=""><figcaption></figcaption></figure>

You can navigate between different setting screens using this section. Simply click on the required settings type that you wish to configure.

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2FYhH7G5JOzh0G1E9NAyds%2F23.png?alt=media&#x26;token=9080e4d0-55b2-45c2-b4bc-b66a9068f201" alt=""><figcaption></figcaption></figure>

Clicking on the three dots provides options to either Edit or Delete.

#### **Edit**

Selecting Edit will take you to the screen below.

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2FdcIfUUoZpyXqh5OD4twz%2F24.png?alt=media&#x26;token=0d378503-e991-4dd0-b49b-4134e967f2f0" alt=""><figcaption></figcaption></figure>

You can configure these settings as previously explained.

#### **Save**

If you've entered the details above and wish to apply these changes, click on Create.

#### **Cancel**

If you've entered the above details but don't wish to change anything, click on Cancel.

#### **Delete**

After selecting Delete, you'll receive the following prompt for confirmation:

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2FoVQ2ADxBvCg0s5hWM7Nr%2F25.png?alt=media&#x26;token=06efa80a-e1f7-403a-8228-22012fea5fce" alt=""><figcaption></figcaption></figure>

Click Delete to remove the attribute, or click Cancel to abort the action.

#### **Attribute Group**

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2FIgrqMlCLYQfmgDnBqyLW%2F26.png?alt=media&#x26;token=9e690f99-238a-46a9-94f3-1c41c596cf30" alt=""><figcaption></figcaption></figure>

Click the Refresh button to see the latest settings.

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2Fx89ToMw5Vy60kM1AvfAQ%2F27.png?alt=media&#x26;token=a908e091-db1c-48af-a354-0f6737e70c62" alt=""><figcaption></figcaption></figure>

You can also choose how many attribute groups you want to display on one screen. Select your preferred option from the dropdown menu as shown above.

#### **Name**

This refers to the unique identifier for the group, which will be used to reference the group when associating an attribute with it.

#### **Display name**

It specifies a user-friendly name for the group, which should be utilized when displaying a group of attributes in user-facing forms. This name can also support keys for localized values.

#### **Display description**

It denotes a text that should be displayed as a tooltip when rendering user-facing forms.\\

To establish a new attribute group, select Create attributes group.

Upon clicking on Create attributes group, you will be directed to the screen below.

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2FsgLQXM8jTmmUYKixkhKJ%2F28.png?alt=media&#x26;token=2468a5aa-6d7c-41fc-9247-59e61c9e1213" alt=""><figcaption></figcaption></figure>

#### **Name**

It serves as a unique identifier for the group, which will be used to reference the group when associating an attribute with it.

#### **Display name**

It designates a user-friendly name for the group, which should be utilized when displaying a group of attributes in user-facing forms. This name can also support keys for localized values.

#### **Display description**

It denotes a text that should be displayed as a tooltip when rendering user-facing forms.

#### **Annotations**

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2FxMVpUW51o0iEUh3IBI3s%2F29.png?alt=media&#x26;token=1f4ece94-62e9-4d26-9f6d-2d8bd6d194d1" alt=""><figcaption></figcaption></figure>

In this section, you can add annotations to the attribute. Annotations are primarily used to provide additional metadata to frontends for rendering purposes.

Upon selecting Add annotations, the following screen will appear.

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2Fqf00ZjZjYR4AENGZcYMX%2F30.png?alt=media&#x26;token=17e65f24-4f4a-41b0-8f75-129a24081b0b" alt=""><figcaption></figcaption></figure>

#### **Key**

You can input the desired key for the entire attributes group.

#### **Value**

You can input any value you wish to assign to this key.

After entering the details, to save the annotation, click on + Add Annotations.&#x20;

To delete an existing annotation, click on the '-' symbol.

#### **Save**

If you've entered the details above and wish to proceed with creating the attribute group, click on Save.

#### **Cancel**

If you've entered the above details but don't wish to create any attribute group, click on Cancel.

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2F49Q4kDDQWiAA0fM6mnLc%2F31.png?alt=media&#x26;token=a4b62a1a-16fe-43e1-80fb-97a46c9f1b57" alt=""><figcaption></figcaption></figure>

If you no longer need a particular attribute group, you can click on the Delete button to eliminate the attribute group.

Upon clicking Delete, you'll receive a confirmation prompt similar to the one shown below.

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2FegH0cp30K2w1k3lpFZhB%2F32.png?alt=media&#x26;token=7859605a-3c81-4112-ade0-3350b61f1512" alt=""><figcaption></figcaption></figure>

Click Delete if you want to remove the attribute group, otherwise click Cancel.

### **JSON editor**

<figure><img src="https://1778922777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3EUK5AUZv0UVaI5S0CTM%2Fuploads%2FIPUlBlYM9hUdFnjLeSnY%2F33.png?alt=media&#x26;token=2555fed5-fbe2-41d4-bcf0-79c9954f0cc9" alt=""><figcaption></figcaption></figure>

This displays the JSON Editor for the attributes found within the User Profile section.

\\
