<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>funkcje Keycloak - Inero Software - Rozwiązania IT i Konsulting</title>
	<atom:link href="https://inero-software.com/pl/tag/funkcje-keycloak/feed/" rel="self" type="application/rss+xml" />
	<link>https://inero-software.com/pl/tag/funkcje-keycloak/</link>
	<description>Tworzymy cyfrowe innowacje</description>
	<lastBuildDate>Fri, 21 Mar 2025 11:25:52 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://inero-software.com/wp-content/uploads/2018/11/inero-logo-favicon.png</url>
	<title>funkcje Keycloak - Inero Software - Rozwiązania IT i Konsulting</title>
	<link>https://inero-software.com/pl/tag/funkcje-keycloak/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">153509928</site>	<item>
		<title>Konfiguracja polityki haseł w Keycloak</title>
		<link>https://inero-software.com/pl/konfiguracja-polityki-hasel-w-keycloak/</link>
		
		<dc:creator><![CDATA[Marceli Formela]]></dc:creator>
		<pubDate>Fri, 21 Mar 2025 11:14:52 +0000</pubDate>
				<category><![CDATA[Blog_pl]]></category>
		<category><![CDATA[Firma]]></category>
		<category><![CDATA[Keycloak]]></category>
		<category><![CDATA[funkcje Keycloak]]></category>
		<category><![CDATA[hasła]]></category>
		<category><![CDATA[keycloak]]></category>
		<category><![CDATA[logowanie]]></category>
		<category><![CDATA[polityka haseł]]></category>
		<category><![CDATA[System IAM]]></category>
		<category><![CDATA[uwierzytelnianie]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=7653</guid>

					<description><![CDATA[<p>W tym artykule najpierw przyjrzymy się wbudowanym mechanizmom zarządzania polityką haseł w Keycloak. Następnie omówimy możliwości ich dostosowania do specyficznych wymagań.</p>
<p>Artykuł <a href="https://inero-software.com/pl/konfiguracja-polityki-hasel-w-keycloak/">Konfiguracja polityki haseł w Keycloak</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="7653" class="elementor elementor-7653" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-949c242 e-flex e-con-boxed e-con e-parent" data-id="949c242" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-a9078db elementor-widget elementor-widget-html" data-id="a9078db" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
			 
		</div>
				</div>
				<div class="elementor-element elementor-element-cc34f5b elementor-widget elementor-widget-text-editor" data-id="cc34f5b" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4>Skuteczne zarządzanie hasłami jest istotnym elementem zabezpieczania kont użytkowników, a Keycloak dostarcza narzędzia do egzekwowania silnych zasad uwierzytelniania. Dzięki konfiguracji reguł haseł administratorzy mogą zadbać o zgodność poświadczeń ze standardami bezpieczeństwa, minimalizując ryzyko nieautoryzowanego dostępu. Platforma oferuje elastyczne opcje, umożliwiające definiowanie wymagań, dotyczących długości i złożoności haseł, ich ważności oraz zapobiegania ponownemu użyciu.</h4>						</div>
				</div>
				<div class="elementor-element elementor-element-0df981b elementor-widget elementor-widget-text-editor" data-id="0df981b" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>W tym artykule najpierw przyjrzymy się wbudowanym mechanizmom zarządzania polityką haseł w Keycloak. Następnie omówimy możliwości ich dostosowania do specyficznych wymagań.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-ad5f7b2 elementor-widget elementor-widget-image" data-id="ad5f7b2" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img fetchpriority="high" decoding="async" width="775" height="411" src="https://inero-software.com/wp-content/uploads/2025/03/115856.png" class="attachment-large size-large wp-image-7638" alt="" srcset="https://inero-software.com/wp-content/uploads/2025/03/115856.png 775w, https://inero-software.com/wp-content/uploads/2025/03/115856-300x159.png 300w, https://inero-software.com/wp-content/uploads/2025/03/115856-768x407.png 768w, https://inero-software.com/wp-content/uploads/2025/03/115856-566x300.png 566w" sizes="(max-width: 775px) 100vw, 775px" data-attachment-id="7638" data-permalink="https://inero-software.com/configuring-password-policies-in-keycloak/attachment/115856/" data-orig-file="https://inero-software.com/wp-content/uploads/2025/03/115856.png" data-orig-size="775,411" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="115856" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2025/03/115856-300x159.png" data-large-file="https://inero-software.com/wp-content/uploads/2025/03/115856.png" role="button" />													</div>
				</div>
				<div class="elementor-element elementor-element-b583771 elementor-widget elementor-widget-heading" data-id="b583771" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Wbudowane polityki </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-b2a2079 elementor-widget elementor-widget-text-editor" data-id="b2a2079" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Wbudowane polityki haseł w Keycloak umożliwiają administratorom egzekwowanie zasad bezpieczeństwa w celu wzmocnienia uwierzytelniania użytkowników. Poniżej znajduje się krótki opis każdej z nich:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-1dcf64f elementor-widget elementor-widget-text-editor" data-id="1dcf64f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<ol><li><strong>Wygasanie hasła (Expire Password)</strong> – Wymusza zmianę hasła po określonym czasie.</li><li><strong>Iteracje hashowania (Hashing Iterations)</strong> – Określa liczbę iteracji podczas hashowania hasła w celu zwiększenia bezpieczeństwa.</li><li><strong>Brak ponownego użycia (Not Recently Used)</strong> – Zapobiega ponownemu użyciu ostatnich haseł przez użytkownika.</li><li><strong>Czarna lista haseł (Password Blacklist)</strong> – Blokuje określone hasła, zwykle słabe lub powszechnie używane.</li><li><strong>Wyrażenie regularne (Regular Expression)</strong> – Pozwala wymusić niestandardowy wzorzec regex dla walidacji hasła.</li><li><strong>Minimalna długość (Minimum Length)</strong> – Ustawia minimalną liczbę znaków wymaganą w haśle.</li><li><strong>Brak nazwy użytkownika jako hasła (Not Username)</strong> – Uniemożliwia ustawienie nazwy użytkownika jako hasła.</li><li><strong>Brak adresu e-mail jako hasła (Not Email)</strong> – Zapobiega używaniu adresu e-mail jako hasła.</li><li><strong>Brak ponownego użycia w określonym czasie (Not Recently Used in Days)</strong> – Blokuje ponowne użycie hasła przez określoną liczbę dni.</li><li><strong>Nie zawiera nazwy użytkownika (Not Contains Username)</strong> – Wymusza, aby hasło nie zawierało nazwy użytkownika.</li><li><strong>Znaki specjalne (Special Characters)</strong> – Wymaga co najmniej jednego znaku specjalnego w haśle.</li><li><strong>Wielkie litery (Uppercase Characters)</strong> – Wymusza obecność co najmniej jednej wielkiej litery w haśle.</li><li><strong>Małe litery (Lowercase Characters)</strong> – Wymaga co najmniej jednej małej litery w haśle.</li><li><strong>Cyfry (Digits)</strong> – Wymaga co najmniej jednej cyfry w haśle.</li><li><strong>Maksymalny czas ważności uwierzytelnienia (Maximum Authentication Age)</strong> – Określa maksymalny czas ważności sesji przed wymuszeniem ponownego logowania.</li><li><strong>Algorytm hashowania (Hashing Algorithm)</strong> – Określa algorytm używany do szyfrowania haseł.</li><li><strong>Maksymalna długość (Maximum Length)</strong> – Definiuje maksymalną dopuszczalną długość hasła.</li></ol>						</div>
				</div>
				<div class="elementor-element elementor-element-95da107 elementor-widget elementor-widget-heading" data-id="95da107" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Implementacja niestandardowej polityki haseł przy użyciu SPI</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-86f9385 elementor-widget elementor-widget-text-editor" data-id="86f9385" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Aby zaimplementować niestandardową politykę haseł w Keycloak, należy użyć interfejsu dostawcy usług (SPI – Service Provider Interface).</p>						</div>
				</div>
				<div class="elementor-element elementor-element-efcfbc7 elementor-widget elementor-widget-text-editor" data-id="efcfbc7" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>W tym przypadku definiujemy niestandardowego dostawcę polityki haseł, implementując interfejs <strong>PasswordPolicyProviderFactory</strong>.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-a47d185 elementor-widget elementor-widget-code-highlight" data-id="a47d185" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>public class PasswordCustomPolicyProviderFactory implements PasswordPolicyProviderFactory {

	public static final Integer DEFAULT_VALUE = 1;
	public static final String MIN_PASSWORD_LIFETIME_ID = "minimumPasswordLifetime";

	@Override
	public String getId() {
    	return MIN_PASSWORD_LIFETIME_ID;
	}

	@Override
	public PasswordPolicyProvider create(KeycloakSession session) {
    	return new PasswordCustomPolicyProvider(session);
	}
[...]
}

</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-75140a5 elementor-widget elementor-widget-text-editor" data-id="75140a5" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><strong data-start="0" data-end="11" data-is-only-node="">Factory</strong> instancjonuje i zwraca nową instancję <strong data-start="50" data-end="82">PasswordCustomPolicyProvider</strong>, która zawiera logikę walidacji wymuszającą minimalny czas życia hasła. Stała <strong data-start="161" data-end="189">MIN_PASSWORD_LIFETIME_ID</strong> pełni rolę unikalnego identyfikatora tej niestandardowej polityki, a stała <strong data-start="265" data-end="282">DEFAULT_VALUE</strong> określa domyślny minimalny czas życia hasła (w dniach), jeśli nie zostanie skonfigurowana inna wartość w <strong data-start="388" data-end="405">Admin Console</strong>.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-3c1cd5b elementor-widget elementor-widget-code-highlight" data-id="3c1cd5b" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>public class PasswordCustomPolicyProvider implements PasswordPolicyProvider {
np.
   private static final String POLICY_VIOLATION_MESSAGE = "passwordLifetimeViolation";


   private final KeycloakSession keycloakSession;

   public PasswordCustomPolicyProvider(KeycloakSession keycloakSession) {
   	this.keycloakSession = keycloakSession;
   }


   @Override
   public PolicyError validate(RealmModel realm, UserModel user, String password) {
   	PasswordCredentialProvider credentialProvider = new PasswordCredentialProvider(keycloakSession);
   	PasswordCredentialModel credentialModel = credentialProvider.getPassword(realm, user);

   	if (credentialModel == null) {
       	return null;
   	}

   	long passwordCreationTime = credentialModel.getCreatedDate();
   	long currentTime = Time.currentTimeMillis();
   	long elapsedTime = currentTime - passwordCreationTime;

   	PasswordPolicy passwordPolicy = realm.getPasswordPolicy();
   	int minPasswordLifetimeDays = passwordPolicy.getPolicyConfig(PasswordCustomPolicyProviderFactory.MIN_PASSWORD_LIFETIME_ID);
   	long minPasswordLifetimeMillis = TimeUnit.DAYS.toMillis(minPasswordLifetimeDays);
   	return elapsedTime >= minPasswordLifetimeMillis ? null : new PolicyError(POLICY_VIOLATION_MESSAGE, minPasswordLifetimeDays);
   }
[...]
}
</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-7cd9848 elementor-widget elementor-widget-text-editor" data-id="7cd9848" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><strong>PasswordCredentialProvider</strong> może uzyskać dostęp do zapisanego znacznika czasu utworzenia hasła za pośrednictwem instancji <strong>PasswordCredentialModel</strong>. Następnie oblicza <strong>elapsedTime</strong> jako różnicę między tym znacznikiem a bieżącym czasem systemowym, co określa, jak długo hasło jest już używane.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-c8ec00f elementor-widget elementor-widget-text-editor" data-id="c8ec00f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Następnie obiekt <strong>PasswordPolicy</strong> pobiera politykę haseł dla danego realm&#8217;u, wyodrębnia minimalny wymagany czas życia hasła w dniach (<strong>minPasswordLifetimeDays</strong>) i przelicza go na milisekundy (<strong>minPasswordLifetimeMillis</strong>). Polityka ta zapewnia, że hasło było używane przez co najmniej wymagany okres. Jeśli warunek ten nie zostanie spełniony, zwracany jest obiekt <strong>PolicyError</strong>. Klucz wiadomości o błędzie jest zapisany w stałej <strong>POLICY_VIOLATION_MESSAGE</strong>, a jego treść może być dostosowana w naszym motywie. Pozwala to na zdefiniowanie przyjaznego komunikatu, który informuje użytkownika, dlaczego zmiana hasła jest niedostępna i ile czasu pozostało do możliwości ustawienia nowego.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-5c8b84b elementor-widget elementor-widget-image" data-id="5c8b84b" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img decoding="async" width="711" height="443" src="https://inero-software.com/wp-content/uploads/2025/03/122254.png" class="attachment-large size-large wp-image-7639" alt="" srcset="https://inero-software.com/wp-content/uploads/2025/03/122254.png 711w, https://inero-software.com/wp-content/uploads/2025/03/122254-300x187.png 300w, https://inero-software.com/wp-content/uploads/2025/03/122254-481x300.png 481w" sizes="(max-width: 711px) 100vw, 711px" data-attachment-id="7639" data-permalink="https://inero-software.com/configuring-password-policies-in-keycloak/attachment/122254/" data-orig-file="https://inero-software.com/wp-content/uploads/2025/03/122254.png" data-orig-size="711,443" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="122254" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2025/03/122254-300x187.png" data-large-file="https://inero-software.com/wp-content/uploads/2025/03/122254.png" role="button" />													</div>
				</div>
				<div class="elementor-element elementor-element-a18d447 elementor-widget elementor-widget-text-editor" data-id="a18d447" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>W ten sposób możemy definiować niestandardowe polityki haseł w Keycloak, gdy domyślny zestaw polityk okazuje się niewystarczający dla konkretnych wymagań. Taka elastyczność umożliwia bardziej szczegółową kontrolę nad uwierzytelnianiem użytkowników i zarządzaniem hasłami, gdy zachodzi taka potrzeba.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-ed723ca elementor-widget elementor-widget-heading" data-id="ed723ca" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Dostosowanie interfejsu w celu poprawy UX</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-0d876c8 elementor-widget elementor-widget-text-editor" data-id="0d876c8" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Domyślnie Keycloak wyświetla niespełnione polityki haseł osobno na stronie logowania. Może to być problematyczne dla wielu użytkowników, zwłaszcza gdy naruszonych jest kilka zasad jednocześnie. Prowadzi to do przeładowanego interfejsu i utrudnia użytkownikom zrozumienie wszystkich wymagań dotyczących hasła. Aby temu zaradzić, można dostosować ekran logowania tak, aby prezentował zbiorczą listę wszystkich niespełnionych polityk haseł, co zapewni bardziej przejrzyste i przyjazne dla użytkownika doświadczenie.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-129921c elementor-widget elementor-widget-code-highlight" data-id="129921c" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>public class CustomFreeMarkerLoginFormsProvider extends FreeMarkerLoginFormsProvider {
/**
* Mapping between password policy provider IDs and custom messages
* Note: contains only standard policies that must be displayed in the UI
*/
private final Map<String, String> policyPropertyMessages = Map.of(
LengthPasswordPolicyProviderFactory.ID, MINIMUM_LENGTH_MESSAGE,
MaximumLengthPasswordPolicyProviderFactory.ID, MAXIMUM_LENGTH_MESSAGE,
DigitsPasswordPolicyProviderFactory.ID, MINIMUM_DIGIT_MESSAGE,
SpecialCharsPasswordPolicyProviderFactory.ID, MINIMUM_SPECIAL_CHAR_MESSAGE,
UpperCasePasswordPolicyProviderFactory.ID, MINIMUM_UPPERCASE_MESSAGE,
LowerCasePasswordPolicyProviderFactory.ID, MINIMUM_LOWERCASE_MESSAGE,
NotUsernamePasswordPolicyProviderFactory.ID, NOT_USERNAME_MESSAGE,
NotContainsUsernamePasswordPolicyProviderFactory.ID, NOT_CONTAINS_USERNAME_MESSAGE,
NotEmailPasswordPolicyProviderFactory.ID, NOT_EMAIL_MESSAGE
);

[...]

@Override
protected void createCommonAttributes(Theme theme, Locale locale, Properties messagesBundle,
UriBuilder baseUriBuilder, LoginFormsPages page) {
super.createCommonAttributes(theme, locale, messagesBundle, baseUriBuilder, page);
if (realm != null && realm.getPasswordPolicy() != null) {
attributes.put("passwordPolicies", getPasswordPolicyMessages(realm.getPasswordPolicy(), messagesBundle));
}}

[...]

private Map<String, String> getPasswordPolicyMessages(PasswordPolicy passwordPolicy, Properties messagesBundle) {
Map<String, String> policyMessages = new HashMap<>();
PasswordPolicy.Builder builder = passwordPolicy.toBuilder();
for (String policyName : passwordPolicy.getPolicies()) {
var value = builder.get(policyName);
String message = extractPolicyMessage(policyName, value, messagesBundle);
if (message != null) {
policyMessages.put(policyName, message);
}
}
return policyMessages;
}

[...]

/**
* Extracts a message for a given password policy from the messages bundle
* Note: Policy message is constructed by replacing the {0} placeholder with the policy value
*/
private String extractPolicyMessage(String policy, String value, Properties messagesBundle) {
String property = policyPropertyMessages.get(policy);
if (property == null) {
return null;
}
String policyMessage = messagesBundle.getProperty(property);
return policyMessage != null ? policyMessage.replace("{0}", value) : null;
}
</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-e47c0c6 elementor-widget elementor-widget-text-editor" data-id="e47c0c6" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Funkcja <strong>getPasswordPolicyMessages()</strong> już zbiera polityki haseł z obiektu <strong>PasswordPolicy</strong> i mapuje je na odpowiednie komunikaty z pliku wiadomości (<strong>message bundle</strong>). Można ją rozszerzyć tak, aby wyświetlała wszystkie niespełnione zasady w jednej zbiorczej wiadomości.</p><p>Polityki haseł, takie jak minimalna długość, wymagane cyfry, znaki specjalne itp., są mapowane na komunikaty za pomocą metody <strong>extractPolicyMessage()</strong>. Nasza implementacja serwisu przechodzi przez każdą z zasad i sprawdza, czy jest spełniona. Jeśli nie – wyświetlany jest odpowiadający jej komunikat.</p><p>Na stronie <strong>update-password.ftl</strong> możesz zaprezentować te niespełnione zasady jako listę przy użyciu szablonów <strong>FreeMarker</strong>.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-e70d98c elementor-widget elementor-widget-code-highlight" data-id="e70d98c" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>
    	<#if passwordPolicies?has_content>
        	<div class="${properties.kcAlertClass}">
            	<div class="${properties.kcAlertIconWrapperClass}">
                	<span class="${properties.kcAlertIconClass}"></span>
            	</div>
            	<span class="${properties.kcAlertTitleClass}">
            	${msg("passwordInstruction")} <br>
            	<#list passwordPolicies?keys as key>
                	<span class="${properties.kcAlertTitleClass}">&#x2022; ${passwordPolicies[key]}</span><br/>
            	</#list>
            	</span>
        	</div>
    	</#if>

</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-358fd5c elementor-widget elementor-widget-image" data-id="358fd5c" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img decoding="async" width="648" height="510" src="https://inero-software.com/wp-content/uploads/2025/03/123206.png" class="attachment-large size-large wp-image-7640" alt="" srcset="https://inero-software.com/wp-content/uploads/2025/03/123206.png 648w, https://inero-software.com/wp-content/uploads/2025/03/123206-300x236.png 300w, https://inero-software.com/wp-content/uploads/2025/03/123206-381x300.png 381w, https://inero-software.com/wp-content/uploads/2025/03/123206-380x300.png 380w" sizes="(max-width: 648px) 100vw, 648px" data-attachment-id="7640" data-permalink="https://inero-software.com/configuring-password-policies-in-keycloak/attachment/123206/" data-orig-file="https://inero-software.com/wp-content/uploads/2025/03/123206.png" data-orig-size="648,510" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="123206" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2025/03/123206-300x236.png" data-large-file="https://inero-software.com/wp-content/uploads/2025/03/123206.png" role="button" />													</div>
				</div>
				<div class="elementor-element elementor-element-6d7a6c0 elementor-widget elementor-widget-heading" data-id="6d7a6c0" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Praktyczne przykłady polityk haseł</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-776740f elementor-widget elementor-widget-text-editor" data-id="776740f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Zobaczmy, jak wyglądają polityki haseł w dużych firmach.</p><p> </p><p>Apple wymaga, aby hasła miały co najmniej osiem znaków i zawierały zarówno litery, jak i cyfry. Dodatkowo, hasła nie mogą zawierać trzech lub więcej identycznych znaków pod rząd i nie mogą być powszechnie używanymi hasłami.</p><p> </p><p>Facebook narzuca minimalną długość hasła wynoszącą ponad sześć znaków, choć zaleca stosowanie dłuższych haseł. Choć Meta nie wymaga użycia znaków specjalnych ani cyfr, zachęca do tworzenia złożonych haseł.</p><p> </p><p>Microsoft wymaga, aby hasła miały co najmniej 8 znaków i zawierały co najmniej dwa z następujących typów znaków: wielkie litery, małe litery, cyfry lub symbole. Dodatkowo, system może blokować możliwość ustawienia hasła zbyt podobnego do poprzedniego.</p><p> </p><p>Chociaż firmy te korzystają z różnych narzędzi uwierzytelniania, warto zwrócić uwagę na standardy bezpieczeństwa wdrażane w dużych systemach produkcyjnych.</p><p> </p><p>I mimo że te polityki haseł nie są skrajnie restrykcyjne, użytkownicy powinni unikać wykorzystywania w hasłach wrażliwych danych osobowych, takich jak imiona, daty urodzenia czy numery telefonów. Należy również unikać ponownego używania haseł w różnych usługach, ponieważ może to prowadzić do naruszeń bezpieczeństwa w przypadku przejęcia jednego z kont. Włączenie uwierzytelniania dwuskładnikowego (2FA) i okresowy przegląd bezpieczeństwa haseł to kolejne kroki, które użytkownicy mogą podjąć w celu zwiększenia ochrony.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-d64b6d9 elementor-widget elementor-widget-heading" data-id="d64b6d9" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Podsumowanie </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-911c3a6 elementor-widget elementor-widget-text-editor" data-id="911c3a6" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Jak widać, Keycloak oferuje zestaw domyślnych polityk haseł, które obejmują standardowe zasady bezpieczeństwa, takie jak minimalna długość, wymagania dotyczące złożoności czy historia użycia haseł. Wbudowane polityki są wystarczające w wielu przypadkach, jednak w razie potrzeby istnieje możliwość ich dostosowania do konkretnych wymagań organizacyjnych. Keycloak pozwala również na tworzenie własnych polityk haseł, co daje większą kontrolę nad bezpieczeństwem.</p><p> </p><p>Oprócz modyfikacji samych zasad, Keycloak umożliwia także dostosowanie interfejsu użytkownika. Jest to szczególnie przydatne w sytuacjach, gdy domyślny sposób prezentowania naruszeń polityk haseł — np. wyświetlanie niespełnionych wymagań osobno — nie spełnia naszych oczekiwań. W takich przypadkach możemy zmienić sposób prezentacji błędów lub wzbogacić komunikaty o dodatkowe informacje, aby były bardziej czytelne i zrozumiałe dla użytkownika.</p><p> </p><p>Dzięki tym możliwościom Keycloak pokazuje wysoki poziom elastyczności, umożliwiając pełną kontrolę zarówno nad politykami bezpieczeństwa, jak i nad wyglądem interfejsu. Czyni go to uniwersalnym rozwiązaniem do zarządzania tożsamością i dostępem. Możliwość definiowania własnych reguł i dostosowywania komponentów sprawia, że Keycloak to skalowalne narzędzie, które z łatwością można dopasować do indywidualnych potrzeb organizacji.</p>						</div>
				</div>
					</div>
				</div>
				</div>
		<p>Artykuł <a href="https://inero-software.com/pl/konfiguracja-polityki-hasel-w-keycloak/">Konfiguracja polityki haseł w Keycloak</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7653</post-id>	</item>
		<item>
		<title>Zaufane urządzenia w Keycloak</title>
		<link>https://inero-software.com/pl/zaufane-urzadzenia-w-keycloak/</link>
		
		<dc:creator><![CDATA[Marta Kuprasz]]></dc:creator>
		<pubDate>Thu, 06 Mar 2025 09:50:09 +0000</pubDate>
				<category><![CDATA[Firma]]></category>
		<category><![CDATA[Keycloak]]></category>
		<category><![CDATA[2FA]]></category>
		<category><![CDATA[atrybuty Keycloak]]></category>
		<category><![CDATA[cyberbezpieczeństwo]]></category>
		<category><![CDATA[funkcje Keycloak]]></category>
		<category><![CDATA[hasło]]></category>
		<category><![CDATA[IAM]]></category>
		<category><![CDATA[keycloak]]></category>
		<category><![CDATA[logowanie]]></category>
		<category><![CDATA[MFA]]></category>
		<category><![CDATA[zaufane urządzenia]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=7466</guid>

					<description><![CDATA[<p> Jednym z rozwiązań pozwalających na elastyczne zarządzanie poziomem zabezpieczeń jest mechanizm zaufanych urządzeń, który pozwala użytkownikowi na ograniczenie liczby wymaganych kroków logowania dla znanych i bezpiecznych urządzeń. </p>
<p>Artykuł <a href="https://inero-software.com/pl/zaufane-urzadzenia-w-keycloak/">Zaufane urządzenia w Keycloak</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="7466" class="elementor elementor-7466" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-61f5765 e-flex e-con-boxed e-con e-parent" data-id="61f5765" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-bd55449 elementor-widget elementor-widget-html" data-id="bd55449" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
			 		</div>
				</div>
				<div class="elementor-element elementor-element-a676703 elementor-widget elementor-widget-text-editor" data-id="a676703" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4><span class="TextRun SCXW97920126 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW97920126 BCX0">Uwierzytelnianie użytkowników w systemach IT wiąże się z koniecznością znalezienia kompromisu między wygodą a bezpieczeństwem. Z jednej strony użytkownicy oczekują jak najmniejszej liczby kroków przy logowaniu, z drugiej strony konieczne jest zabezpieczenie dostępu do systemu przed nieautoryzowanym użyciem. Jednym z rozwiązań pozwalających na elastyczne zarządzanie poziomem zabezpieczeń jest mechanizm zaufanych urządzeń</span><span class="NormalTextRun SCXW97920126 BCX0">, </span><span class="NormalTextRun SCXW97920126 BCX0">który umożliwia użytkownikowi ograniczenie liczby wymaganych kroków logowania dla znanych i bezpiecznych urządzeń.</span></span><span class="EOP SCXW97920126 BCX0" data-ccp-props="{}"> </span></h4>						</div>
				</div>
				<div class="elementor-element elementor-element-56ff357 elementor-widget elementor-widget-text-editor" data-id="56ff357" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW192030144 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW192030144 BCX0">Im bardziej zacieśniamy politykę bezpieczeństwa, tym większa uciążliwość dla użytkownika</span></span><span class="TextRun SCXW192030144 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW192030144 BCX0">.</span></span><span class="TextRun SCXW192030144 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW192030144 BCX0">– to odwieczny dylemat administratorów systemów. Długie i skomplikowane hasła, częsta ich zmiana, czy dodatkowe składniki uwierzytelniania zwiększają ochronę, ale jednocześnie prowadzą do tego, że użytkownicy szukają sposobów na obejście procedur – zapisują hasła </span><span class="NormalTextRun SCXW192030144 BCX0">w notatniku</span><span class="NormalTextRun SCXW192030144 BCX0"> lub w przeglądarkach.</span></span><span class="EOP SCXW192030144 BCX0" data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-2bce090 elementor-widget elementor-widget-heading" data-id="2bce090" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Zaufane urządzenia – jak to działa? </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-50fe905 elementor-widget elementor-widget-text-editor" data-id="50fe905" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span data-contrast="auto">Domyślnie Keycloak nie rozpoznaje i nie zapamiętuje urządzeń, dlatego każda sesja traktowana jest niezależnie. Dzięki rozszerzeniom można jednak dodać obsługę zaufanych urządzeń, co pozwala użytkownikowi pominąć część kroków przy kolejnym logowaniu.</span><span data-ccp-props="{}"> </span></p><p><span data-ccp-props="{}"> </span></p><p><span data-contrast="auto">CTO Inero Software, </span><b><span data-contrast="auto">Waldemar Korłub</span></b><span data-contrast="auto">, podkreśla:</span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-696e202 elementor-blockquote--skin-border elementor-blockquote--button-color-official elementor-widget elementor-widget-blockquote" data-id="696e202" data-element_type="widget" data-widget_type="blockquote.default">
				<div class="elementor-widget-container">
					<blockquote class="elementor-blockquote">
			<p class="elementor-blockquote__content">
				„Stąd właśnie koncepcja zaufanych urządzeń – za pierwszym razem musimy przejść przez wszystkie kroki, ale potem aplikacja może na przykład zrezygnować z pytania o kod logowania dwuskładnikowego.” 			</p>
					</blockquote>
				</div>
				</div>
				<div class="elementor-element elementor-element-f14d2c6 elementor-widget elementor-widget-text-editor" data-id="f14d2c6" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW63218033 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW63218033 BCX0">Po oznaczeniu urządzenia jako &#8222;zaufane&#8221; system może przechowywać jego status przez określony czas, co pozwala na uproszczone logowanie. Użytkownik może nadal być okresowo proszony o ponowne uwierzytelnienie w celu zapewnienia bezpieczeństwa.</span></span><span class="EOP SCXW63218033 BCX0" data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-b8b437d elementor-widget elementor-widget-heading" data-id="b8b437d" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Czy zapamiętywanie urządzeń jest bezpieczne? </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-785c726 elementor-widget elementor-widget-text-editor" data-id="785c726" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW118681719 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW118681719 BCX0">Choć mechanizm zaufanych urządzeń poprawia komfort użytkowania, wprowadza także dodatkowe ryzyko. Największym zagrożeniem jest kradzież lub utrata urządzenia, któremu wcześniej nadano status zaufanego.</span></span><span class="EOP SCXW118681719 BCX0" data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-a64bc8c elementor-widget elementor-widget-text-editor" data-id="a64bc8c" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW14584255 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW14584255 BCX0">Jak zauważa Waldemar Korłub: </span></span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-d11c9c8 elementor-blockquote--skin-border elementor-blockquote--button-color-official elementor-widget elementor-widget-blockquote" data-id="d11c9c8" data-element_type="widget" data-widget_type="blockquote.default">
				<div class="elementor-widget-container">
					<blockquote class="elementor-blockquote">
			<p class="elementor-blockquote__content">
				„Jeśli system nie wymaga dodatkowego składnika uwierzytelniania, atakujący może uzyskać dostęp do wszystkich zapisanych aplikacji. Dlatego kluczowe jest, aby użytkownik miał możliwość zarządzania zaufanymi urządzeniami – najlepiej z poziomu panelu, gdzie w każdej chwili można je usunąć.” 			</p>
					</blockquote>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-1059003 e-flex e-con-boxed e-con e-parent" data-id="1059003" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-aa6f62d elementor-widget elementor-widget-text-editor" data-id="aa6f62d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW238539112 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW238539112 BCX0">Wprowadzenie panelu zarządzania urządzeniami oraz opcji cofnięcia statusu zaufanego urządzenia w sytuacji jego utraty to niezbędne elementy zapewniające bezpieczeństwo.</span></span><span class="EOP SCXW238539112 BCX0" data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-0483644 elementor-widget elementor-widget-heading" data-id="0483644" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Jak administratorzy mogą kontrolować dostęp w Keycloak? </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-84cbf21 elementor-widget elementor-widget-text-editor" data-id="84cbf21" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span data-contrast="auto">Administratorzy mogą ograniczać mechanizm zapamiętywania urządzeń, np. do określonych sieci lub firmowych urządzeń.</span><span data-ccp-props="{}">&nbsp;</span></p>
<p><span data-contrast="auto">Waldemar Korłub wyjaśnia: </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-4323398 elementor-blockquote--skin-border elementor-blockquote--button-color-official elementor-widget elementor-widget-blockquote" data-id="4323398" data-element_type="widget" data-widget_type="blockquote.default">
				<div class="elementor-widget-container">
					<blockquote class="elementor-blockquote">
			<p class="elementor-blockquote__content">
				„Możemy ten mechanizm ograniczyć na przykład do komputerów, które są w sieci lokalnej – jeśli użytkownicy korzystają z firmowego VPN-a, możemy rozpoznać sprzęt firmowy i tam udostępnić opcję zaufanych urządzeń.” 			</p>
					</blockquote>
				</div>
				</div>
				<div class="elementor-element elementor-element-4265831 elementor-widget elementor-widget-text-editor" data-id="4265831" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW134264168 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW134264168 BCX0">Dzięki takim rozwiązaniom można uniknąć sytuacji, w której użytkownicy nadają status zaufanego prywatnym urządzeniom, nad którymi organizacja nie ma kontroli.</span></span><span class="EOP SCXW134264168 BCX0" data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-32fce0a elementor-widget elementor-widget-heading" data-id="32fce0a" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Zaufane urządzenia w Keycloak – kluczowe wnioski </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-d135dd4 elementor-widget elementor-widget-text-editor" data-id="d135dd4" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<ul><li style="list-style-type: none;"><ul><li data-leveltext="" data-font="Symbol" data-listid="13" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:717,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Zaufane urządzenia pomagają w uproszczeniu logowania, ale wymagają odpowiednich zabezpieczeń</span><span data-ccp-props="{}"> </span></li></ul></li></ul><p><span data-contrast="auto">Mechanizm zaufanych urządzeń w Keycloak pozwala użytkownikom na pominięcie niektórych kroków uwierzytelniania, takich jak podawanie kodu 2FA. Jest to wygodne rozwiązanie, które usprawnia codzienną pracę, ale jednocześnie wymaga wdrożenia odpowiednich mechanizmów ochrony. Należy określić czas ważności zaufanego urządzenia, a także monitorować zmiany w sposobie logowania, aby nie dopuścić do nadużyć.</span><span data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-e312c00 elementor-widget elementor-widget-text-editor" data-id="e312c00" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<ul><li style="list-style-type: none;"><ul><li data-leveltext="" data-font="Symbol" data-listid="14" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:717,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Administratorzy mogą kontrolować politykę dostępu do zaufanych urządzeń</span><span data-ccp-props="{}"> </span></li></ul></li></ul><p><span data-contrast="auto">Nie każde urządzenie powinno być oznaczane jako zaufane, dlatego administratorzy mogą ograniczyć tę funkcję do firmowych komputerów lub wymagać połączenia z siecią VPN. W ten sposób można zapobiec sytuacji, w której użytkownik nadaje status zaufanego urządzenia prywatnemu komputerowi, nad którym organizacja nie ma kontroli.</span><span data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-715f0c8 elementor-widget elementor-widget-text-editor" data-id="715f0c8" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<ul><li style="list-style-type: none;"><ul><li><span data-contrast="auto">Panel zarządzania urządzeniami zwiększa bezpieczeństwo</span><span data-ccp-props="{}"> </span></li></ul></li></ul><p><span data-contrast="auto">Aby zapewnić użytkownikom większą kontrolę nad ich sesjami, warto wdrożyć panel pozwalający na przegląd i usuwanie zaufanych urządzeń. Dzięki temu w przypadku utraty sprzętu lub podejrzenia nieautoryzowanego logowania użytkownik może szybko cofnąć nadane uprawnienia.</span><span data-ccp-props="{}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-1e4653d elementor-widget elementor-widget-text-editor" data-id="1e4653d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<ul><li style="list-style-type: none;"><ul><li data-leveltext="" data-font="Symbol" data-listid="16" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:717,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Możliwość usunięcia urządzenia chroni przed przejęciem konta</span><span data-ccp-props="{}"> </span></li></ul></li></ul><p><span data-contrast="auto">Jeśli urządzenie zostanie skradzione lub zgubione, a system nie wymaga dodatkowej autoryzacji, atakujący może uzyskać dostęp do konta użytkownika. Dlatego ważne jest, aby w każdej chwili można było usunąć zaufane urządzenie i wymusić ponowną weryfikację. Takie rozwiązanie pozwala na większą elastyczność, a jednocześnie zmniejsza ryzyko przejęcia konta przez osoby nieuprawnione.</span><span data-ccp-props="{}"> </span></p><p><span data-ccp-props="{&quot;335559685&quot;:0}"> </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-74208e6 elementor-widget elementor-widget-heading" data-id="74208e6" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Kiedy warto wykorzystać funkcje zaufane urządzenia w Keycloak? </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-c9a0c94 elementor-widget elementor-widget-text-editor" data-id="c9a0c94" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span class="TextRun SCXW150832403 BCX0" lang="PL-PL" xml:lang="PL-PL" data-contrast="auto"><span class="NormalTextRun SCXW150832403 BCX0">Funkcja zaufanych urządzeń w Keycloak pozwala na zwiększenie wygody logowania, przy jednoczesnym utrzymaniu wysokiego poziomu bezpieczeństwa. To zastosowanie sprawdza się szczególnie w środowiskach korporacyjnych oraz modelach BYOD (Bring Your Own Device), gdzie użytkownicy regularnie korzystają z tych samych urządzeń. Oznaczenie urządzenia jako zaufanego pozwala zmniejszyć liczbę żądań drugiego czynnika uwierzytelniania (2FA), wydłużyć sesję oraz dynamicznie dostosować politykę bezpieczeństwa, np. wymagając ponownej autoryzacji przy podejrzanych logowaniach. Dzięki temu można ograniczyć ryzyko przejęcia konta przez atakujących, nawet jeśli uzyskają hasło i kod 2FA, ponieważ logowanie z nowego urządzenia może wymagać dodatkowej weryfikacji. Implementacja mechanizmu zaufanych urządzeń w Keycloak pomaga w równoważeniu bezpieczeństwa i wygody użytkowników</span><span class="NormalTextRun SCXW150832403 BCX0">.</span></span><span class="EOP SCXW150832403 BCX0" data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:357,&quot;335559737&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:240,&quot;335559740&quot;:259}">&nbsp;</span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-eeb8eea elementor-widget elementor-widget-text-editor" data-id="eeb8eea" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span data-contrast="auto">Mechanizm zaufanych urządzeń w Keycloak to sposób na poprawę wygody logowania bez nadmiernego obniżenia poziomu cyberbezpieczeństwa. Odpowiednie wdrożenie polityki zapamiętywania urządzeń w Keycloak pozwala na zrównoważenie ochrony systemu i wygody użytkowników. Administratorzy powinni jednak zapewnić mechanizmy zarządzania listą zaufanych urządzeń oraz wymuszać okresowe potwierdzanie ich statusu, aby uniknąć potencjalnych zagrożeń</span><span data-ccp-props="{}"> </span></p><p><span data-ccp-props="{}"> </span></p>						</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-9973b2a e-flex e-con-boxed e-con e-parent" data-id="9973b2a" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-58da433 elementor-cta--skin-classic elementor-animated-content elementor-bg-transform elementor-bg-transform-zoom-in elementor-widget elementor-widget-call-to-action" data-id="58da433" data-element_type="widget" data-widget_type="call-to-action.default">
				<div class="elementor-widget-container">
					<a class="elementor-cta" href="https://calendar.google.com/calendar/u/0/appointments/schedules/AcZssZ3e3C_1YeBkt1uCr_qfOnG_N298UgLFwORcSTXigrPfOk0ls3ok-Uw_dSeGCoLdtYsN13GMm-n-">
					<div class="elementor-cta__bg-wrapper">
				<div class="elementor-cta__bg elementor-bg" style="background-image: url(https://inero-software.com/wp-content/uploads/2025/02/cta-2702-1030x579.png);" role="img" aria-label="cta 2702"></div>
				<div class="elementor-cta__bg-overlay"></div>
			</div>
							<div class="elementor-cta__content">
				
									<h2 class="elementor-cta__title elementor-cta__content-item elementor-content-item">
						Pomożemy Ci we wdrożeniu Keycloak					</h2>
				
									<div class="elementor-cta__description elementor-cta__content-item elementor-content-item">
						Chcesz wdrożyć Keycloak lub dodać nowe funkcjonalności? Umów spotkanie, by poznać możliwości. 					</div>
				
									<div class="elementor-cta__button-wrapper elementor-cta__content-item elementor-content-item ">
					<span class="elementor-cta__button elementor-button elementor-size-">
						Umów spotkanie 					</span>
					</div>
							</div>
						</a>
				</div>
				</div>
					</div>
				</div>
				</div>
		<p>Artykuł <a href="https://inero-software.com/pl/zaufane-urzadzenia-w-keycloak/">Zaufane urządzenia w Keycloak</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7466</post-id>	</item>
	</channel>
</rss>
