<?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>Technologie - Inero Software - Rozwiązania IT i Konsulting</title>
	<atom:link href="https://inero-software.com/pl/category/blog_pl/technologie/feed/" rel="self" type="application/rss+xml" />
	<link>https://inero-software.com/pl/category/blog_pl/technologie/</link>
	<description>Tworzymy cyfrowe innowacje</description>
	<lastBuildDate>Fri, 06 Feb 2026 15:32:39 +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>Technologie - Inero Software - Rozwiązania IT i Konsulting</title>
	<link>https://inero-software.com/pl/category/blog_pl/technologie/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">153509928</site>	<item>
		<title>Wdrożenie voicebota w obsłudze telefonicznej – aspekty, o których rzadko się mówi</title>
		<link>https://inero-software.com/pl/agenci-voicebot/</link>
		
		<dc:creator><![CDATA[Andrzej Chybicki]]></dc:creator>
		<pubDate>Fri, 06 Feb 2026 14:13:25 +0000</pubDate>
				<category><![CDATA[Blog_pl]]></category>
		<category><![CDATA[Firma]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[agent głosowy]]></category>
		<category><![CDATA[call center]]></category>
		<category><![CDATA[voicebot]]></category>
		<category><![CDATA[voicebot AI]]></category>
		<category><![CDATA[wdrożenie AI]]></category>
		<category><![CDATA[webhooki w voicebocie]]></category>
		<category><![CDATA[wersjonowanie agentów AI]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=8415</guid>

					<description><![CDATA[<p>Rozwiązania typu voicebot coraz częściej pojawiają się w obsłudze telefonicznej jako sposób na skrócenie czasu oczekiwania, obniżenie kosztów operacyjnych oraz zwiększenie dostępności usług. W praktyce jednak skuteczne wdrożenie agenta głosowego w rzeczywistym procesie biznesowym wymaga znacznie więcej niż poprawnie działający model językowy. Z perspektywy zespołu INERO kluczowe wyzwania ujawniają się&#8230;</p>
<p>Artykuł <a href="https://inero-software.com/pl/agenci-voicebot/">Wdrożenie voicebota w obsłudze telefonicznej – aspekty, o których rzadko się mówi</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="8415" class="elementor elementor-8415" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-0d9102a e-flex e-con-boxed e-con e-parent" data-id="0d9102a" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-ccc7bf6 e-con-full e-flex e-con e-child" data-id="ccc7bf6" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-374b0d0 e-con-full e-flex e-con e-child" data-id="374b0d0" data-element_type="container">
				<div class="elementor-element elementor-element-538e5ec elementor-widget elementor-widget-text-editor" data-id="538e5ec" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Rozwiązania typu voicebot coraz częściej pojawiają się w obsłudze telefonicznej jako sposób na skrócenie czasu oczekiwania, obniżenie kosztów operacyjnych oraz zwiększenie dostępności usług. W praktyce jednak skuteczne wdrożenie agenta głosowego w rzeczywistym procesie biznesowym wymaga znacznie więcej niż poprawnie działający model językowy. Z perspektywy zespołu INERO kluczowe wyzwania ujawniają się dopiero na etapie pracy produkcyjnej.</p><p> </p><p>Poniżej przedstawiamy wybrane doświadczenia z wdrożenia voicebota obsługującego wieloetapowy proces operacyjny. Są to elementy, które w istotny sposób wpływają na stabilność, przewidywalność i możliwość długoterminowego utrzymania rozwiązania.</p>						</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-0d4d338 e-con-full e-flex e-con e-child" data-id="0d4d338" data-element_type="container">
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-83e4084 e-flex e-con-boxed e-con e-parent" data-id="83e4084" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-a17c845 e-con-full e-flex e-con e-child" data-id="a17c845" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-7ff3b8b e-con-full e-flex e-con e-child" data-id="7ff3b8b" data-element_type="container">
				<div class="elementor-element elementor-element-7737e4c elementor-widget elementor-widget-text-editor" data-id="7737e4c" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h3 data-start="1060" data-end="1127">Testy rozmów i integracji jako element architektury rozwiązania</h3><p data-start="1129" data-end="1326">W projektach voicebotowych testowanie nie powinno być traktowane jako końcowy etap prac. Już na wczesnym etapie okazało się, że niezbędne jest rozdzielenie testów na dwie uzupełniające się warstwy:</p><ul><li style="list-style-type: none;"><ul data-start="1328" data-end="1630"><li data-start="1328" data-end="1454"><p data-start="1330" data-end="1454"><strong data-start="1330" data-end="1357">testy przebiegu rozmowy</strong>, weryfikujące kolejność pytań, poprawność dopytań oraz logiczne domykanie poszczególnych etapów,</p></li><li data-start="1455" data-end="1630"><p data-start="1457" data-end="1630"><strong data-start="1457" data-end="1495">testy wywołań narzędzi i webhooków</strong>, sprawdzające, czy agent komunikuje się z systemami backendowymi dokładnie w tych momentach, które są wymagane przez proces biznesowy.</p></li></ul></li></ul><p data-start="1632" data-end="1799">Takie podejście pozwala wychwycić błędy niewidoczne na poziomie samej konwersacji, a mające bezpośredni wpływ na integralność danych i dalsze przetwarzanie informacji.</p><blockquote><p data-start="1801" data-end="2208"><strong data-start="1801" data-end="1817">Case snippet</strong><br data-start="1817" data-end="1820" /><em data-start="1820" data-end="1830">Symptom:</em> rozmowa przebiegała poprawnie, użytkownik potwierdzał jej podsumowanie, jednak dane nie trafiały do systemu operacyjnego.<br data-start="1952" data-end="1955" /><em data-start="1955" data-end="1967">Działanie:</em> wprowadziliśmy automatyczne testy weryfikujące warunki oraz moment wywołania webhooków.<br data-start="2055" data-end="2058" /><em data-start="2058" data-end="2068">Wniosek:</em> poprawna rozmowa nie gwarantuje poprawnej realizacji procesu – integracje wymagają równie rygorystycznego testowania jak warstwa dialogowa.</p></blockquote>						</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-8f900ea e-con-full e-flex e-con e-child" data-id="8f900ea" data-element_type="container">
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-37329ca e-flex e-con-boxed e-con e-parent" data-id="37329ca" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-1681f2e elementor-widget elementor-widget-spacer" data-id="1681f2e" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-9e80568 e-flex e-con-boxed e-con e-parent" data-id="9e80568" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-a8d9f11 e-con-full e-flex e-con e-child" data-id="a8d9f11" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-be0da77 e-con-full e-flex e-con e-child" data-id="be0da77" data-element_type="container">
				<div class="elementor-element elementor-element-18aa79f elementor-widget elementor-widget-text-editor" data-id="18aa79f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h3 data-start="2215" data-end="2292">Wersjonowanie agentów – dlaczego GUI zabija powtarzalność i audytowalność</h3><p data-start="2294" data-end="2581">W wielu platformach agentowych najprostszym sposobem wprowadzania zmian jest bezpośrednia edycja konfiguracji w interfejsie graficznym. Takie podejście działa na wczesnym etapie projektu, jednak bardzo szybko ujawnia swoje ograniczenia. Problemy pojawiają się w szczególności wtedy, gdy:</p><ul><li style="list-style-type: none;"><ul data-start="2583" data-end="2866"><li data-start="2583" data-end="2651"><p data-start="2585" data-end="2651">dwie osoby niezależnie modyfikują instrukcję tego samego agenta,</p></li><li data-start="2652" data-end="2756"><p data-start="2654" data-end="2756">drobna poprawka wprowadzona „na szybko” trafia na środowisko produkcyjne bez śladu w historii zmian,</p></li><li data-start="2757" data-end="2866"><p data-start="2759" data-end="2866">po czasie nie da się jednoznacznie odtworzyć, <strong data-start="2805" data-end="2814">kiedy</strong> i <strong data-start="2817" data-end="2829">dlaczego</strong> agent zaczął zachowywać się inaczej.</p></li></ul></li></ul><p data-start="2868" data-end="3003">Z tego względu konfigurację agentów zaczęliśmy traktować jak kod źródłowy, a nie jak parametr edytowany w GUI. W praktyce oznaczało to:</p><ul><li style="list-style-type: none;"><ul data-start="3005" data-end="3315"><li data-start="3005" data-end="3072"><p data-start="3007" data-end="3072">wykonywanie <strong data-start="3019" data-end="3069">snapshotów konfiguracji agentów w repozytorium</strong>,</p></li><li data-start="3073" data-end="3197"><p data-start="3075" data-end="3197">stosowanie workflow typu <strong data-start="3100" data-end="3124">pull / update / push</strong>, umożliwiającego świadome przenoszenie zmian z GUI do kontroli wersji,</p></li><li data-start="3198" data-end="3315"><p data-start="3200" data-end="3315">spójne podejście do środowisk (np. dev / prod), nawet jeśli platforma agentowa posiada w tym zakresie ograniczenia.</p></li></ul></li></ul><p data-start="3317" data-end="3520">Na pierwszy rzut oka może to wyglądać jak nadmierny formalizm. W praktyce jednak bez takiego podejścia bardzo trudno realizować regresję, rollback czy rzetelną analizę przyczyn zmian w zachowaniu agenta.</p><blockquote><p data-start="3522" data-end="3675"><strong data-start="3522" data-end="3534">Wniosek:</strong> voicebot, którego konfiguracja nie jest wersjonowana, z czasem staje się rozwiązaniem trudnym do utrzymania i operacyjnie niekontrolowalnym.</p></blockquote>						</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-f00f5ee e-con-full e-flex e-con e-child" data-id="f00f5ee" data-element_type="container">
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-e514b51 e-flex e-con-boxed e-con e-parent" data-id="e514b51" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-63d66ba elementor-widget elementor-widget-spacer" data-id="63d66ba" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-6c3335a e-flex e-con-boxed e-con e-parent" data-id="6c3335a" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-965b5b7 e-con-full e-flex e-con e-child" data-id="965b5b7" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-34b861d e-con-full e-flex e-con e-child" data-id="34b861d" data-element_type="container">
				<div class="elementor-element elementor-element-28d6bed elementor-widget elementor-widget-text-editor" data-id="28d6bed" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h3 data-start="3682" data-end="3733">Produkcja jako weryfikacja założeń projektowych</h3><p data-start="3735" data-end="4065">Rzeczywiste rozmowy telefoniczne różnią się istotnie od scenariuszy testowych. Użytkownicy mówią w różnym tempie, wracają do wcześniejszych wątków lub nie potrafią jednoznacznie sformułować odpowiedzi. Z tego powodu kluczowe znaczenie ma kontrola przebiegu rozmowy jako całości, a nie wyłącznie poprawność pojedynczych wypowiedzi.</p><blockquote><p data-start="4067" data-end="4457"><strong data-start="4067" data-end="4083">Case snippet</strong><br data-start="4083" data-end="4086" /><em data-start="4086" data-end="4096">Symptom:</em> część połączeń trwała bardzo długo i nie prowadziła do jednoznacznego zakończenia procesu.<br data-start="4187" data-end="4190" /><em data-start="4190" data-end="4202">Działanie:</em> wprowadziliśmy z góry określony maksymalny czas trwania rozmowy oraz reguły jej kontrolowanego domykania.<br data-start="4308" data-end="4311" /><em data-start="4311" data-end="4321">Wniosek:</em> limit czasu rozmowy pozwala kontrolować koszty operacyjne i zapobiega sytuacjom, w których rozmowa nie prowadzi do sensownej konkluzji.</p></blockquote>						</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-323cc18 e-con-full e-flex e-con e-child" data-id="323cc18" data-element_type="container">
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-53774c9 e-flex e-con-boxed e-con e-parent" data-id="53774c9" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-03b377b elementor-widget elementor-widget-spacer" data-id="03b377b" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-a6b3f74 e-flex e-con-boxed e-con e-parent" data-id="a6b3f74" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-7724aa9 e-con-full e-flex e-con e-child" data-id="7724aa9" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-56d8f8d e-con-full e-flex e-con e-child" data-id="56d8f8d" data-element_type="container">
				<div class="elementor-element elementor-element-60c55d5 elementor-widget elementor-widget-text-editor" data-id="60c55d5" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h3 data-start="4464" data-end="4523">Normalizacja danych jako element krytyczny architektury</h3><p data-start="4525" data-end="4775">Agent głosowy operuje na języku naturalnym, natomiast systemy backendowe wymagają danych jednoznacznych i ustrukturyzowanych. Bez spójnej normalizacji i walidacji dane zebrane w rozmowie mogą okazać się bezużyteczne na dalszych etapach przetwarzania.</p><blockquote><p data-start="4777" data-end="5132"><strong data-start="4777" data-end="4793">Case snippet</strong><br data-start="4793" data-end="4796" /><em data-start="4796" data-end="4806">Symptom:</em> kompletne dane zebrane w rozmowie nie przechodziły walidacji w systemach downstream.<br data-start="4891" data-end="4894" /><em data-start="4894" data-end="4906">Działanie:</em> dodaliśmy warstwę normalizacji i walidacji danych jeszcze przed ich przekazaniem do backendu.<br data-start="5000" data-end="5003" /><em data-start="5003" data-end="5013">Wniosek:</em> skuteczny voicebot wymaga dodatkowej warstwy logicznej, która tłumaczy język naturalny na precyzyjne struktury danych.</p></blockquote>						</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-8838f4f e-con-full e-flex e-con e-child" data-id="8838f4f" data-element_type="container">
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-1ff2eb4 e-flex e-con-boxed e-con e-parent" data-id="1ff2eb4" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-efc0e17 elementor-widget elementor-widget-spacer" data-id="efc0e17" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-4d3b10d e-flex e-con-boxed e-con e-parent" data-id="4d3b10d" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-804eb73 e-con-full e-flex e-con e-child" data-id="804eb73" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-2a80f01 e-con-full e-flex e-con e-child" data-id="2a80f01" data-element_type="container">
				<div class="elementor-element elementor-element-ad23e81 elementor-widget elementor-widget-text-editor" data-id="ad23e81" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h3 data-start="5139" data-end="5186">Checklista przed uruchomieniem produkcyjnym</h3><p data-start="5188" data-end="5340">Na podstawie zdobytych doświadczeń wypracowaliśmy zestaw elementów, które uznajemy za niezbędne przed uruchomieniem voicebota w środowisku produkcyjnym:</p><ol><li style="list-style-type: none;"><ol><li data-start="5345" data-end="5395">automatyczne testy wywołań narzędzi i webhooków,</li><li data-start="5399" data-end="5453">monitoring kompletności rozmowy i zbieranych danych,</li><li data-start="5457" data-end="5519">wersjonowanie konfiguracji agentów oraz możliwość rollbacku,</li><li data-start="5523" data-end="5572">jasno zdefiniowane warunki zakończenia rozmowy,</li><li data-start="5576" data-end="5625">kontrola maksymalnego czasu trwania połączenia,</li><li data-start="5629" data-end="5680">spójna normalizacja i walidacja danych wejściowych.</li></ol></li></ol>						</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-66730cc e-con-full e-flex e-con e-child" data-id="66730cc" data-element_type="container">
				<div class="elementor-element elementor-element-fd2e342 elementor-widget elementor-widget-image" data-id="fd2e342" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img fetchpriority="high" decoding="async" data-attachment-id="8456" data-permalink="https://inero-software.com/pl/agenci-voicebot/checklista_agenci_voicebot/" data-orig-file="https://inero-software.com/wp-content/uploads/2026/02/CheckLista_Agenci_VoiceBot.png" data-orig-size="1536,1024" 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="CheckLista_Agenci_VoiceBot" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2026/02/CheckLista_Agenci_VoiceBot-300x200.png" data-large-file="https://inero-software.com/wp-content/uploads/2026/02/CheckLista_Agenci_VoiceBot-1030x687.png" tabindex="0" role="button" width="1536" height="1024" src="https://inero-software.com/wp-content/uploads/2026/02/CheckLista_Agenci_VoiceBot.png" class="attachment-full size-full wp-image-8456" alt="" srcset="https://inero-software.com/wp-content/uploads/2026/02/CheckLista_Agenci_VoiceBot.png 1536w, https://inero-software.com/wp-content/uploads/2026/02/CheckLista_Agenci_VoiceBot-300x200.png 300w, https://inero-software.com/wp-content/uploads/2026/02/CheckLista_Agenci_VoiceBot-1030x687.png 1030w, https://inero-software.com/wp-content/uploads/2026/02/CheckLista_Agenci_VoiceBot-768x512.png 768w, https://inero-software.com/wp-content/uploads/2026/02/CheckLista_Agenci_VoiceBot-450x300.png 450w" sizes="(max-width: 1536px) 100vw, 1536px" data-attachment-id="8456" data-permalink="https://inero-software.com/pl/agenci-voicebot/checklista_agenci_voicebot/" data-orig-file="https://inero-software.com/wp-content/uploads/2026/02/CheckLista_Agenci_VoiceBot.png" data-orig-size="1536,1024" 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="CheckLista_Agenci_VoiceBot" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2026/02/CheckLista_Agenci_VoiceBot-300x200.png" data-large-file="https://inero-software.com/wp-content/uploads/2026/02/CheckLista_Agenci_VoiceBot-1030x687.png" role="button" />													</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-ab36e2b e-flex e-con-boxed e-con e-parent" data-id="ab36e2b" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-44ff568 elementor-widget elementor-widget-spacer" data-id="44ff568" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-76a73b6 e-flex e-con-boxed e-con e-parent" data-id="76a73b6" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-9bcef82 e-con-full e-flex e-con e-child" data-id="9bcef82" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-6d4df98 e-con-full e-flex e-con e-child" data-id="6d4df98" data-element_type="container">
				<div class="elementor-element elementor-element-fc93fc3 elementor-widget elementor-widget-text-editor" data-id="fc93fc3" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h3 data-start="5687" data-end="5703">Podsumowanie</h3><p data-start="5705" data-end="6063">Z perspektywy zespołu INERO wdrożenie voicebota w obsłudze telefonicznej należy traktować jako projekt systemowy, a nie wyłącznie implementację modelu językowego. O powodzeniu rozwiązania w dużej mierze decydują elementy niewidoczne dla użytkownika końcowego: testy integracyjne, wersjonowanie konfiguracji, monitoring oraz jasno zdefiniowana logika procesu.</p><p data-start="6065" data-end="6253" data-is-last-node="" data-is-only-node="">To właśnie te aspekty sprawiają, że voicebot przestaje być eksperymentem technologicznym, a staje się stabilnym narzędziem operacyjnym, gotowym do długoterminowego utrzymania i skalowania.</p>						</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-31218ec e-con-full e-flex e-con e-child" data-id="31218ec" data-element_type="container">
				</div>
					</div>
				</div>
				</div>
		<p>Artykuł <a href="https://inero-software.com/pl/agenci-voicebot/">Wdrożenie voicebota w obsłudze telefonicznej – aspekty, o których rzadko się mówi</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">8415</post-id>	</item>
		<item>
		<title>OpenAI vs. DeepSeek: Techniczne porównanie z wykorzystaniem zunifikowanych interfejsów API</title>
		<link>https://inero-software.com/pl/openai-vs-deepseek-techniczne-porownanie-z-wykorzystaniem-zunifikowanych-interfejsow-api/</link>
		
		<dc:creator><![CDATA[Martyna Mul]]></dc:creator>
		<pubDate>Fri, 14 Mar 2025 14:40:50 +0000</pubDate>
				<category><![CDATA[Blog_pl]]></category>
		<category><![CDATA[Firma]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[4o-mini]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[DeepSeek]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[modele]]></category>
		<category><![CDATA[o3-mini]]></category>
		<category><![CDATA[sztuczna inteligencja]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=7584</guid>

					<description><![CDATA[<p>W tym artykule przeprowadzamy analizę porównawczą trzech popularnych modeli LLM—modeli GPT od OpenAI: 4o-mini i o3-mini, oraz DeepSeek R1—w celu oceny ich skuteczności w odczytywaniu i analizie danych statystycznych z dużych plików PDF.</p>
<p>Artykuł <a href="https://inero-software.com/pl/openai-vs-deepseek-techniczne-porownanie-z-wykorzystaniem-zunifikowanych-interfejsow-api/">OpenAI vs. DeepSeek: Techniczne porównanie z wykorzystaniem zunifikowanych interfejsów API</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="7584" class="elementor elementor-7584" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-4c59976 e-flex e-con-boxed e-con e-parent" data-id="4c59976" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-5cf6ead elementor-widget elementor-widget-html" data-id="5cf6ead" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
			 		</div>
				</div>
				<div class="elementor-element elementor-element-a037070 elementor-widget elementor-widget-text-editor" data-id="a037070" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4>Duże modele językowe (LLM) są coraz częściej wykorzystywane do analizy i ekstrakcji informacji z obszernych dokumentów, w tym długich raportów statystycznych w formacie PDF. Jednak nie wszystkie modele radzą sobie równie dobrze z przetwarzaniem dużych plików, zwłaszcza tych przekraczających 50 stron. W tym artykule przeprowadzamy analizę porównawczą trzech popularnych modeli LLM—modeli GPT od OpenAI: 4o-mini i o3-mini, oraz DeepSeek R1—w celu oceny ich skuteczności w odczytywaniu i analizie danych statystycznych z dużych plików PDF. Nasza ocena koncentruje się na trzech kluczowych czynnikach: dokładności, czasie odpowiedzi oraz szacunkowych kosztach korzystania z każdego modelu.</h4>						</div>
				</div>
				<div class="elementor-element elementor-element-237cac6 elementor-widget elementor-widget-text-editor" data-id="237cac6" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Aby zapewnić rzetelne porównanie, wykorzystaliśmy LiteLLM – zunifikowane API, które upraszcza benchmarking różnych modeli LLM. Standaryzując interakcje między dostawcami modeli, LiteLLM pozwoliło nam skupić się na ocenie metryk wydajności LLM zamiast na różnicach w implementacji.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-53a2380 elementor-widget elementor-widget-heading" data-id="53a2380" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Zunifikowane podejście API</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-f569e31 elementor-widget elementor-widget-text-editor" data-id="f569e31" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Porównywanie modeli LLM typu od różnych dostawców bywa wyzwaniem ze względu na różnice w ich interfejsach API. Aby ujednolicić nasze testy, wykorzystaliśmy LiteLLM – bibliotekę zapewniającą spójny interfejs do obsługi wielu modeli LLM. Dzięki temu możliwa była łatwa zamiana modeli oraz bardziej obiektywne porównanie ich wydajności. Oto, jak proste jest przełączanie między modelami przy użyciu zunifikowanego API LiteLLM:</p>						</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-277031f e-flex e-con-boxed e-con e-parent" data-id="277031f" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-66b9211 elementor-widget elementor-widget-text-editor" data-id="66b9211" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<pre><span class="TextRun SCXW177913088 BCX0" lang="EN-GB" xml:lang="EN-GB" data-contrast="auto"><span class="NormalTextRun SCXW177913088 BCX0">import litellm</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW177913088 BCX0"><span class="SCXW177913088 BCX0"> </span><br class="SCXW177913088 BCX0" /></span><span class="LineBreakBlob BlobObject DragDrop SCXW177913088 BCX0"><span class="SCXW177913088 BCX0"> </span><br class="SCXW177913088 BCX0" /></span><span class="TextRun SCXW177913088 BCX0" lang="EN-GB" xml:lang="EN-GB" data-contrast="auto"><span class="NormalTextRun SCXW177913088 BCX0"># To use </span><span class="NormalTextRun SpellingErrorV2Themed SCXW177913088 BCX0">openai</span><span class="NormalTextRun SCXW177913088 BCX0">.</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW177913088 BCX0"><span class="SCXW177913088 BCX0"> </span><br class="SCXW177913088 BCX0" /></span><span class="TextRun SCXW177913088 BCX0" lang="EN-GB" xml:lang="EN-GB" data-contrast="auto"><span class="NormalTextRun SCXW177913088 BCX0">response = </span><span class="NormalTextRun SpellingErrorV2Themed SCXW177913088 BCX0">litellm.completion</span><span class="NormalTextRun SCXW177913088 BCX0">(model="</span><span class="NormalTextRun SCXW177913088 BCX0">o3-mini</span><span class="NormalTextRun SCXW177913088 BCX0">", messages</span><span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW177913088 BCX0">=[</span><span class="NormalTextRun SCXW177913088 BCX0">{"content": "Hello", "role": "user"}])</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW177913088 BCX0"><span class="SCXW177913088 BCX0"> </span><br class="SCXW177913088 BCX0" /></span><span class="LineBreakBlob BlobObject DragDrop SCXW177913088 BCX0"><span class="SCXW177913088 BCX0"> </span><br class="SCXW177913088 BCX0" /></span><span class="TextRun SCXW177913088 BCX0" lang="EN-GB" xml:lang="EN-GB" data-contrast="auto"><span class="NormalTextRun SCXW177913088 BCX0"># To use </span><span class="NormalTextRun SpellingErrorV2Themed SCXW177913088 BCX0">deepseek</span><span class="NormalTextRun SCXW177913088 BCX0">.</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW177913088 BCX0"><span class="SCXW177913088 BCX0"> </span><br class="SCXW177913088 BCX0" /></span><span class="TextRun SCXW177913088 BCX0" lang="EN-GB" xml:lang="EN-GB" data-contrast="auto"><span class="NormalTextRun SCXW177913088 BCX0">response = </span><span class="NormalTextRun SpellingErrorV2Themed SCXW177913088 BCX0">litellm.completion</span><span class="NormalTextRun SCXW177913088 BCX0">(model="</span><span class="NormalTextRun SpellingErrorV2Themed SCXW177913088 BCX0">deepseek</span><span class="NormalTextRun SCXW177913088 BCX0">/</span><span class="NormalTextRun SpellingErrorV2Themed SCXW177913088 BCX0">deepseek</span><span class="NormalTextRun SCXW177913088 BCX0">-</span><span class="NormalTextRun SCXW177913088 BCX0">reasoner</span><span class="NormalTextRun SCXW177913088 BCX0">", messages</span><span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW177913088 BCX0">=[</span><span class="NormalTextRun SCXW177913088 BCX0">{"content": "Hello", "role": "user"}])</span></span><span class="LineBreakBlob BlobObject DragDrop SCXW177913088 BCX0"><span class="SCXW177913088 BCX0"> </span><br class="SCXW177913088 BCX0" /></span></pre>						</div>
				</div>
				<div class="elementor-element elementor-element-ad9012a elementor-widget elementor-widget-text-editor" data-id="ad9012a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>To uproszczone podejście pozwoliło nam porównać modele bez konieczności zajmowania się złożonością ich implementacji.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-bdf2fca elementor-widget elementor-widget-heading" data-id="bdf2fca" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">DeepSeek vs. OpenAI – przegląd modeli</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-2a9d55a elementor-widget elementor-widget-text-editor" data-id="2a9d55a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Zanim przejdziemy do wyników benchmarku modeli AI, zdefiniujmy kluczowe pojęcia i przedstawmy podstawowe specyfikacje testowanych modeli.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-3070cc7 elementor-widget elementor-widget-text-editor" data-id="3070cc7" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Jednym z najważniejszych parametrów w benchmarkingu modeli LLM jest okno kontekstowe – maksymalna liczba tokenów, które model może przetworzyć jednocześnie. Tokeny reprezentują fragmenty tekstu, a nie pojedyncze słowa. Większe okno kontekstowe pozwala modelowi obsługiwać bardziej rozbudowane dokumenty w jednym zapytaniu, co ma kluczowe znaczenie przy pracy z długimi raportami statystycznymi.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-d7ab0b3 elementor-widget elementor-widget-text-editor" data-id="d7ab0b3" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Ceny korzystania z modeli LLM są zazwyczaj oparte na liczbie przetworzonych tokenów, przy czym koszt może się różnić w zależności od rodzaju tokenów. W modelach LLM wyróżnia się zazwyczaj trzy typy tokenów wpływające na wycenę:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-65a6290 elementor-widget elementor-widget-text-editor" data-id="65a6290" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<ol><li><p><strong>Tokeny wejściowe (input tokens)</strong> – reprezentują dane dostarczane do modelu, takie jak tekst zapytania lub dokument do analizy. Koszt przetwarzania wejściowych tokenów zależy od modelu i dostawcy.</p></li><li><p><strong>Tokeny wyjściowe (output tokens)</strong> – to treść generowana przez model w odpowiedzi na zapytanie. Ponieważ modele LLM mogą zwracać różne długości odpowiedzi, liczba tokenów wyjściowych ma istotny wpływ na końcowy koszt użytkowania.</p></li><li><p><strong>Tokeny kontekstowe (context tokens)</strong> – obejmują zarówno tokeny wejściowe, jak i poprzednie odpowiedzi modelu w sesji konwersacyjnej. Im większy kontekst przechowywany w pamięci modelu, tym większe zużycie tokenów i potencjalnie wyższy koszt.</p></li></ol><p>Zrozumienie tych kategorii jest kluczowe dla optymalizacji kosztów korzystania z LLM, zwłaszcza w przypadku analizy dużych dokumentów.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-d9daaed elementor-widget elementor-widget-text-editor" data-id="d9daaed" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Modele wybrane do tego porównania należą do najnowszych wersji wydanych w ostatnich miesiącach. Choć różnią się pod względem cen i możliwości, naszym celem jest ocena, czy te różnice przekładają się na mierzalne różnice w wydajności. Poniżej przedstawiamy kluczowe charakterystyki modeli DeepSeek-R1, OpenAI 4o-mini oraz OpenAI o3-mini:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-c83f80c elementor-widget elementor-widget-html" data-id="c83f80c" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
			<style>
    table {
        width: 100%;
        border-collapse: collapse;
        font-family: 'Roboto', sans-serif;
        font-weight: 300;
        font-size: 14px;
        color: #1C244B;
    }
    th, td {
        border: 1px solid #ddd;
        padding: 8px;
        text-align: left;
    }
    th {
        background-color: #f4f4f4;
        color: #1C244B;
    }
    tr:nth-child(even) {
        background-color: #f9f9f9;
    }
</style>

<table>
    <thead>
        <tr>
            <th></th>
            <th>DeepSeek-R1</th>
            <th>OpenAI 4o-mini</th>
            <th>OpenAI o3-mini</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><strong>Okno kontekstowe</strong></td>
            <td>128 000 tokenów</td>
            <td>128 000 tokenów (maksymalnie 16 384 tokenów w odpowiedzi)</td>
            <td>200 000 tokenów (maksymalnie 100 000 tokenów w odpowiedzi)</td>
        </tr>
        <tr>
            <td><strong>Data wydania</strong></td>
            <td>Styczeń 2025</td>
            <td>Lipiec 2024</td>
            <td>Styczeń 2025</td>
        </tr>
        <tr>
            <td><strong>Cennik (za 1 milion tokenów)</strong></td>
            <td>Wejście: 0,55 USD<br>Pamięć podręczna wejścia: 0,14 USD<br>Wyjście: 2,19 USD</td>
            <td>Wejście: 0,15 USD<br>Pamięć podręczna wejścia: 0,075 USD<br>Wyjście: 0,60 USD</td>
            <td>Wejście: 1,10 USD<br>Pamięć podręczna wejścia: 0,55 USD<br>Wyjście: 4,40 USD</td>
        </tr>
        <tr>
            <td><strong>Obsługiwane formaty wejściowe</strong></td>
            <td>Tekst</td>
            <td>Tekst, obrazy (w tym PNG, JPEG, GIF, WEBP)</td>
            <td>Tekst</td>
        </tr>
        <tr>
            <td><strong>Obsługiwane formaty wyjściowe</strong></td>
            <td>Tekst</td>
            <td>Tekst</td>
            <td>Tekst</td>
        </tr>
    </tbody>
</table>

<!-- Link do czcionki Google Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300&display=swap" rel="stylesheet">
		</div>
				</div>
				<div class="elementor-element elementor-element-fb0549b elementor-widget elementor-widget-heading" data-id="fb0549b" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Plik PDF użyty do testów</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-898fdb5 elementor-widget elementor-widget-text-editor" data-id="898fdb5" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Dokument użyty do testów składa się z kilku rozdziałów raportu dotyczącego polskiej i światowej gospodarki morskiej w latach 2017–2020. Raport ma 50 stron i zawiera różne statystyki oraz analizy dotyczące ruchu ładunkowego, żeglugi, przemysłu stoczniowego i innych sektorów gospodarki morskiej. Dane w pliku są sformatowane w tabelach i tekście. Większość informacji przedstawiono w tabelach, z dodatkowymi objaśnieniami i podsumowaniami w otaczającym tekście. Przykładowe strony dokumentu użytego do testów:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-cf84d20 elementor-widget elementor-widget-image" data-id="cf84d20" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img decoding="async" width="1030" height="728" src="https://inero-software.com/wp-content/uploads/2025/03/grafika-14032025-1030x728.png" class="attachment-large size-large wp-image-7573" alt="" srcset="https://inero-software.com/wp-content/uploads/2025/03/grafika-14032025-1030x728.png 1030w, https://inero-software.com/wp-content/uploads/2025/03/grafika-14032025-300x212.png 300w, https://inero-software.com/wp-content/uploads/2025/03/grafika-14032025-768x543.png 768w, https://inero-software.com/wp-content/uploads/2025/03/grafika-14032025-1536x1086.png 1536w, https://inero-software.com/wp-content/uploads/2025/03/grafika-14032025-424x300.png 424w, https://inero-software.com/wp-content/uploads/2025/03/grafika-14032025.png 2000w" sizes="(max-width: 1030px) 100vw, 1030px" data-attachment-id="7573" data-permalink="https://inero-software.com/openai-vs-deepseek-a-technical-comparison-using-unified-apis/grafika-14032025/" data-orig-file="https://inero-software.com/wp-content/uploads/2025/03/grafika-14032025.png" data-orig-size="2000,1414" 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="grafika 14032025" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2025/03/grafika-14032025-300x212.png" data-large-file="https://inero-software.com/wp-content/uploads/2025/03/grafika-14032025-1030x728.png" role="button" />													</div>
				</div>
				<div class="elementor-element elementor-element-e46d19d elementor-widget elementor-widget-heading" data-id="e46d19d" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default"><p>Metodologia testowania<span style="color: var( --e-global-color-primary );font-family: var( --e-global-typography-primary-font-family ), Sans-serif;font-size: 1.7em;font-weight: var( --e-global-typography-primary-font-weight );text-align: var(--text-align)"></span></p></h3>		</div>
				</div>
				<div class="elementor-element elementor-element-1ba1d08 elementor-widget elementor-widget-text-editor" data-id="1ba1d08" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Przeprowadziliśmy serię testów, wykorzystując następujące zapytania związane z gospodarką morską oraz plik PDF zawierający kontekstowe informacje. Oto przykładowe zapytania dotyczące danych zawartych w pliku PDF:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-4228b97 elementor-widget elementor-widget-text-editor" data-id="4228b97" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<ul><li style="list-style-type: none;"><ul><li>Podsumuj kluczowe wnioski ekonomiczne z raportu dotyczącego gospodarki morskiej.</li><li>Jaki był całkowity obrót ładunkowy w polskich portach morskich w 2020 roku?</li><li>Jakie są główne rodzaje ładunków obsługiwanych przez polskie porty morskie?</li><li>Które kraje są głównymi partnerami handlowymi Polski w transporcie morskim?</li><li>Jaki jest średni wiek statków we flocie polskiego transportu morskiego?</li><li>Jakie są kluczowe wskaźniki ekonomiczne polskiego przemysłu stoczniowego?</li></ul></li></ul>						</div>
				</div>
				<div class="elementor-element elementor-element-26bc5cf elementor-widget elementor-widget-text-editor" data-id="26bc5cf" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Jak wcześniej wspomniano, porównaliśmy następujące modele:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-890abbd elementor-widget elementor-widget-text-editor" data-id="890abbd" 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="7" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&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">OpenAI&#8217;s 4o-mini</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:0,&quot;335551620&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:0}"> </span></li></ul></li></ul><ul><li style="list-style-type: none;"><ul><li data-leveltext="" data-font="Symbol" data-listid="7" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&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="2" data-aria-level="1"><span data-contrast="auto">OpenAI&#8217;s </span><span data-contrast="auto">o3-mini</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:0,&quot;335551620&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:0}"> </span></li></ul></li></ul><ul><li style="list-style-type: none;"><ul><li data-leveltext="" data-font="Symbol" data-listid="7" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&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="3" data-aria-level="1"><span data-contrast="auto">DeepSeek&#8217;s </span><span data-contrast="auto">deepseek-resoner (R1)</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:0,&quot;335551620&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:0}"> </span></li></ul></li></ul>						</div>
				</div>
				<div class="elementor-element elementor-element-153e657 elementor-widget elementor-widget-text-editor" data-id="153e657" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Zmierzyliśmy następujące metryki:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-6ca549e elementor-widget elementor-widget-text-editor" data-id="6ca549e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<ul><li style="list-style-type: none;"><ul><li><strong>Czas inferencji</strong> – Określa czas potrzebny modelowi na wygenerowanie odpowiedzi po otrzymaniu zapytania. Krótszy czas inferencji oznacza szybsze reakcje, co ma kluczowe znaczenie dla aplikacji czasu rzeczywistego oraz przetwarzania dużych dokumentów.</li><li><strong>Zużycie tokenów</strong> – Modele LLM przetwarzają i generują tekst w jednostkach zwanych tokenami. Token może być pełnym słowem, jego częścią lub nawet znakiem interpunkcyjnym. Całkowite zużycie tokenów obejmuje zarówno tokeny wejściowe (zapytanie użytkownika lub dokument), jak i tokeny wyjściowe (odpowiedź modelu). Im więcej tokenów jest używanych, tym wyższy koszt zapytania.</li><li><strong>Koszt odpowiedzi</strong> – Obliczany jako <em>zużycie tokenów × cena modelu</em> (za 1 000 lub 1 000 000 tokenów, w zależności od dostawcy). Ponieważ różne modele mają różne struktury cenowe, porównanie kosztów odpowiedzi pozwala określić, który model jest bardziej opłacalny w zastosowaniach na dużą skalę.</li></ul></li></ul>						</div>
				</div>
				<div class="elementor-element elementor-element-e807a52 elementor-widget elementor-widget-heading" data-id="e807a52" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Wyniki testów </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-b36a1c6 elementor-widget elementor-widget-text-editor" data-id="b36a1c6" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Oto podsumowane wyniki naszych testów (każdy test był powtarzany kilkukrotnie):</p>						</div>
				</div>
				<div class="elementor-element elementor-element-f26f255 elementor-widget elementor-widget-html" data-id="f26f255" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
			<style>
    table {
        width: 100%;
        border-collapse: collapse;
        font-family: 'Roboto', sans-serif;
        font-weight: 300;
        font-size: 14px;
        color: #1C244B;
    }
    th, td {
        border: 1px solid #ddd;
        padding: 8px;
        text-align: left;
    }
    th {
        background-color: #f4f4f4;
        color: #1C244B;
    }
    tr:nth-child(even) {
        background-color: #f9f9f9;
    }
</style>

<table>
    <thead>
        <tr>
            <th>Model</th>
            <th>Średni czas inferencji (s)</th>
            <th>Średni koszt odpowiedzi ($)</th>
            <th>Średnia liczba tokenów wejściowych</th>
            <th>Średnia liczba tokenów wyjściowych</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><strong>DeepSeek R1</strong></td>
            <td>57,2</td>
            <td>0,0039</td>
            <td>63 961,7</td>
            <td>751,6</td>
        </tr>
        <tr>
            <td><strong>o3-mini</strong></td>
            <td>13,8</td>
            <td>0,0755</td>
            <td>63 251,5</td>
            <td>1 162,5</td>
        </tr>
        <tr>
            <td><strong>4o-mini</strong></td>
            <td>9,5</td>
            <td>0,0511</td>
            <td>62 538,0</td>
            <td>1 046,5</td>
        </tr>
    </tbody>
</table>

<!-- Link do czcionki Google Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300&display=swap" rel="stylesheet">
		</div>
				</div>
				<div class="elementor-element elementor-element-65630f9 elementor-widget elementor-widget-heading" data-id="65630f9" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Kluczowe wnioski </h3>		</div>
				</div>
				<div class="elementor-element elementor-element-703de17 elementor-widget elementor-widget-text-editor" data-id="703de17" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<ul><li style="list-style-type: none;"><ul><li><strong>Czas inferencji:</strong> DeepSeek konsekwentnie wykazywał dłuższe czasy inferencji w porównaniu do obu modeli OpenAI. Może to być istotny czynnik dla aplikacji, które wymagają szybkiego przetwarzania.</li><li><strong>Koszt odpowiedzi:</strong> DeepSeek wykazał przewagę kosztową, szczególnie w zakresie tokenów wyjściowych. Pomimo dłuższego czasu inferencji, całkowity koszt zapytania pozostaje niższy niż w przypadku OpenAI o3-mini i 4o-mini. Niższy koszt odpowiedzi DeepSeek wynika z mechanizmu buforowania, który ogranicza konieczność ponownego przetwarzania danych wejściowych. Większość treści wejściowych, zwłaszcza zawartość pliku PDF, była buforowana, co pozwoliło na znaczne oszczędności w kosztach przetwarzania. Dzięki temu systemowi DeepSeek efektywnie obsługiwał powtarzające się zapytania, czyniąc go opłacalnym wyborem do analizy dużych dokumentów.</li><li><strong>Zmienność odpowiedzi:</strong> Modele różniły się pod względem stylu i poziomu szczegółowości generowanych odpowiedzi. Ma to znaczenie w zależności od kontekstu i wymagań użytkownika (np. ogólne podsumowania vs. szczegółowa analiza).</li><li><strong>API LiteLLM:</strong> LiteLLM znacząco ułatwiło śledzenie kosztów, zużycia tokenów i czasu odpowiedzi bezpośrednio w odpowiedziach API, umożliwiając prostą i przejrzystą analizę porównawczą modeli.</li></ul></li></ul>						</div>
				</div>
				<div class="elementor-element elementor-element-f56bc1c elementor-widget elementor-widget-heading" data-id="f56bc1c" 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-abbecc5 elementor-widget elementor-widget-text-editor" data-id="abbecc5" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Nasze testy podkreślają zalety stosowania zunifikowanych interfejsów API do benchmarkingu modeli LLM. LiteLLM znacząco uprościło cały proces, pozwalając nam skupić się na ocenie efektywności modeli oraz ich wydajności.</p><p>DeepSeek R1 wykazał się konkurencyjną opłacalnością, głównie dzięki mechanizmowi buforowania, który redukował koszty ponownego przetwarzania tych samych danych wejściowych. Jednak był zdecydowanie najwolniejszym modelem w naszych testach, osiągając średni czas inferencji na poziomie 57,2 sekundy.</p><p>Z kolei OpenAI o3-mini i 4o-mini zapewniały znacznie krótszy czas odpowiedzi, co czyni je bardziej odpowiednimi dla zastosowań wymagających przetwarzania w czasie rzeczywistym.</p>						</div>
				</div>
					</div>
				</div>
				</div>
		<p>Artykuł <a href="https://inero-software.com/pl/openai-vs-deepseek-techniczne-porownanie-z-wykorzystaniem-zunifikowanych-interfejsow-api/">OpenAI vs. DeepSeek: Techniczne porównanie z wykorzystaniem zunifikowanych interfejsów API</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">7584</post-id>	</item>
		<item>
		<title>Keycloak: wskazówki dotyczące monitorowania i ochrony przy użyciu wbudowanych narzędzi konfiguracyjnych</title>
		<link>https://inero-software.com/pl/keycloak-wskazowki-dotyczace-monitorowania-i-ochrony-przy-uzyciu-wbudowanych-narzedzi-konfiguracyjnych/</link>
		
		<dc:creator><![CDATA[Marceli Formela]]></dc:creator>
		<pubDate>Thu, 26 Sep 2024 10:43:22 +0000</pubDate>
				<category><![CDATA[Blog_pl]]></category>
		<category><![CDATA[Firma]]></category>
		<category><![CDATA[Technologie]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=6192</guid>

					<description><![CDATA[<p>Keycloak to nie tylko potężne narzędzie do zarządzania tożsamością i dostępem; jest również kluczowe dla monitorowania wydajności i zwiększania bezpieczeństwa, zwłaszcza w obronie przed atakami phishingowymi. Dzięki wbudowanym mechanizmom monitorowania i alertowania, administratorzy mogą wykrywać podejrzane działania użytkowników oraz utrzymywać optymalną wydajność systemu. Andrzej Chybicki CEO Inero Software Usługi Keycloak:&#8230;</p>
<p>Artykuł <a href="https://inero-software.com/pl/keycloak-wskazowki-dotyczace-monitorowania-i-ochrony-przy-uzyciu-wbudowanych-narzedzi-konfiguracyjnych/">Keycloak: wskazówki dotyczące monitorowania i ochrony przy użyciu wbudowanych narzędzi konfiguracyjnych</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="6192" class="elementor elementor-6192" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-f4346b3 e-flex e-con-boxed e-con e-parent" data-id="f4346b3" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-e560d78 elementor-widget elementor-widget-html" data-id="e560d78" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-9788065 e-flex e-con-boxed e-con e-parent" data-id="9788065" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-6852513 e-con-full e-flex e-con e-child" data-id="6852513" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-1457fdd e-con-full e-flex e-con e-child" data-id="1457fdd" data-element_type="container">
				<div class="elementor-element elementor-element-e1ddbe6 elementor-widget elementor-widget-text-editor" data-id="e1ddbe6" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4>Keycloak to nie tylko potężne narzędzie do zarządzania tożsamością i dostępem; jest również kluczowe dla monitorowania wydajności i zwiększania bezpieczeństwa, zwłaszcza w obronie przed atakami phishingowymi. Dzięki wbudowanym mechanizmom monitorowania i alertowania, administratorzy mogą wykrywać podejrzane działania użytkowników oraz utrzymywać optymalną wydajność systemu.</h4>						</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-0bdde1b e-flex e-con-boxed e-con e-parent" data-id="0bdde1b" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-0660a51 e-con-full e-flex e-con e-child" data-id="0660a51" data-element_type="container">
		<div class="elementor-element elementor-element-b9fde1c e-con-full e-flex e-con e-child" data-id="b9fde1c" data-element_type="container">
				</div>
				<div class="elementor-element elementor-element-932c0ac elementor-widget__width-initial elementor-widget elementor-widget-link-in-bio" data-id="932c0ac" data-element_type="widget" data-widget_type="link-in-bio.default">
				<div class="elementor-widget-container">
					<div class="e-link-in-bio e-link-in-bio">
			<div class="e-link-in-bio__content">

						<div class="e-link-in-bio__identity">
									<div class="e-link-in-bio__identity-image e-link-in-bio__identity-image-profile has-style-circle">
							<img decoding="async" width="300" height="300" src="https://inero-software.com/wp-content/uploads/2024/06/Andrzej-Chybicki-PhD-Eng.-1-300x300.png" class="e-link-in-bio__identity-image-element" alt="" srcset="https://inero-software.com/wp-content/uploads/2024/06/Andrzej-Chybicki-PhD-Eng.-1-300x300.png 300w, https://inero-software.com/wp-content/uploads/2024/06/Andrzej-Chybicki-PhD-Eng.-1-1030x1030.png 1030w, https://inero-software.com/wp-content/uploads/2024/06/Andrzej-Chybicki-PhD-Eng.-1-80x80.png 80w, https://inero-software.com/wp-content/uploads/2024/06/Andrzej-Chybicki-PhD-Eng.-1-768x768.png 768w, https://inero-software.com/wp-content/uploads/2024/06/Andrzej-Chybicki-PhD-Eng.-1-75x75.png 75w, https://inero-software.com/wp-content/uploads/2024/06/Andrzej-Chybicki-PhD-Eng.-1-50x50.png 50w, https://inero-software.com/wp-content/uploads/2024/06/Andrzej-Chybicki-PhD-Eng.-1-512x512.png 512w, https://inero-software.com/wp-content/uploads/2024/06/Andrzej-Chybicki-PhD-Eng.-1-1024x1024.png 1024w, https://inero-software.com/wp-content/uploads/2024/06/Andrzej-Chybicki-PhD-Eng.-1.png 1200w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="5903" data-permalink="https://inero-software.com/?attachment_id=5903" data-orig-file="https://inero-software.com/wp-content/uploads/2024/06/Andrzej-Chybicki-PhD-Eng.-1.png" data-orig-size="1200,1200" 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="Andrzej Chybicki PhD Eng. (1)" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2024/06/Andrzej-Chybicki-PhD-Eng.-1-300x300.png" data-large-file="https://inero-software.com/wp-content/uploads/2024/06/Andrzej-Chybicki-PhD-Eng.-1-1030x1030.png" tabindex="0" role="button" />													</div>
							</div>
					<div class="e-link-in-bio__bio">
								<h3 class="e-link-in-bio__title">Andrzej Chybicki </h3>								<p class="e-link-in-bio__description">CEO Inero Software      
</p>			</div>
					<div class="e-link-in-bio__icons has-size-small">
							<div class="e-link-in-bio__icon is-size-small">
					<a href="https://www.linkedin.com/in/andrzej-chybicki/" target="_blank" rel="noopener " aria-label="LinkedIn" class="e-link-in-bio__icon-link">
						<span class="e-link-in-bio__icon-svg">
							<svg aria-hidden="true" class="e-font-icon-svg e-fab-linkedin-in" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z"></path></svg>						</span>
											</a>
				</div>
					</div>
		
		<div class="e-link-in-bio__ctas has-type-button">
							<a href="https://inero-software.com/pl/keycloak/" target="_blank" rel="noopener " class="e-link-in-bio__cta is-type-button has-corners-rounded">
										<span class="e-link-in-bio__cta-text">
						 Usługi Keycloak: Kompleksowa implementacja, utrzymanie i szkolenia					</span>
				</a>
					</div>
		
			</div>
			<div class="e-link-in-bio__bg">
				<div class="e-link-in-bio__bg-overlay"></div>
			</div>
		</div>
				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-966c713 e-con-full e-flex e-con e-child" data-id="966c713" data-element_type="container">
				<div class="elementor-element elementor-element-369c446 elementor-widget elementor-widget-text-editor" data-id="369c446" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4>Wydajność Keycloak: Monitorowanie z Grafaną</h4><p>Monitorowanie wydajności Keycloak jest kluczowe, zwłaszcza w dużych organizacjach, gdzie system musi obsługiwać jednocześnie tysiące użytkowników. Ciekawym narzędziem do tego celu jest na przykład Aerogear (https://github.com/aerogear/keycloak-metrics-spi). Aerogear umożliwia łatwe śledzenie krytycznych metryk w czasie rzeczywistym, co pozwala na optymalizację systemu i skalowanie.</p><p>Aerogear zapewnia dwie kluczowe funkcje: <strong>MetricsEventListener</strong> i <strong>MetricsEndpoint,</strong> które umożliwiają przesyłanie zdarzeń Keycloak do Prometheus oraz integrację z narzędziami wizualizacyjnymi, takimi jak Grafana. Dzięki temu administratorzy mogą monitorować ważne metryki, takie jak:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-ffa0c9b elementor-widget elementor-widget-text-editor" data-id="ffa0c9b" 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 style="color: #800080;">Zużycie pamięci,</span></li><li><span style="color: #800080;">Liczba zalogowanych użytkowników (według realm, klienta, globalnie, itp.),</span></li><li><span style="color: #800080;">Błędy logowania.</span></li></ul></li></ul>						</div>
				</div>
				<div class="elementor-element elementor-element-e5f2273 elementor-widget elementor-widget-text-editor" data-id="e5f2273" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Grafana oferuje wysoki poziom dostosowywania, umożliwiając dodanie niestandardowych parametrów (np. z plików CSV lub baz danych) oraz konfigurację alertów. Te alerty mogą być wywoływane przez różne czynniki, takie jak:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-1e9ba12 elementor-widget elementor-widget-text-editor" data-id="1e9ba12" 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="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&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;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span style="color: #800080;">Przekroczenie limitu czasu logowania,</span></li><li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&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;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span style="color: #800080;">Logowanie z nieautoryzowanych lokalizacji,</span></li><li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&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;multilevel&quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span style="color: #800080;">Niezwykle duża liczba żądań resetowania hasła.</span></li></ul></li></ul>						</div>
				</div>
				<div class="elementor-element elementor-element-5e9160a elementor-widget elementor-widget-image" data-id="5e9160a" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img loading="lazy" decoding="async" width="1030" height="816" src="https://inero-software.com/wp-content/uploads/2024/09/grafana-1030x816.png" class="attachment-large size-large wp-image-6148" alt="" srcset="https://inero-software.com/wp-content/uploads/2024/09/grafana-1030x816.png 1030w, https://inero-software.com/wp-content/uploads/2024/09/grafana-300x238.png 300w, https://inero-software.com/wp-content/uploads/2024/09/grafana-768x608.png 768w, https://inero-software.com/wp-content/uploads/2024/09/grafana-379x300.png 379w, https://inero-software.com/wp-content/uploads/2024/09/grafana-380x300.png 380w, https://inero-software.com/wp-content/uploads/2024/09/grafana.png 1263w" sizes="(max-width: 1030px) 100vw, 1030px" data-attachment-id="6148" data-permalink="https://inero-software.com/monitoring-and-securing-keycloak-performance-and-phishing-attack-protection/grafana/" data-orig-file="https://inero-software.com/wp-content/uploads/2024/09/grafana.png" data-orig-size="1263,1000" 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="grafana" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2024/09/grafana-300x238.png" data-large-file="https://inero-software.com/wp-content/uploads/2024/09/grafana-1030x816.png" role="button" />													</div>
				</div>
				<div class="elementor-element elementor-element-7544641 elementor-widget elementor-widget-text-editor" data-id="7544641" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h6><span class="TextRun SCXW154526738 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW154526738 BCX0">żródło: grafana.com/</span><span class="NormalTextRun SpellingErrorV2Themed SCXW154526738 BCX0">grafana</span><span class="NormalTextRun SCXW154526738 BCX0">/dashboards/10441-keycloak-metrics-dashboard</span></span><span class="EOP SCXW154526738 BCX0" data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></h6>						</div>
				</div>
				<div class="elementor-element elementor-element-8670612 elementor-widget elementor-widget-text-editor" data-id="8670612" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4>Ochrona przed atakami phishingowymi: Mechanizmy adaptacyjnego uwierzytelniania</h4><p>Oprócz monitorowania wydajności, zaawansowane wbudowane funkcje bezpieczeństwa Keycloak pomagają chronić przed atakami phishingowymi poprzez analizę wzorców zdarzeń. Zdarzenia w Keycloak umożliwiają administratorom definiowanie niestandardowych odpowiedzi na określone działania użytkowników, takie jak resetowanie hasła po nieudanych próbach logowania — często będące wskaźnikiem aktywności phishingowej.</p><p>Przykładem funkcji bezpieczeństwa jest <strong>adaptacyjne uwierzytelnianie</strong>, które modyfikuje proces logowania użytkownika na podstawie wcześniejszych zachowań. Na przykład, jeśli użytkownik prosi o zresetowanie hasła bez wcześniejszych nieudanych prób logowania, system może uruchomić dodatkowy krok uwierzytelnienia, taki jak uwierzytelnianie dwuskładnikowe (2FA).</p>						</div>
				</div>
				<div class="elementor-element elementor-element-72d0a10 elementor-widget elementor-widget-text-editor" data-id="72d0a10" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4>Tworzenie i dostosowywanie polityki bezpieczeństwa</h4><p>Podczas wdrażania tych funkcji kluczowe jest określenie, kiedy działania użytkownika powinny budzić podejrzenia. Na przykład resetowanie hasła bez wcześniejszych nieudanych prób logowania może sygnalizować phishing, podczas gdy reset po wielu nieudanych logowaniach jest bardziej rutynowy. Można zdefiniować niestandardową politykę bezpieczeństwa, która będzie określać: „<em>Jeśli użytkownik żąda resetowania hasła bez nieudanych logowań w ciągu ostatnich 3 minut, wymagana jest autoryzacja 2FA</em>”.</p><p>Te mechanizmy adaptacyjnego uwierzytelniania zmniejszają obciążenie wynikające z wieloskładnikowego uwierzytelniania (MFA), jednocześnie utrzymując wysoki poziom bezpieczeństwa. Dzięki skonfigurowaniu systemu zdarzeń i alertów w Keycloak, organizacje mogą skuteczniej wykrywać nietypowe zachowania i szybciej reagować na potencjalne zagrożenia.</p><p>Keycloak to wszechstronne narzędzie, które wspiera zarówno monitorowanie wydajności, jak i zwiększone bezpieczeństwo. Integracja z narzędziami takimi jak Grafana pozwala administratorom śledzić kluczowe parametry systemowe, a zaawansowane mechanizmy oparte na zdarzeniach oraz adaptacyjne uwierzytelnianie wzmacniają ochronę przed phishingiem i innymi zagrożeniami. Odpowiednia konfiguracja tych funkcji może znacznie zwiększyć poziom bezpieczeństwa i poprawić czas reakcji na incydenty.</p>						</div>
				</div>
				</div>
					</div>
				</div>
				</div>
		<p>Artykuł <a href="https://inero-software.com/pl/keycloak-wskazowki-dotyczace-monitorowania-i-ochrony-przy-uzyciu-wbudowanych-narzedzi-konfiguracyjnych/">Keycloak: wskazówki dotyczące monitorowania i ochrony przy użyciu wbudowanych narzędzi konfiguracyjnych</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">6192</post-id>	</item>
		<item>
		<title>Wyzwania i korzyści integracji Keycloak: zgodność z dyrektywą NIS 2 oraz praktyczne porady na wdrożenie</title>
		<link>https://inero-software.com/pl/integracja-keycloak-zgodnosc-z-dyrektywa-nis-2/</link>
		
		<dc:creator><![CDATA[Marta Kuprasz]]></dc:creator>
		<pubDate>Tue, 16 Jul 2024 07:35:44 +0000</pubDate>
				<category><![CDATA[Blog_pl]]></category>
		<category><![CDATA[Firma]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[2022/2555]]></category>
		<category><![CDATA[dyrektywa NIS 2]]></category>
		<category><![CDATA[IAM]]></category>
		<category><![CDATA[keycloak]]></category>
		<category><![CDATA[NIS 2]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=5989</guid>

					<description><![CDATA[<p>Artykuł <a href="https://inero-software.com/pl/integracja-keycloak-zgodnosc-z-dyrektywa-nis-2/">Wyzwania i korzyści integracji Keycloak: zgodność z dyrektywą NIS 2 oraz praktyczne porady na wdrożenie</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 class="row"><div class="col-sm-1"></div><div class="col-sm-10">
<p>&nbsp;</p>
<h4><span data-contrast="auto">Powszechna digitalizacja usług sprawia, że coraz więcej zasobów przenoszonych jest do chmury. Chociaż takie podejście przynosi liczne korzyści, w tym elastyczność i skalowalność, to jednocześnie eksponuje te usługi na zewnątrz, zwiększając ryzyko nieautoryzowanego dostępu. Zarządzanie dostępem do zasobów w chmurze staje się coraz większym wyzwaniem, zwłaszcza w dużych organizacjach, które operują na rosnącej liczbie użytkowników, kontrahentów oraz różnorodności ról i uprawnień. </span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></h4>
<p><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="none">Ten proces przyciągnął uwagę globalnej społeczności, która za pomocą wytycznych i dyrektyw podkreśla znaczenie dostosowywania praktyk bezpiecznych do specyfiki danej firmy oraz sektorów, w których działa.</span><span data-contrast="auto">  Dyrektywa 2022/2555, znana jako dyrektywa NIS 2, jest reakcją Unii Europejskiej na zachodzące zmiany i konieczność wprowadzenia jednakowego zestawu obowiązków i standardów z zakresu bezpieczeństwa informacji w obrębie krajów wspólnoty. Najważniejsze obowiązki wynikające z dyrektywy to:</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<ol>
<li style="list-style-type: none;">
<ol>
<li><span data-contrast="auto">Obowiązek wprowadzenia środków zarządzania ryzykiem i reagowania na incydenty.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li><span data-contrast="auto">Obowiązek zgłaszania poważnych incydentów cyberbezpieczeństwa do właściwych organów.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li><span data-contrast="auto">Wymóg współpracy między państwami członkowskimi oraz z odpowiednimi organami na poziomie UE.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li><span data-contrast="auto">Dedykowane wymagania dla kluczowych sektorów, takich jak energia, transport, zdrowie i finanse.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
</ol>
</li>
</ol>
<h3><b><span data-contrast="auto">Co zmieni dyrektywa NIS 2</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></h3>
<p><span data-contrast="auto">Nowe przepisy objęły więcej sektorów i liczniejsze grono organizacji, w tym średnie i duże przedsiębiorstwa z branż krytycznych. Wprowadzono bardziej restrykcyjne wymogi dotyczące bezpieczeństwa informacji oraz obowiązki sprawozdawcze, w celu zwiększenia odporności na zagrożenia cybernetyczne. Zgodnie z Artykułem 21 punkt 3, firmy mają obowiązek zweryfikować ogólną jakość produktów i praktyk cyberbezpieczeństwa dostawców i usługodawców, w tym ich procedury bezpiecznego opracowywania.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="auto">Z kolei w raporcie &#8222;Foresight Cybersecurity Threats for 2030&#8221;, ENISA (Europejska Agencja ds. Bezpieczeństwa Sieci) przedstawiła szczegółową analizę pojawiających się zagrożeń cyberbezpieczeństwa w perspektywie do roku 2030. Analitycy wśród głównych zagrożeń wskazali:</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="7" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:&#091;8226&#093;,&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">Zakłócenie łańcucha dostaw oprogramowania</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="7" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:&#091;8226&#093;,&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">Niedobór wykwalifikowanych specjalistów ds. cyberbezpieczeństwa</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="7" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:&#091;8226&#093;,&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">Błędy ludzkie i eksploatowane systemy legacy</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
</ul>
<p><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="auto">Najnowsze raporty na temat bezpieczeństwa łańcucha dostaw oprogramowania potwierdzają, że jest to jedno z największych zagrożeń dla cyberbezpieczeństwa. Raport &#8222;The State of Software Supply Chain Security 2024&#8221; od ReversingLabs wskazuje, że liczba ataków na łańcuch dostaw oprogramowania wzrosła o 289% w ciągu ostatnich czterech lat, przy czym najwięcej ataków skoncentrowało się na popularnych repozytoriach open-source, takich jak npm i PyPI​. (</span><span data-contrast="auto">1)</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="auto">W publikacji ENISA wskazano również niebezpieczeństwo związane z rosnącą zależnością kluczowych sektorów gospodarki, od zewnętrznych usług IT. Może ona prowadzić do zwiększonej liczby interakcji w krajobrazie cyfrowym. Efektem tego procesu jest stopniowe uzależnianie się kluczowych dostawców usług od oprogramowania, którego proces powstawania nie jest certyfikowany ani zarządzany. </span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<h3><b><span data-contrast="auto">Jak zapewnić zgodność rozwiązań IT z dyrektywą NIS 2?</span></b></h3>
<p><span data-contrast="auto">NIS 2 jest dość ogólną dyrektywą. Nie mówi wprost, co należy zrobić i jakie działania podjąć. Niemniej jednak wytycza pewien kierunek działań z obszaru cyberbezpieczeństwa, wśród których warto podkreślić:</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<ul>
<li><span data-contrast="auto">zapewnienie jednolitego i sprawdzonego autoryzowanego dostępu do usług cyfrowych, </span> <span data-contrast="auto">zwłaszcza tych przetwarzających dane osobowe,</span></li>
<li><span data-contrast="auto">zapewnienie w przedsiębiorstwach procesów stałego monitoringu oraz aktualizacji zabezpieczeń dla kluczowych punktów dostępu usług</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li><span data-contrast="auto">ustandaryzowanie procesów dostępu do usług cyfrowych wraz ze wdrożeniem systemu zarządzania tożsamością użytkowników</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li><span data-contrast="auto">raportowanie i monitorowanie stanu dostępu do autoryzowanych usługi i zbiorów danych.</span></li>
</ul>
<p>&nbsp;</p>
<p><strong>Z tego względu możemy w najbliższym czasie spodziewać się wzrostu zainteresowania wdrażaniem rozwiązań klasy IAM (identity and access management). Podstawowym problemem, jest nie tylko wdrożenie samego systemu tej klasy, ale przede wszystkim możliwość dopasowania do potrzeb integracji konkretnych rozwiązań:  </strong></p>
<p><strong>SSO z Keycloak</strong><span data-contrast="auto">&#8211; znacząco upraszcza proces uwierzytelniania i autoryzacji w organizacjach, poprawiając wygodę użytkowników oraz bezpieczeństwo systemów. Dzięki jednorazowemu logowaniu, użytkownicy mogą efektywniej korzystać z różnych aplikacji, co zwiększa produktywność.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><strong>Event Logging i alarmy</strong><b><span data-contrast="auto">&#8211;</span></b><span data-contrast="auto"> Keycloak rejestruje różnorodne zdarzenia, takie jak logowania, zmiany haseł, błędy uwierzytelniania oraz modyfikacje konfiguracji systemu. &#8211; Custom authrozation flow / na czym polega problem i dlaczego jest ważny. Alarmy pomagają w szybkiej reakcji na zagrożenia, minimalizując ryzyko naruszeń bezpieczeństwa i zwiększając ochronę zasobów w chmurze.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><strong>Custom Authorization Flow w Keycloak</strong><b><span data-contrast="auto">&#8211;</span></b><span data-contrast="auto"> pozwala na tworzenie niestandardowych procesów uwierzytelniania i autoryzacji, dostosowanych do specyficznych wymagań organizacji. Potrzeba zastosowania tego rozwiązania wynika z konieczności zapewnienia elastyczności i bezpieczeństwa w zarządzaniu dostępem do zasobów.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><strong>Identity Provieders</strong><span data-contrast="auto"> &#8211; Integracja Keycloak z Microsoft Active Directory (AD) i Google Workspace umożliwia centralne zarządzanie tożsamościami i dostępem. Dzięki temu użytkownicy mogą korzystać z jednolitego logowania (SSO), uzyskując dostęp do wielu aplikacji za pomocą jednego zestawu danych uwierzytelniających.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><strong>Skalowanie Keycaloak</strong><b><span data-contrast="auto">&#8211;</span></b><span data-contrast="auto"> umożliwia obsługę rosnącej liczby użytkowników i aplikacji poprzez uruchamianie wielu instancji w konfiguracji klastrowej, co zapewnia równomierne rozłożenie obciążenia i wysoką dostępność.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><a href="https://inero-software.com/pl/zarzadzanie-tozsamosciami-dzieki-federacjom-uzytkownikow-w-keycloak/"><img loading="lazy" decoding="async" data-attachment-id="5985" data-permalink="https://inero-software.com/pl/najlepsze-praktyki-w-keycloak-zadbaj-o-bezpieczenstwo-w-5-krokach/banery-inero2706-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2024/05/banery-inero2706-2.png" data-orig-size="1200,100" 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="banery inero2706 (2)" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2024/05/banery-inero2706-2-300x25.png" data-large-file="https://inero-software.com/wp-content/uploads/2024/05/banery-inero2706-2-1030x86.png" tabindex="0" role="button" class="alignnone wp-image-5985 size-full" src="https://inero-software.com/wp-content/uploads/2024/05/banery-inero2706-2.png" alt="" width="1200" height="100" srcset="https://inero-software.com/wp-content/uploads/2024/05/banery-inero2706-2.png 1200w, https://inero-software.com/wp-content/uploads/2024/05/banery-inero2706-2-300x25.png 300w, https://inero-software.com/wp-content/uploads/2024/05/banery-inero2706-2-1030x86.png 1030w, https://inero-software.com/wp-content/uploads/2024/05/banery-inero2706-2-768x64.png 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></a></p>
<h3><b><span data-contrast="auto">Jak przygotować się do rozmowy na temat wdrożenia Keycloak w dużej organizacji?</span></b></h3>
<p><span data-contrast="auto">Rozmowy techniczne na temat wdrożenia nowych narzędzi bywają długie i wieloetapowe, dlatego warto się do nich właściwe przygotować, aby etap konsultacji przebiegł szybko i obie strony uzyskały wystarczającą liczbę informacji. O to jak najlepiej przygotować się do wdrożenia Keycloak zapytaliśmy naszego CEO, Andrzeja Chybickiego.</span></p>
<p><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<h5>Jakie są najczęstsze potrzeby firm, które szukają współpracy w obszarze cyberbezpieczeństwa?</h5>
<p><span data-contrast="none">Keycloak jest specyficznym, ale i kompleksowym rozwiązaniem, które pozwala tworzyć rozbudowane systemy zarządzania autoryzacją użytkowników. Jego największą zaletą jest możliwość wdrażania jako software on-premise.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="none">Firmy z bogatym doświadczeniem również mogą napotkać wyzwania, wprowadzając istotną zmianę jaką jest customowy flow autoryzacji w swoich systemach logowania i często poszukują konsultacji. W takich sytuacjach szukają one partnerów, którzy mają praktykę w realizacji podobnych projektów, znają typowe problemy i posiadają sprawdzone metody ich rozwiązywania.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="none">Klientami naszej firmy są organizacje na różnorodnych poziomach doświadczenia z IAM – niektóre rozważają implementację, zdając sobie sprawę z korzyści płynących z zarządzania tożsamością i dostępem, ale niepewne, od gdzie zacząć. Inne już rozpoczęły wdrożenie i zainstalowały potrzebne komponenty, lecz napotykają wyzwania w sferze konfiguracji dostosowania do użytkowników, partnerów i pracowników, na przykład przy projektowaniu skomplikowanych schematów autoryzacji wymaganych przez ich działalność.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<h5><b><span data-contrast="auto">Jak przygotować się do wdrożenia Keycloak, aby przebiegło ona sprawie?</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></h5>
<p><span data-contrast="none">Pomagając firmom w tworzeniu wewnętrznych rozwiązań IAM nasze działania prowadzą do dwóch podstawowych pytań. Najpierw, należy ocenić czy Keycloak w porównaniu z innymi rozwiązaniami, takimi jak Okta czy AWS Cognito, które mogą oferować prostszą obsługę i automatyzację z poziomu chmury, jest najlepszym wyborem. Następnie, kluczowe staje się rozpisanie procesów autoryzacji, integracja aplikacji, typ instalacji (on-demand lub lokalnie), wsparcie techniczne oraz długofalowa strategia z akutalizacjami systemu. To są podstawowe kwestie do przedyskutowania na samym początku.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<h5><b><span data-contrast="none">Czego klienci oczekują od nas jako od firmy kompleksowo wdrażającej Keycloak?</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></h5>
<p><span data-contrast="none">Nasze doświadczenie pokazuje, że największą pomocą dla naszych partnerów jest wiedza specjalistyczna zdobyta przy realizacji podobnych inicjatyw. Najczęściej poszukują specjalistów, gdy mają szczególne wymagania dotyczące dostosowania oprogramowania produkcyjnego lub potrzebują stworzyć dodatek (plugin). Oczekują od nas wsparcia, licząc na to, że wykorzystamy doświadczenia z poprzednich projektów i zaprezentujemy, jak radziliśmy sobie z podobnymi wyzwaniami w przeszłości. Przykładów jest tu bardzo wiele od zapewnienia skalowania, do konfiguracji i integracji z przepływami autoryzacji w chmurze po integrację z systemami baz danych zawierających obsługę milionów użytkowników jednocześnie. Naszym zadaniem jest świadczenie usług doradczych adekwatnych do ich zasadniczych potrzeb.</span><span 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;:0,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<h5></h5>
<h5><b><span data-contrast="auto">Wdrożyliśmy Keycloak, ale co potem? </span></b><b><span data-contrast="none">Czy firma musi zatrudniać programistów znających to narzędzie do zarządzania systemem po jego implementacji?</span></b><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></h5>
<p><span data-contrast="auto">Proces wdrożenia i konfiguracji Keycloaka jest złożony, a intensywność prac w trakcie trwania projektu nie jest równomierna. Prace takie są najczęściej nadzorowane z działem bezpieczeństwa lub osobami na poziomie głównego technicznego managementu &#8211; wymagają zatem koordynacji wielu grup pracowników.</span> <span data-contrast="none">Często potrzebna jest również koordynacja z zespołami wsparcia, aby ustalić optymalny czas na wprowadzanie zmian w procesach autoryzacyjnych.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="none">Implementacja Keycloaka nie wymaga ciągłej obecności dedykowanych ekspertów w organizacji. Keycloak jest generalnie stabilnym narzędziem i kluczowe jest, aby osoby zarządzające systemem posiadały wiedzę na temat jego funkcjonowania i były w stanie obsługiwać panel administracyjny Keycloaka, wykorzystując jego funkcje bez konieczności modyfikacji.</span> <span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="auto">Niemniej jednak, długoterminowe wsparcie jest kluczowe, w tym regularne aktualizacje bezpieczeństwa, które społeczność Keycloak udostępnia co kilka miesięcy. Takie aktualizacje mają charakter krytyczny i warto mieć dostęp do kompetencji i wiedzy na wypadek krytycznych problemów.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> <a href="https://inero-software.com/pl/keycloak/"><img loading="lazy" decoding="async" data-attachment-id="5997" data-permalink="https://inero-software.com/pl/integracja-keycloak-zgodnosc-z-dyrektywa-nis-2/banery-16072024-inero/" data-orig-file="https://inero-software.com/wp-content/uploads/2024/07/banery-16072024-inero.png" data-orig-size="1200,100" 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="banery 16072024 inero" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2024/07/banery-16072024-inero-300x25.png" data-large-file="https://inero-software.com/wp-content/uploads/2024/07/banery-16072024-inero-1030x86.png" tabindex="0" role="button" class="alignnone wp-image-5997 size-full" src="https://inero-software.com/wp-content/uploads/2024/07/banery-16072024-inero.png" alt="" width="1200" height="100" srcset="https://inero-software.com/wp-content/uploads/2024/07/banery-16072024-inero.png 1200w, https://inero-software.com/wp-content/uploads/2024/07/banery-16072024-inero-300x25.png 300w, https://inero-software.com/wp-content/uploads/2024/07/banery-16072024-inero-1030x86.png 1030w, https://inero-software.com/wp-content/uploads/2024/07/banery-16072024-inero-768x64.png 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></a></span></p>
<p>[1] https://www.enisa.europa.eu/publications/foresight-cybersecurity-threats-for-2030-update-2024-extended-report</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p></p></div><div class="col-sm-1"></div></div>
<p>Artykuł <a href="https://inero-software.com/pl/integracja-keycloak-zgodnosc-z-dyrektywa-nis-2/">Wyzwania i korzyści integracji Keycloak: zgodność z dyrektywą NIS 2 oraz praktyczne porady na wdrożenie</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">5989</post-id>	</item>
		<item>
		<title>Tworzenie niestandardowego uwierzytelniania SMS w Keycloak</title>
		<link>https://inero-software.com/pl/tworzenie-niestandardowego-uwierzytelniania-sms-w-keycloak/</link>
		
		<dc:creator><![CDATA[Marceli Formela]]></dc:creator>
		<pubDate>Fri, 14 Jun 2024 11:01:51 +0000</pubDate>
				<category><![CDATA[Blog_pl]]></category>
		<category><![CDATA[Firma]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[biznes]]></category>
		<category><![CDATA[cyberbezpieczeństwo]]></category>
		<category><![CDATA[keycaloak]]></category>
		<category><![CDATA[MFA]]></category>
		<category><![CDATA[sms]]></category>
		<category><![CDATA[SMS MFA]]></category>
		<category><![CDATA[SPI]]></category>
		<category><![CDATA[uwierzytelnianie]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=5868</guid>

					<description><![CDATA[<p>Artykuł <a href="https://inero-software.com/pl/tworzenie-niestandardowego-uwierzytelniania-sms-w-keycloak/">Tworzenie niestandardowego uwierzytelniania SMS 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 class="row"><div class="col-sm-1"></div><div class="col-sm-10">
<p>&nbsp;</p>
<p>Wraz ze wzrostem liczby zagrożeń cybernetycznych, uwierzytelnianie wieloskładnikowe (MFA) stało się dla wielu firm standardem w politykach bezpieczeństwa.  MFA zwiększa ochronę, wymagając od użytkowników weryfikacji tożsamości za pomocą wielu metod. Takie uwierzytelnianie stało się więc standardową praktyk, dodając dodatkową warstwę ochrony.</p>
<p>Wśród różnych metod, uwierzytelnianie oparte na SMS wyróżnia się równowagą między bezpieczeństwem a wygodą użytkownika. Jednak tworzenie niestandardowego uwierzytelnienia SMS w ramach dostawcy tożsamości, takiego jak Keycloak, może być skomplikowanym i złożonym procesem, wymagającym zrozumienia jego architektury i możliwości rozszerzania.</p>
<h3><b>Interfejs Dostawcy Usług (SPI)</b></h3>
<p>Keycloak ma na celu obsługę większości przypadków użycia bez konieczności tworzenia niestandardowego kodu. Oferuje także elastyczność w zakresie dostosowywania. W tym celu Keycloak udostępnia kilka SPI, które pozwalają na wdrażanie własnych rozwiązań. Zamierzamy wdrożyć uwierzytelnianie, które wymaga ważnego kodu SMS. Aby stworzyć tę funkcję, musimy  zaimplementować interfejsy <em>org.keycloak.authentication.AuthenticatorFactory</em> i <em>Authenticator</em>. AuthenticatorFactory jest odpowiedzialny za tworzenie instancji Authenticatora. Oba interfejsy rozszerzają ogólny zestaw interfejsów Provider i ProviderFactory, które są używane przez inne komponenty Keycloak.</p>
<h3><b>Pakietowanie klas</b></h3>
<p>Będziemy pakietować nasze klasy do jednego projektu. Musi on zawierać plik o nazwie <code>org.keycloak.authentication.AuthenticatorFactory</code>, który powinien znajdować się w katalogu <code>META-INF/services/</code>. Plik ten musi zawierać pełne kwalifikowane nazwy klas każdej implementacji <code>AuthenticatorFactory</code>, którą masz w pliku JAR. Na przykład:</p>
<pre><span style="font-weight: 400;">pl.inero.keycloakext.authenticator.sms.SmsAuthenticatorFactory</span>
<span style="font-weight: 400;">pl.inero.keycloakext.authenticator.custom.CustomUsernamePasswordFormFactory</span>
<span style="font-weight: 400;">pl.inero.keycloakext.authenticator.custom.CustomCookieAuthenticatorFactory</span></pre>
<p>Plik <code>services/</code> jest używany przez Keycloak do skanowania dostawców, których musi załadować do systemu.</p>
<p>&nbsp;</p>
<h3><b>CredentialModel i CredentialProvider</b></h3>
<p>Pierwszym krokiem jest skonfigurowanie naszych klas związanych z poświadczeniami, ponieważ numer telefonu użytkownika powinien być przechowywany jako rekord poświadczeń. Jak widać poniżej, klasa <em>Sms2faCredentialData</em> jest prostym kontenerem danych do przechowywania numeru telefonu powiązanego z użytkownikiem.</p>
<pre><span style="font-weight: 400;">public class </span><span style="font-weight: 400;">Sms2faCredentialData {
</span>
<span style="font-weight: 400;">private </span><span style="font-weight: 400;">String phoneNumber</span><span style="font-weight: 400;">;
</span>
<span style="font-weight: 400;">@SuppressWarnings(</span><span style="font-weight: 400;">"unused"</span><span style="font-weight: 400;">) </span><span style="font-weight: 400;">//used for credentials deserialization</span>
<span style="font-weight: 400;">public </span><span style="font-weight: 400;">Sms2faCredentialData() {</span>
<span style="font-weight: 400;">}
</span>
<span style="font-weight: 400;">public </span><span style="font-weight: 400;">Sms2faCredentialData(String phoneNumber) {</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">this</span><span style="font-weight: 400;">.phoneNumber = phoneNumber</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">}
</span>
<span style="font-weight: 400;">public </span><span style="font-weight: 400;">String getPhoneNumber() {</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">return </span><span style="font-weight: 400;">phoneNumber</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">}
</span>
<span style="font-weight: 400;">@SuppressWarnings(</span><span style="font-weight: 400;">"unused"</span><span style="font-weight: 400;">) </span><span style="font-weight: 400;">//used for credentials deserialization</span>
<span style="font-weight: 400;">public void </span><span style="font-weight: 400;">setPhoneNumber(String phoneNumber) {</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">this</span><span style="font-weight: 400;">.phoneNumber = phoneNumber</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">}</span>
<span style="font-weight: 400;">}</span></pre>
<p>Kolejnym krokiem jest rozszerzenie klasy <em>CredentialModel</em>, która może generować prawidłowy format poświadczeń w bazie danych. Aby obiekty <em>Sms2faCredentialModel</em> były w pełni funkcjonalne, muszą zawierać nie tylko surowe dane JSON odziedziczone po klasie bazowej<strong>,</strong> ale także odmarshallowane obiekty wewnątrz swoich własnych atrybutów. Zapewnia to szeroką dostępność i wykorzystanie poświadczeń, umożliwiając łatwą integrację i obsługę procesów uwierzytelniania.</p>
<pre><span style="font-weight: 400;">public class </span><span style="font-weight: 400;">Sms2faCredentialModel </span><span style="font-weight: 400;">extends </span><span style="font-weight: 400;">CredentialModel {
</span>
<span style="font-weight: 400;">public static final </span><span style="font-weight: 400;">String TYPE = </span><span style="font-weight: 400;">"sms2fa"</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">private </span><span style="font-weight: 400;">Sms2faCredentialData smsCredentials</span><span style="font-weight: 400;">;
</span>
<span style="font-weight: 400;">public </span><span style="font-weight: 400;">Sms2faCredentialModel(Sms2faCredentialData smsCredentials) {</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">try </span><span style="font-weight: 400;">{</span>
<span style="font-weight: 400;">        </span> <span style="font-weight: 400;">this</span><span style="font-weight: 400;">.smsCredentials = smsCredentials</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">        </span> <span style="font-weight: 400;">setCredentialData(JsonSerialization.writeValueAsString(smsCredentials))</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">        </span> <span style="font-weight: 400;">setUserLabel(</span><span style="font-weight: 400;">"tel: " </span><span style="font-weight: 400;">+ smsCredentials.getPhoneNumber())</span><span style="font-weight: 400;">;
</span>
<span style="font-weight: 400;">        </span> <span style="font-weight: 400;">setType(TYPE)</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">} </span><span style="font-weight: 400;">catch </span><span style="font-weight: 400;">(IOException e) {</span>
<span style="font-weight: 400;">        </span> <span style="font-weight: 400;">throw new </span><span style="font-weight: 400;">RuntimeException(e)</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">}</span>
<span style="font-weight: 400;">}
</span>
<span style="font-weight: 400;">public </span><span style="font-weight: 400;">String getPhoneNumber() {</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">return </span><span style="font-weight: 400;">smsCredentials.getPhoneNumber()</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">}</span>
<span style="font-weight: 400;">}</span></pre>
<p>Podobnie jak w przypadku innych dostawców w Keycloak, utworzenie <em>CredentialProvider</em> wymaga obecności odpowiadającej mu <em>CredentialsProviderFactory.</em> Aby spełnić ten wymóg, implementujemy <em>Sms2faCredentialProviderFactory.</em></p>
<pre><span style="font-weight: 400;">public class </span><span style="font-weight: 400;">Sms2faCredentialProviderFactory  </span><span style="font-weight: 400;">implements </span><span style="font-weight: 400;">CredentialProviderFactory&lt;Sms2faCredentialProvider&gt; {</span>

<span style="font-weight: 400;">public static final </span><span style="font-weight: 400;">String PROVIDER_ID = </span><span style="font-weight: 400;">"keycloak-ext-sms2fa"</span><span style="font-weight: 400;">;</span>

<span style="font-weight: 400;">@Override</span>
<span style="font-weight: 400;">public </span><span style="font-weight: 400;">String getId() {</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">return </span><span style="font-weight: 400;">PROVIDER_ID</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">}</span>

<span style="font-weight: 400;">@Override</span>
<span style="font-weight: 400;">public </span><span style="font-weight: 400;">CredentialProvider&lt;Sms2faCredentialModel&gt; create(KeycloakSession session) {</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">return new </span><span style="font-weight: 400;">Sms2faCredentialProvider(session)</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">}</span>
<span style="font-weight: 400;">}</span></pre>
<p>Interfejs <em>CredentialProvider</em> jest zbudowany z parametrem generycznym, który rozszerza <em>CredentialModel</em>, zapewniając kompatybilność z różnymi typami poświadczeń. Dodatkowo musimy zaimplementować interfejs <em>CredentialInputValidator</em>, co wskazuje Keycloak, że ten dostawca jest przygotowany do uwierzytelniania poświadczeń dla naszego niestandardowego Authenticatora. Chociaż nie będziemy tu omawiać pełnej architektury, dokumentacja Keycloak obejmuje dodatkowe metody.</p>
<p>Nasza implementacja obejmuje funkcje tworzenia i usuwania poświadczeń. Funkcje te wykorzystują menedżera poświadczeń, odpowiedzialnego za przechowywanie i pobieranie poświadczeń, niezależnie od tego, czy są one przechowywane lokalnie, czy w systemach magazynowania federacyjnego.</p>
<pre><span style="font-weight: 400;">@Override</span>
<span style="font-weight: 400;">public </span><span style="font-weight: 400;">CredentialModel createCredential(RealmModel realm</span><span style="font-weight: 400;">, </span><span style="font-weight: 400;">UserModel user</span><span style="font-weight: 400;">, </span><span style="font-weight: 400;">Sms2faCredentialModel credentialModel) {</span>
<span style="font-weight: 400;">if </span><span style="font-weight: 400;">(credentialModel.getCreatedDate() == </span><span style="font-weight: 400;">null</span><span style="font-weight: 400;">) {</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">credentialModel.setCreatedDate(Time.currentTimeMillis())</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">return </span><span style="font-weight: 400;">user.credentialManager().createStoredCredential(credentialModel)</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">}</span>

<span style="font-weight: 400;">@Override</span>
<span style="font-weight: 400;">public boolean </span><span style="font-weight: 400;">deleteCredential(RealmModel realm</span><span style="font-weight: 400;">, </span><span style="font-weight: 400;">UserModel user</span><span style="font-weight: 400;">, </span><span style="font-weight: 400;">String credentialId) {</span>
<span style="font-weight: 400;">logger.debugv(</span><span style="font-weight: 400;">"Delete Sms2fa credential. username = {0}, credentialId = {1}"</span><span style="font-weight: 400;">, </span><span style="font-weight: 400;">user.getUsername()</span><span style="font-weight: 400;">, </span><span style="font-weight: 400;">credentialId)</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">return </span><span style="font-weight: 400;">user.credentialManager().removeStoredCredentialById(credentialId)</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">}</span></pre>
<p>Dla interfejsu <code>CredentialInputValidator</code> główną metodą do zaimplementowania jest <code>isValid</code>, która sprawdza, czy dane poświadczenie jest ważne dla danego użytkownika w danej domenie (realm). Jest to metoda wywoływana przez Authenticator, gdy chce zweryfikować dane wprowadzone przez użytkownika.</p>
<pre><span style="font-weight: 400;">@Override</span>
<span style="font-weight: 400;">public boolean </span><span style="font-weight: 400;">isValid(RealmModel realm</span><span style="font-weight: 400;">, </span><span style="font-weight: 400;">UserModel user</span><span style="font-weight: 400;">, </span><span style="font-weight: 400;">CredentialInput credentialInput) {</span>
<span style="font-weight: 400;">final </span><span style="font-weight: 400;">Sms2faCredentialModel credentialModel = getDefaultCredential(session</span><span style="font-weight: 400;">, </span><span style="font-weight: 400;">realm</span><span style="font-weight: 400;">, </span><span style="font-weight: 400;">user)</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">final </span><span style="font-weight: 400;">String secretData = credentialModel.getSecretData()</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">return </span><span style="font-weight: 400;">secretData != </span><span style="font-weight: 400;">null </span><span style="font-weight: 400;">&amp;&amp; secretData.equals(credentialInput.getChallengeResponse())</span><span style="font-weight: 400;">;</span></pre>
<p>Teraz powinniśmy mieć wszystko, aby móc przejść do implementacji samego Authenticatora.</p>
<p>&nbsp;</p>
<h3><b>AuthenticatorFactory i Authenticator</b></h3>
<p>Klasa <em>SmsAuthenticatorFactory</em> zawiera logikę potrzebną do skonfigurowania i tworzenia instancji <em>SmsAuthenticator</em>, który wykonuje walidację OTP opartą na SMS. Obsługuje dostosowywanie poprzez kilka konfigurowalnych właściwości.</p>
<pre><span style="font-weight: 400;">supports customization through several configurable properties.</span>
<span style="font-weight: 400;">public class </span><span style="font-weight: 400;">SmsAuthenticatorFactory </span><span style="font-weight: 400;">implements </span><span style="font-weight: 400;">AuthenticatorFactory {</span>

<span style="font-weight: 400;">@Override</span>
<span style="font-weight: 400;">public </span><span style="font-weight: 400;">String getId() {</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">return </span><span style="font-weight: 400;">"sms-authenticator"</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">}</span>

<span style="font-weight: 400;">@Override</span>
<span style="font-weight: 400;">public </span><span style="font-weight: 400;">String getDisplayType() {</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">return </span><span style="font-weight: 400;">"SMS Authentication"</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">}</span>
<span style="font-weight: 400;">@Override</span>
<span style="font-weight: 400;">public </span><span style="font-weight: 400;">String getHelpText() {</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">return </span><span style="font-weight: 400;">"Validates an OTP sent via SMS to the users mobile phone."</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">}</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">(…)</span>
<span style="font-weight: 400;">}</span></pre>
<p>Teraz przejdźmy do samego Authenticatora. Główna metoda, na której się skupimy, to <em>sendChallenge()</em>. Kiedy przepływ jest początkowo wyzwalany, ta metoda jest wywoływana. Ważne jest, aby zauważyć, że nie obsługuje ona przetwarzania formularza kodu SMS. Jej rola polega na renderowaniu strony lub kontynuowaniu przepływu.</p>
<p>Strona HTML, która prosi o wprowadzenie otrzymanego kodu, jest prezentowana użytkownikowi, który następnie wprowadza kod i przesyła go. Wówczas wysyłane jest żądanie HTTP do przepływu za pomocą adresu URL akcji określonego w formularzu HTML. To wyzwala metodę <em>action()</em> w naszej implementacji Authenticatora. Jeśli podany kod jest nieprawidłowy, rekonstruujemy formularz HTML, dodając komunikat o błędzie. Następnie używamy metody <em>failureChallenge()</em>, przekazując powód niepowodzenia. Działa ona podobnie do <em>challenge()</em>, ale dodatkowo loguje błąd, co pomaga wykryć ewentualne możliwości ataku.</p>
<pre><span style="font-weight: 400;">private void </span><span style="font-weight: 400;">sendChallenge(AuthenticationFlowContext context) {</span>
<span style="font-weight: 400;">(…)</span>
<span style="font-weight: 400;">credentialModel.setSecretData(code)</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">user.credentialManager().updateStoredCredential(credentialModel)</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">AuthenticationSessionModel authSession = context.getAuthenticationSession()</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">authSession.setAuthNote(</span><span style="font-weight: 400;">"ttl"</span><span style="font-weight: 400;">, </span><span style="font-weight: 400;">Long.toString(System.currentTimeMillis() + (ttl * </span><span style="font-weight: 400;">1000L</span><span style="font-weight: 400;">)))</span><span style="font-weight: 400;">;</span>

<span style="font-weight: 400;">try </span><span style="font-weight: 400;">{</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">/* sending SMS */</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">context.challenge(context.form().setAttribute(</span><span style="font-weight: 400;">"realm"</span><span style="font-weight: 400;">, </span><span style="font-weight: 400;">context.getRealm()).createForm(TPL_CODE))</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">} </span><span style="font-weight: 400;">catch </span><span style="font-weight: 400;">(Exception e) {</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">context.failureChallenge(AuthenticationFlowError.INTERNAL_ERROR</span><span style="font-weight: 400;">,</span>
<span style="font-weight: 400;">            </span> <span style="font-weight: 400;">context.form().setError(</span><span style="font-weight: 400;">"smsAuthSmsNotSent"</span><span style="font-weight: 400;">, </span><span style="font-weight: 400;">e.getMessage())</span>
<span style="font-weight: 400;">                    </span> <span style="font-weight: 400;">.createErrorPage(Response.Status.INTERNAL_SERVER_ERROR))</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">}</span>
<span style="font-weight: 400;">}</span>

<span style="font-weight: 400;">@Override</span>
<span style="font-weight: 400;">public void </span><span style="font-weight: 400;">action(AuthenticationFlowContext context) {</span>
<span style="font-weight: 400;">(…)</span>
<span style="font-weight: 400;">final </span><span style="font-weight: 400;">Sms2faCredentialModel credentialModel = getCredentialProvider(session).getDefaultCredential(session</span><span style="font-weight: 400;">, </span><span style="font-weight: 400;">context.getRealm()</span><span style="font-weight: 400;">, </span><span style="font-weight: 400;">user)</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">boolean </span><span style="font-weight: 400;">isValid = getCredentialProvider(context.getSession()).isValid(context.getRealm()</span><span style="font-weight: 400;">, </span><span style="font-weight: 400;">context.getUser()</span><span style="font-weight: 400;">,</span>
<span style="font-weight: 400;">       new </span><span style="font-weight: 400;">UserCredentialModel(credentialModel.getId()</span><span style="font-weight: 400;">, </span><span style="font-weight: 400;">getCredentialProvider(context.getSession()).getType()</span><span style="font-weight: 400;">, </span><span style="font-weight: 400;">enteredCode))</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">if </span><span style="font-weight: 400;">(isValid) {</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">if </span><span style="font-weight: 400;">(Long.parseLong(ttl) &lt; System.currentTimeMillis()) {</span>
<span style="font-weight: 400;">        </span> <span style="font-weight: 400;">// expired</span>
<span style="font-weight: 400;">        </span> <span style="font-weight: 400;">context.failureChallenge(AuthenticationFlowError.EXPIRED_CODE</span><span style="font-weight: 400;">,
</span>
<span style="font-weight: 400;">                </span> <span style="font-weight: 400;">context.form().setError(</span><span style="font-weight: 400;">"smsAuthCodeExpired"</span><span style="font-weight: 400;">).createErrorPage(Response.Status.BAD_REQUEST))</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">} </span><span style="font-weight: 400;">else </span><span style="font-weight: 400;">{</span>
<span style="font-weight: 400;">        </span> <span style="font-weight: 400;">// valid</span>
<span style="font-weight: 400;">        </span> <span style="font-weight: 400;">context.success()</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">}</span>
<span style="font-weight: 400;">} </span><span style="font-weight: 400;">else </span><span style="font-weight: 400;">{</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">context.getEvent().user(user).error(Errors.INVALID_USER_CREDENTIALS)</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">context.failureChallenge(AuthenticationFlowError.INVALID_CREDENTIALS</span><span style="font-weight: 400;">,</span>
<span style="font-weight: 400;">            </span> <span style="font-weight: 400;">context.form().setAttribute(</span><span style="font-weight: 400;">"realm"</span><span style="font-weight: 400;">, </span><span style="font-weight: 400;">context.getRealm())</span>
<span style="font-weight: 400;">                    </span> <span style="font-weight: 400;">.setError(</span><span style="font-weight: 400;">"smsAuthCodeInvalid"</span><span style="font-weight: 400;">).createForm(TPL_CODE))</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">}</span>
<span style="font-weight: 400;">}</span></pre>
<h3><b>Authentication Flow</b></h3>
<p>Aby dodać Authenticator do przepływu, administrator musi przejść do Konsoli. W sekcji Uwierzytelnianie (Authentication) i zakładce Przepływy (Flows) powinien zobaczyć istniejące przepływy. Wbudowane przepływy nie mogą być bezpośrednio modyfikowane, więc aby zintegrować nowo utworzony Authenticator, musimy albo zduplikować istniejący przepływ, albo stworzyć nowy od podstaw.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-5841 size-full" src="https://inero-software.com/wp-content/uploads/2024/06/2-3.png" alt="" width="1920" height="1080" srcset="https://inero-software.com/wp-content/uploads/2024/06/2-3.png 1920w, https://inero-software.com/wp-content/uploads/2024/06/2-3-300x169.png 300w, https://inero-software.com/wp-content/uploads/2024/06/2-3-1030x579.png 1030w, https://inero-software.com/wp-content/uploads/2024/06/2-3-768x432.png 768w, https://inero-software.com/wp-content/uploads/2024/06/2-3-1536x864.png 1536w, https://inero-software.com/wp-content/uploads/2024/06/2-3-533x300.png 533w" sizes="(max-width: 1920px) 100vw, 1920px" /></p>
<h3><b>Required actions</b></h3>
<p>Jeśli telefon nie jest skonfigurowany, powinniśmy wywołać niestandardowe wymagane działanie. Ponownie, powinniśmy dodać pełną kwalifikowaną nazwę klasy do katalogu <em>META-INF/services</em> i zaimplementować interfejs <em>RequiredActionProvider</em>. Metoda <em>requiredActionChallenge()</em> jest odpowiedzialna za renderowanie HTML, który poprowadzi wymagane działanie.</p>
<pre><span style="font-weight: 400;">@Override</span>
<span style="font-weight: 400;">public void </span><span style="font-weight: 400;">requiredActionChallenge(RequiredActionContext context) {</span>
<span style="font-weight: 400;">LoginFormsProvider form = context.form()</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">if </span><span style="font-weight: 400;">(getSmsAuthenticatorConfig(context) == </span><span style="font-weight: 400;">null</span><span style="font-weight: 400;">) {</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">form.setError(</span><span style="font-weight: 400;">"smsAuthMissingAuthenticatorConfig"</span><span style="font-weight: 400;">)</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">}</span>
<span style="font-weight: 400;">final </span><span style="font-weight: 400;">Response response = form.createForm(</span><span style="font-weight: 400;">"sms-2fa-register.ftl"</span><span style="font-weight: 400;">)</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">context.challenge(response)</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">}</span></pre>
<p>Ta część jest odpowiedzialna za przetwarzanie danych wejściowych z formularza HTML wymaganego działania. Po wprowadzeniu otrzymanego kodu SMS, numer telefonu powinien zostać zapisany w bazie danych jako poświadczenie. Przy następnym logowaniu będziemy mogli skorzystać z tej formy OTP.</p>
<pre><span style="font-weight: 400;">@Override</span>
<span style="font-weight: 400;">public void </span><span style="font-weight: 400;">processAction(RequiredActionContext context) {</span>
<span style="font-weight: 400;">    (…)</span>
<span style="font-weight: 400;">final </span><span style="font-weight: 400;">String phoneNumber = params.getFirst(</span><span style="font-weight: 400;">"phoneNumber"</span><span style="font-weight: 400;">)</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">final </span><span style="font-weight: 400;">String code = params.getFirst(</span><span style="font-weight: 400;">"code"</span><span style="font-weight: 400;">)</span><span style="font-weight: 400;">;</span>

<span style="font-weight: 400;">if</span><span style="font-weight: 400;">(StringUtils.isBlank(phoneNumber) &amp;&amp; StringUtils.isBlank(authSession.getAuthNote(</span><span style="font-weight: 400;">"phone_number"</span><span style="font-weight: 400;">))) {</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">//if no phone number is set, redirect to the first page</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">requiredActionChallenge(context)</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">return;</span>
<span style="font-weight: 400;">}</span>
<span style="font-weight: 400;">if </span><span style="font-weight: 400;">(phoneNumber != </span><span style="font-weight: 400;">null</span><span style="font-weight: 400;">) {</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">sendPhoneNumberVerificationChallenge(context</span><span style="font-weight: 400;">, </span><span style="font-weight: 400;">authSession</span><span style="font-weight: 400;">, </span><span style="font-weight: 400;">phoneNumber</span><span style="font-weight: 400;">, </span><span style="font-weight: 400;">smsAuthenticatorConfig.getConfig())</span><span style="font-weight: 400;">;</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">return;</span>
<span style="font-weight: 400;">}</span>
<span style="font-weight: 400;">if </span><span style="font-weight: 400;">(code != </span><span style="font-weight: 400;">null</span><span style="font-weight: 400;">) {</span>
<span style="font-weight: 400;">    </span> <span style="font-weight: 400;">/* verify provided SMS code */</span> 
<span style="font-weight: 400;">    </span><span style="font-weight: 400;">}</span>
<span style="font-weight: 400;">}</span></pre>
<p>Ostatnią rzeczą, którą musisz zrobić, jest przejście do Konsoli Administratora i zakładki Wymagane Działania (Required Actions). Twoje nowe działanie powinno teraz być wyświetlone i włączone na liście wymaganych działań.</p>
<p><img loading="lazy" decoding="async" class="wp-image-5840 aligncenter" src="https://inero-software.com/wp-content/uploads/2024/06/1-3-300x169.png" alt="" width="774" height="436" srcset="https://inero-software.com/wp-content/uploads/2024/06/1-3-300x169.png 300w, https://inero-software.com/wp-content/uploads/2024/06/1-3-1030x579.png 1030w, https://inero-software.com/wp-content/uploads/2024/06/1-3-768x432.png 768w, https://inero-software.com/wp-content/uploads/2024/06/1-3-1536x864.png 1536w, https://inero-software.com/wp-content/uploads/2024/06/1-3-533x300.png 533w, https://inero-software.com/wp-content/uploads/2024/06/1-3.png 1920w" sizes="(max-width: 774px) 100vw, 774px" /></p>
<p>Jeśli użytkownik nie podał wcześniej numeru telefonu, a uwierzytelnianie SMS jest ustawione jako wymagane w przepływie uwierzytelniania, powinna pojawić się nowa widok.</p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-5842 size-full" src="https://inero-software.com/wp-content/uploads/2024/06/3-3.png" alt="" width="1920" height="1080" srcset="https://inero-software.com/wp-content/uploads/2024/06/3-3.png 1920w, https://inero-software.com/wp-content/uploads/2024/06/3-3-300x169.png 300w, https://inero-software.com/wp-content/uploads/2024/06/3-3-1030x579.png 1030w, https://inero-software.com/wp-content/uploads/2024/06/3-3-768x432.png 768w, https://inero-software.com/wp-content/uploads/2024/06/3-3-1536x864.png 1536w, https://inero-software.com/wp-content/uploads/2024/06/3-3-533x300.png 533w" sizes="(max-width: 1920px) 100vw, 1920px" /></p>
<p>Podsumowując, konfiguracja SMS MFA obejmuje ustawienie niestandardowych wymaganych działań oraz dostawców uwierzytelniania, ale oczywiście istnieją inne kwestie do uwzględnienia, takie jak komunikacja między Keycloak a bramką SMS. Zagadnienia, które omówiliśmy w tym poście, to oczywiście tylko część możliwej konfiguracji, ale najważniejsza i specyficzna dla Keycloak.</p>
<p>Jedną z istotnych zalet wdrożenia SMS MFA jest jego powszechna dostępność, ponieważ większość użytkowników posiada telefony komórkowe zdolne do odbierania wiadomości SMS. Dodatkowo, zapewnia to prostą obsługę dla użytkowników, wymagając minimalnej konfiguracji i znajomości. Jednak mechanizm ten ma swoje wady, w tym potencjalne zagrożenia, takie jak ataki polegające na zamianie kart SIM lub przechwytywaniu kodów SMS. Ponadto, dostarczanie wiadomości SMS może czasami być zawodnym procesem, co prowadzi do opóźnień lub nieudanej dostawy, wpływając na doświadczenie użytkownika. Powinniśmy być tego świadomi przed podjęciem decyzji o zastosowaniu tej metody, szczególnie w erze nowszych rozwiązań, takich jak mobilne aplikacje OTP.</p>
<p><a href="https://inero-software.com/pl/najlepsze-praktyki-w-keycloak-zadbaj-o-bezpieczenstwo-w-5-krokach/"><img loading="lazy" decoding="async" data-attachment-id="5873" data-permalink="https://inero-software.com/pl/tworzenie-niestandardowego-uwierzytelniania-sms-w-keycloak/3-6/" data-orig-file="https://inero-software.com/wp-content/uploads/2024/06/3-4.png" data-orig-size="1200,100" 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="3" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2024/06/3-4-300x25.png" data-large-file="https://inero-software.com/wp-content/uploads/2024/06/3-4-1030x86.png" tabindex="0" role="button" class="alignnone wp-image-5873 size-full" src="https://inero-software.com/wp-content/uploads/2024/06/3-4.png" alt="" width="1200" height="100" srcset="https://inero-software.com/wp-content/uploads/2024/06/3-4.png 1200w, https://inero-software.com/wp-content/uploads/2024/06/3-4-300x25.png 300w, https://inero-software.com/wp-content/uploads/2024/06/3-4-1030x86.png 1030w, https://inero-software.com/wp-content/uploads/2024/06/3-4-768x64.png 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></a></p>
<p></p></div><div class="col-sm-1"></div></div>
<p>Artykuł <a href="https://inero-software.com/pl/tworzenie-niestandardowego-uwierzytelniania-sms-w-keycloak/">Tworzenie niestandardowego uwierzytelniania SMS 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">5868</post-id>	</item>
		<item>
		<title>Najlepsze praktyki w Keycloak. Zadbaj o bezpieczeństwo w 5 krokach</title>
		<link>https://inero-software.com/pl/najlepsze-praktyki-w-keycloak-zadbaj-o-bezpieczenstwo-w-5-krokach/</link>
		
		<dc:creator><![CDATA[Marta Kuprasz]]></dc:creator>
		<pubDate>Mon, 13 May 2024 12:35:16 +0000</pubDate>
				<category><![CDATA[Firma]]></category>
		<category><![CDATA[Keycloak]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[biznes]]></category>
		<category><![CDATA[cyberbezpieczeństwo]]></category>
		<category><![CDATA[emial]]></category>
		<category><![CDATA[HTTPS]]></category>
		<category><![CDATA[IAM]]></category>
		<category><![CDATA[keycloak]]></category>
		<category><![CDATA[MFA]]></category>
		<category><![CDATA[optymalizacja procesów biznesowych]]></category>
		<category><![CDATA[sms]]></category>
		<category><![CDATA[SSL/TLS]]></category>
		<category><![CDATA[SSO]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=5695</guid>

					<description><![CDATA[<p>Keycloak to narzędzie do zarządzania tożsamością i dostępem, które zapewnia bezpieczeństwo aplikacji i usług webowych. Aby maksymalnie zabezpieczyć swoje środowisko przy jego użyciu, warto wdrożyć najlepsze praktyki. Oto 5 kluczowych kroków, które Ci w tym pomogą.</p>
<p>Artykuł <a href="https://inero-software.com/pl/najlepsze-praktyki-w-keycloak-zadbaj-o-bezpieczenstwo-w-5-krokach/">Najlepsze praktyki w Keycloak. Zadbaj o bezpieczeństwo w 5 krokach</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="5695" class="elementor elementor-5695" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-59f4920c e-flex e-con-boxed e-con e-parent" data-id="59f4920c" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-112b6ca elementor-widget elementor-widget-html" data-id="112b6ca" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					</div>
				</div>
				<div class="elementor-element elementor-element-51a502b elementor-widget elementor-widget-text-editor" data-id="51a502b" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4>Keycloak to narzędzie do zarządzania tożsamością i dostępem, które zapewnia bezpieczeństwo aplikacji i usług webowych. Aby maksymalnie zabezpieczyć swoje środowisko przy jego użyciu, warto wdrożyć najlepsze praktyki. Oto 5 kluczowych kroków, które Ci w tym pomogą.</h4>						</div>
				</div>
				<div class="elementor-element elementor-element-74761ea elementor-widget elementor-widget-heading" data-id="74761ea" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Włącz HTTPS i używaj silnych certyfikatów</h3>		</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-b8c0093 e-flex e-con-boxed e-con e-parent" data-id="b8c0093" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-65e5e55 e-con-full e-flex e-con e-child" data-id="65e5e55" data-element_type="container">
				<div class="elementor-element elementor-element-46ee0e2 elementor-widget elementor-widget-image" data-id="46ee0e2" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img loading="lazy" decoding="async" width="300" height="300" src="https://inero-software.com/wp-content/uploads/2024/05/A-1.png" class="attachment-large size-large wp-image-5733" alt="" srcset="https://inero-software.com/wp-content/uploads/2024/05/A-1.png 300w, https://inero-software.com/wp-content/uploads/2024/05/A-1-80x80.png 80w, https://inero-software.com/wp-content/uploads/2024/05/A-1-75x75.png 75w, https://inero-software.com/wp-content/uploads/2024/05/A-1-50x50.png 50w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="5733" data-permalink="https://inero-software.com/best-keycloak-practices/a-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2024/05/A-1.png" data-orig-size="300,300" 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="A" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2024/05/A-1.png" data-large-file="https://inero-software.com/wp-content/uploads/2024/05/A-1.png" role="button" />													</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-2d0bd5e e-con-full e-flex e-con e-child" data-id="2d0bd5e" data-element_type="container">
				<div class="elementor-element elementor-element-d1c415d elementor-widget elementor-widget-text-editor" data-id="d1c415d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Pierwszym i najważniejszym krokiem jest zapewnienie, że cała komunikacja z serwerem Keycloak odbywa się przez bezpieczny protokół HTTPS. Używanie certyfikatów SSL/TLS od zaufanych dostawców chroni przed przechwyceniem i manipulacją danymi.</p><p><strong>W tym kroku:</strong></p><p>&#8211; Skonfiguruj serwer Keycloak: Ustaw serwer, aby korzystał wyłącznie z HTTPS, odrzucając wszystkie niezaszyfrowane żądania HTTP.</p><p>&#8211; Uaktualnij certyfikaty: Regularnie odnawiaj i uaktualniaj certyfikaty SSL/TLS, aby uniknąć ryzyka wykorzystania przestarzałych kluczy.</p>						</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-2316ba4 e-flex e-con-boxed e-con e-parent" data-id="2316ba4" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-a303f8a elementor-widget elementor-widget-heading" data-id="a303f8a" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Zastosuj wieloskładnikowe uwierzytelnianie (Multi-Factor Authentication, MFA)</h3>		</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-4a47934 e-flex e-con-boxed e-con e-parent" data-id="4a47934" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-be8e926 e-con-full e-flex e-con e-child" data-id="be8e926" data-element_type="container">
				<div class="elementor-element elementor-element-2b348bb elementor-widget elementor-widget-image" data-id="2b348bb" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img loading="lazy" decoding="async" width="300" height="300" src="https://inero-software.com/wp-content/uploads/2024/05/B-1.png" class="attachment-large size-large wp-image-5734" alt="" srcset="https://inero-software.com/wp-content/uploads/2024/05/B-1.png 300w, https://inero-software.com/wp-content/uploads/2024/05/B-1-80x80.png 80w, https://inero-software.com/wp-content/uploads/2024/05/B-1-75x75.png 75w, https://inero-software.com/wp-content/uploads/2024/05/B-1-50x50.png 50w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="5734" data-permalink="https://inero-software.com/best-keycloak-practices/b-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2024/05/B-1.png" data-orig-size="300,300" 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="B" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2024/05/B-1.png" data-large-file="https://inero-software.com/wp-content/uploads/2024/05/B-1.png" role="button" />													</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-5777998 e-con-full e-flex e-con e-child" data-id="5777998" data-element_type="container">
				<div class="elementor-element elementor-element-0acca6e elementor-widget elementor-widget-text-editor" data-id="0acca6e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p class="" data-start="0" data-end="335">Ta funkcja dodaje warstwę bezpieczeństwa poprzez jednoczesne użycie kilku metod weryfikacji tożsamości użytkownika. 2FA (uwierzytelnianie dwuskładnikowe) to popularna forma MFA, która zazwyczaj wymaga od użytkownika podania hasła i potwierdzenia tożsamości za pomocą drugiego składnika, na przykład kodu z aplikacji uwierzytelniającej.</p><p class="" data-start="337" data-end="349">W tym kroku:</p><p class="" data-start="351" data-end="675"><strong data-start="351" data-end="408">Aktywuj uwierzytelnianie wieloskładnikowe w Keycloak:</strong> Włącz MFA dla wszystkich użytkowników, szczególnie tych z dostępem administracyjnym i do danych wrażliwych.<br data-start="516" data-end="519" /><strong data-start="519" data-end="555" data-is-only-node="">Wybierz metody uwierzytelniania:</strong> Keycloak obsługuje różne metody MFA – najczęściej używane to aplikacje uwierzytelniające (np. Microsoft Authenticator).</p>						</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-0f4f02f e-flex e-con-boxed e-con e-parent" data-id="0f4f02f" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-2f4cded elementor-widget elementor-widget-text-editor" data-id="2f4cded" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><strong>Przeczytaj także: </strong></p><ul><li style="list-style-type: none;"><ul><li><a href="https://inero-software.com/pl/przewodnik-krok-po-kroku-uwierzytelnianie-wieloskladnikowe-mfa-w-keycloak/">Przewodnik krok po kroku- Uwierzytelnianie wieloskładnikowe (MFA) w Keycloak</a></li><li><a href="https://inero-software.com/pl/tworzenie-niestandardowego-uwierzytelniania-sms-w-keycloak/">Tworzenie niestandardowego uwierzytelniania SMS w Keycloak</a></li><li><a href="https://inero-software.com/pl/wdrazanie-uwierzytelniania-wieloskladnikowego-za-pomoca-e-maila-w-keycloak/">Wdrażanie uwierzytelniania wieloskładnikowego za pomocą wiadomości e-mail w Keycloak</a></li></ul></li></ul>						</div>
				</div>
				<div class="elementor-element elementor-element-679a1d1 elementor-widget elementor-widget-heading" data-id="679a1d1" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Wprowadź silne polityki haseł i zarządzanie sesjami</h3>		</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-eb5372b e-flex e-con-boxed e-con e-parent" data-id="eb5372b" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-bcc75f2 e-con-full e-flex e-con e-child" data-id="bcc75f2" data-element_type="container">
				<div class="elementor-element elementor-element-d8c7551 elementor-widget elementor-widget-image" data-id="d8c7551" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img loading="lazy" decoding="async" width="300" height="300" src="https://inero-software.com/wp-content/uploads/2024/05/C-1.png" class="attachment-large size-large wp-image-5735" alt="" srcset="https://inero-software.com/wp-content/uploads/2024/05/C-1.png 300w, https://inero-software.com/wp-content/uploads/2024/05/C-1-80x80.png 80w, https://inero-software.com/wp-content/uploads/2024/05/C-1-75x75.png 75w, https://inero-software.com/wp-content/uploads/2024/05/C-1-50x50.png 50w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="5735" data-permalink="https://inero-software.com/best-keycloak-practices/c-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2024/05/C-1.png" data-orig-size="300,300" 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="C" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2024/05/C-1.png" data-large-file="https://inero-software.com/wp-content/uploads/2024/05/C-1.png" role="button" />													</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-0529c4c e-con-full e-flex e-con e-child" data-id="0529c4c" data-element_type="container">
				<div class="elementor-element elementor-element-886422a elementor-widget elementor-widget-text-editor" data-id="886422a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Zarządzanie hasłami i sesjami jest kluczowe dla ochrony tożsamości użytkowników i zapobiegania nieautoryzowanemu dostępowi. Są pierwszą linią obrony przed atakami, takimi jak brute force czy phishing. Keycloak w tym zakresie daje szerokie pole możliwości konfiguracji polityki ustawiania haseł, które są konfigurowalne z poziomu konsoli administracyjnej.</p><p><strong>W tym kroku:</strong></p><p>&#8211; Skonfiguruj politykę haseł: ustal dokładne zasady wyboru haseł, aby wymagały określonej długości, skomplikowania (np. obecność znaków specjalnych, dużych i małych liter) oraz określ czas życia hasła i jego historię.</p><p>&#8211; Ogranicz czas życia sesji: Ustaw krótkie, ale praktyczne czasy życia sesji i tokenów, aby zminimalizować okno dla potencjalnych ataków. Automatyczne wylogowywanie użytkowników po określonym czasie nieaktywności jest ważne dla zapobiegania przypadkowemu pozostawieniu sesji otwartej na współdzielonych lub publicznych urządzeniach.</p>						</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-12aedc4 e-flex e-con-boxed e-con e-parent" data-id="12aedc4" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-20b75c7 elementor-widget elementor-widget-text-editor" data-id="20b75c7" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><strong>Przeczytaj także: </strong></p><ul><li style="list-style-type: none;"><ul><li><a href="https://inero-software.com/pl/praktyczne-wprowadzenie-do-keycloak-sso-od-konfiguracji-do-integracji/">Praktyczne wprowadzenie do Keycloak SSO: Od konfiguracji do integracji</a></li><li><a href="https://inero-software.com/pl/wprowadzenie-do-passkey-w-keycloak/">Wpowadzenie do Passkey w Keycloak </a></li></ul></li></ul>						</div>
				</div>
				<div class="elementor-element elementor-element-f6f00d8 elementor-widget elementor-widget-heading" data-id="f6f00d8" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Zabezpiecz punkty końcowe API i używaj kontroli dostępu opartej na rolach (RBAC)</h3>		</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-709dbf0 e-flex e-con-boxed e-con e-parent" data-id="709dbf0" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-b8fc9e2 e-con-full e-flex e-con e-child" data-id="b8fc9e2" data-element_type="container">
				<div class="elementor-element elementor-element-84a3289 elementor-widget elementor-widget-image" data-id="84a3289" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img loading="lazy" decoding="async" width="300" height="300" src="https://inero-software.com/wp-content/uploads/2024/05/D-1.png" class="attachment-large size-large wp-image-5736" alt="" srcset="https://inero-software.com/wp-content/uploads/2024/05/D-1.png 300w, https://inero-software.com/wp-content/uploads/2024/05/D-1-80x80.png 80w, https://inero-software.com/wp-content/uploads/2024/05/D-1-75x75.png 75w, https://inero-software.com/wp-content/uploads/2024/05/D-1-50x50.png 50w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="5736" data-permalink="https://inero-software.com/best-keycloak-practices/d-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2024/05/D-1.png" data-orig-size="300,300" 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="D" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2024/05/D-1.png" data-large-file="https://inero-software.com/wp-content/uploads/2024/05/D-1.png" role="button" />													</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-75033e9 e-con-full e-flex e-con e-child" data-id="75033e9" data-element_type="container">
				<div class="elementor-element elementor-element-72fac30 elementor-widget elementor-widget-text-editor" data-id="72fac30" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Kontrola dostępu oparta na rolach (Role-Based Access Control) pozwala na definiowanie ról, przypisywanie ich użytkownikom i zarządzanie uprawnieniami, co umożliwia kontrolę operacji na API zależnie od roli.</p><h6> </h6><p><strong>W tym kroku:</strong></p><p>Zabezpieczanie punktów końcowych API: Aby zabezpieczyć punkty końcowe API, kluczowe jest zastosowanie odpowiednich mechanizmów autoryzacji i uwierzytelniania:</p><ul><li style="list-style-type: none;"><ul><li>Uwierzytelnianie: Implementuj protokoły uwierzytelniania, takie jak OAuth 2.0 i OpenID Connect, aby użytkownicy i aplikacje musiały udowodnić swoją tożsamość przed uzyskaniem dostępu do API.</li><li>Tokeny dostępu: Wykorzystuj tokeny dostępu (access tokens), które zawierają informacje o uprawnieniach użytkownika, do weryfikacji uprawnień dostępu do różnych zasobów API.</li><li>HTTPS: Zapewnij, że wszystkie żądania do API są przesyłane przez HTTPS, chroniąc dane przed przechwyceniem i modyfikacją.</li></ul></li></ul><p>Kontrola dostępu oparta na rolach (RBAC): Role-Based Access Control pozwala na zarządzanie uprawnieniami użytkowników na podstawie ich ról w organizacji:</p><ul><li style="list-style-type: none;"><ul><li>Definiowanie ról: Ustal role, które odzwierciedlają różne poziomy dostępu w aplikacji, np. administrator, użytkownik, gość itp.</li><li>Przypisywanie ról: Przypisz użytkownikom role, które określają, do jakich zasobów i operacji mogą uzyskać dostęp.</li><li>Zarządzanie uprawnieniami: Skonfiguruj zasady dostępu w Keycloak, aby kontrolować, które operacje mogą być wykonane przez użytkowników z daną rolą na określonych punktach końcowych API.</li></ul></li></ul>						</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-0e7ac41 e-flex e-con-boxed e-con e-parent" data-id="0e7ac41" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-c72e20d elementor-widget elementor-widget-text-editor" data-id="c72e20d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p> <strong>Przeczytaj także: </strong></p><ul><li style="list-style-type: none;"><ul><li><a href="https://inero-software.com/pl/zabezpieczanie-punktow-koncowych-java-spring-za-pomoca-keycloak/">Przewodnik integracji Keycloak: Zabezpieczanie punktów końcowych Java Spring za pomocą KeycloakWdrażanie uwierzytelniania wieloskładnikowego za pomocą wiadomości e-mail w Keycloak</a></li><li><a href="https://inero-software.com/pl/przewodnik-integracji-keycloak-logowanie-przez-platformy-spolecznosciowe/">Przewodnik integracji Keycloak: Logowanie przez platformy społecznościowe</a></li><li><a href="https://inero-software.com/pl/organizacje-w-keycloak-zarzadzanie-i-personalizacja-autentykacji/">Organizacje w Keycloak: Zarządzanie i personalizacja autentykacji</a></li><li><a href="https://inero-software.com/pl/integracja-keycloak-i-lightweight-directory-access-protocol/">Integracja Keycloak i Lightweight Directory Access Protocol</a></li></ul></li></ul>						</div>
				</div>
				<div class="elementor-element elementor-element-c66c681 elementor-widget elementor-widget-heading" data-id="c66c681" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Regularnie aktualizuj i monitoruj środowisko</h3>		</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-496def2 e-flex e-con-boxed e-con e-parent" data-id="496def2" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-814d9e5 e-con-full e-flex e-con e-child" data-id="814d9e5" data-element_type="container">
				<div class="elementor-element elementor-element-430f211 elementor-widget elementor-widget-image" data-id="430f211" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img loading="lazy" decoding="async" width="300" height="300" src="https://inero-software.com/wp-content/uploads/2024/05/E-1.png" class="attachment-large size-large wp-image-5737" alt="" srcset="https://inero-software.com/wp-content/uploads/2024/05/E-1.png 300w, https://inero-software.com/wp-content/uploads/2024/05/E-1-80x80.png 80w, https://inero-software.com/wp-content/uploads/2024/05/E-1-75x75.png 75w, https://inero-software.com/wp-content/uploads/2024/05/E-1-50x50.png 50w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="5737" data-permalink="https://inero-software.com/best-keycloak-practices/e-2/" data-orig-file="https://inero-software.com/wp-content/uploads/2024/05/E-1.png" data-orig-size="300,300" 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="E" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2024/05/E-1.png" data-large-file="https://inero-software.com/wp-content/uploads/2024/05/E-1.png" role="button" />													</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-bdf672f e-con-full e-flex e-con e-child" data-id="bdf672f" data-element_type="container">
				<div class="elementor-element elementor-element-bd03d48 elementor-widget elementor-widget-text-editor" data-id="bd03d48" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Aktualizacja i stałe monitorowanie środowiska Keycloak jest niezbędne do utrzymania wysokiej ochrony przed nowymi zagrożeniami i lukami w zabezpieczeniach. Aktualizacje Keycloak pojawiają się co kilka miesięcy, a informacje na ich temat można znaleźć na oficjalnej stronie <a href="https://www.keycloak.org/">projektu lub w dokumentacji Keycloak.</a></p><h6> </h6><p><strong>W tym kroku:</strong></p><p>&#8211; Aktualizacje: Regularnie aktualizuj Keycloak do najnowszych stabilnych wersji.</p><p>&#8211; Monitoring i logowanie: Użyj narzędzi do monitorowania, aby śledzić wszelkie niezwykłe zachowania i szybko reagować na potencjalne incydenty bezpieczeństwa. Skonfiguruj systemy logowania, aby zbierać kluczowe informacje o działaniu systemu. Korzystając na przykład z  Kubernetes, można efektywnie zarządzać i skalować narzędzia do monitorowania i logowania, takie jak Prometheus i ELK Stack. Kubernetes ułatwia wdrażanie i zarządzanie kontenerami z tymi narzędziami, automatyzując ich rozmieszczanie, skalowanie i naprawę, co jest kluczowe dla utrzymania ciągłości działania i bezpieczeństwa w rozproszonych systemach.</p><p>&#8211; Postaw na sprawdzonego Partnera: Jeśli wdrożenie najlepszych praktyk Keycloak wydaje Ci się na tym etapie pracochłonnym procesem, który mocno obciąży Twój zespół, skorzystaj z pomocy specjalistów w tej dziedzinie.</p>						</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-2a776a9 e-flex e-con-boxed e-con e-parent" data-id="2a776a9" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-e7caf2c elementor-widget elementor-widget-text-editor" data-id="e7caf2c" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><strong>Przeczytaj także:</strong></p><ul><li style="list-style-type: none;"><ul><li><a href="https://inero-software.com/pl/migracja-keycloak-porady-i-najlepsze-praktyki/">Migracja Keycloak: Porady i najlepsze praktyki</a></li><li><a href="https://inero-software.com/pl/keycloak-wskazowki-dotyczace-monitorowania-i-ochrony-przy-uzyciu-wbudowanych-narzedzi-konfiguracyjnych/">Keycloak: wskazówki dotyczące monitorowania i ochrony przy użyciu wbudowanych narzędzi konfiguracyjnych</a></li><li><a href="https://inero-software.com/pl/jak-tworzyc-i-stosowac-wlasne-motywy-w-keycloak/">Jak tworzyć i stosować własne motywy w Keycloak?</a></li></ul></li></ul>						</div>
				</div>
				<div class="elementor-element elementor-element-2a65d15 elementor-widget elementor-widget-text-editor" data-id="2a65d15" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><a href="https://inero-software.com/pl/keycloak/">Inero Software posiada bogate doświadczenie we wdrażaniu zaawansowanych rozwiązań w dziedzinie cyberbezpieczeństwa. Tworzymy kompleksowe systemy do zarządzania użytkownikami i ich rolami, które są dostosowane do złożonych infrastruktur IT i spełniają wysokie wymagania korporacyjne.</a> Nasz zespół, składający się z ekspertów w dziedzinie cyberbezpieczeństwa, implementuje zaawansowane schematy autoryzacji zgodnie z renomowanymi standardami bezpieczeństwa. Dzięki naszej wiedzy i doświadczeniu, zapewniamy skuteczną ochronę przed zagrożeniami i zgodność z korporacyjną polityką bezpieczeństwa.</p><p><a href="https://inero-software.com/pl/kontakt/">Skontaktuj się z nami, aby poznać możliwości wspólnego wdrożenia najlepszych praktyk Keycloak w Twojej organizacji.</a></p>						</div>
				</div>
					</div>
				</div>
				</div>
		<p>Artykuł <a href="https://inero-software.com/pl/najlepsze-praktyki-w-keycloak-zadbaj-o-bezpieczenstwo-w-5-krokach/">Najlepsze praktyki w Keycloak. Zadbaj o bezpieczeństwo w 5 krokach</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">5695</post-id>	</item>
		<item>
		<title>Rok pod znakiem upowszechnienia Sztucznej Inteligencji</title>
		<link>https://inero-software.com/pl/podsumowanie-2023/</link>
		
		<dc:creator><![CDATA[Marta Kuprasz]]></dc:creator>
		<pubDate>Thu, 21 Dec 2023 10:07:09 +0000</pubDate>
				<category><![CDATA[Blog_pl]]></category>
		<category><![CDATA[Firma]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[ChatGPT]]></category>
		<category><![CDATA[Copilot]]></category>
		<category><![CDATA[Gemini]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[model językowy]]></category>
		<category><![CDATA[OpenAI]]></category>
		<category><![CDATA[sztuczna inteligencja]]></category>
		<category><![CDATA[uczenie maszynowe]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=5343</guid>

					<description><![CDATA[<p>Koniec roku to czas podsumowań. W świecie IT wydarzyło się wiele interesujących rzeczy, dlatego w tym artykule postanowiliśmy skupić się na AI. Rozwój sztucznej inteligencji i jej obecność w mediach przyspieszyły do niespotykanej dotąd skali. Narzędzia oparte na Large Language Models (LLM) zostały spopularyzowane i szeroko udostępnione użytkownikom z różnych&#8230;</p>
<p>Artykuł <a href="https://inero-software.com/pl/podsumowanie-2023/">Rok pod znakiem upowszechnienia Sztucznej Inteligencji</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3></h3>
<p>Koniec roku to czas podsumowań. W świecie IT wydarzyło się wiele interesujących rzeczy, dlatego w tym artykule postanowiliśmy skupić się na AI. Rozwój sztucznej inteligencji i jej obecność w mediach przyspieszyły do niespotykanej dotąd skali. Narzędzia oparte na Large Language Models (LLM) zostały spopularyzowane i szeroko udostępnione użytkownikom z różnych branż, nie tylko technologicznych. Postanowiliśmy podsumować rok z Andrzejem Chybickim, CEO Inero Software. Oto jego lita 5 kluczowych wydarzeń mijającego roku.</p>
<p>&nbsp;</p>
<h4>Fakt 1: OpenAI &#8211; sztuczna inteligencja staje się powszechnie dostępna</h4>
<p>OpenAI odegrało ogromną rolę w popularyzacji sztucznej inteligencji w kontekście zrozumienia ludzkiego języka. W 2022 roku wydali ChatGPT, a w kolejnych miesiącach prezentowali nowe, ulepszone modele. Te postępy nie tylko poprawiły wydajność istniejących aplikacji, ale również otworzyły nowe możliwości dla AI w ochronie zdrowia, administracji, marketingu i wielu innych.</p>
<p>W 2023 roku do ChatGPT wprowadzono wiele ulepszeń, charakteryzujących się zaawansowanymi algorytmami uczenia dla lepszej dokładności i bardziej zniuansowanych konwersacji, spersonalizowanymi interakcjami z użytkownikami, rozszerzonym wsparciem językowym dla globalnej dostępności oraz szerszą integracją z aplikacjami. OpenAI podkreślało kwestie etyczne i redukcję uprzedzeń, włączyło uczenie się w czasie rzeczywistym dla aktualnych treści, poprawiło możliwości interakcji multimedialnych, a także wzmocniło niezawodność i solidność narzędzia. Dodatkowo, ChatGPT został dostosowany do konkretnych branż, zapewniając specjalistyczne funkcjonalności i wiedzę, co stanowi znaczący skok w technologii AI i aplikacjach skoncentrowanych na użytkowniku.</p>
<h5>Komentarz eksperta</h5>
<p>Open AI był pierwszym szeroko rozpoznawalnym dużym modelem językowym. Zapewne w najbliższych latach będziemy widzieli różne odmiany modeli LLM, przeznaczone do specyficznych zastosowań &#8211; de facto to już od paru miesięcy się dzieje. OpenAI, mimo bycia pionierem, przynajmniej w aspekcie rozpoznawalności, nie zawsze jest uważane za najlepszy i najbardziej uniwersalny model. Kierunek rozwoju to na pewno upowszechnienie na podobnej zasadzie jak kiedyś było z komputerami (tj. LLM jak PC) oraz specjalizacja, czyli wyspecjalizowane modele językowe, przeznaczone do konkretnych zastosowań, albo nawet podmiotów czy ludzi.</p>
<p>&nbsp;</p>
<h4>Fakt 2: GitHub Copilot – lider w implementacji AI/LLM</h4>
<p>Jedną z kluczowych ról w rozwoju sztucznej inteligencji odegrał Microsoft, współpracujący z OpenAI. W ciągu ostatniego roku Microsoft kontynuował doskonalenie swojej wizji Microsoft Copilot. Skupmy się na rozwiązaniu dla programistów: GitHub Copilot. W 2023 roku przeszedł on znaczące zmiany i ulepszenia. Oto kluczowe aktualizacje:</p>
<p>W 2023 roku GitHub Copilot wprowadził kilka znaczących ulepszeń, wzmacniając swoją rolę w rozwoju oprogramowania napędzanego przez AI. Chat GitHub Copilot,  jest teraz ogólnie dostępny i napędzany przez GPT-4 od OpenAI, oferuje bardziej precyzyjne sugestie i wyjaśnienia kodu, używając języka naturalnego, aby pomagać programistom w różnych językach. Ta funkcja jest zintegrowana zarówno z platformą GitHub, jak i jej aplikacją mobilną, wspierając kodowanie, żądania (pull requests) i dokumentację. Dodatkowo, wprowadzono GitHub Copilot Enterprise, dostosowując narzędzie do specyficznych potrzeb organizacyjnych, pomagając programistom szybko dostosować się do baz kodów swoich organizacji i usprawniając liczne zadania,  mając na celu zwiększenie produktywności i bezpieczeństwa na poziomie korporacyjnym. Został również uruchomiony Program Partnerski GitHub Copilot, integrując Copilot z różnymi narzędziami i usługami deweloperskimi, tworząc szeroki ekosystem, który wzmacnia możliwości programistów korzystających z AI. Na koniec GitHub ujawnił nowe funkcje zabezpieczeń oparte na AI w swoim pakiecie Advanced Security, w tym system zapobiegania lukom bezpieczeństwa w czasie rzeczywistym oraz posiada funkcje testowania bezpieczeństwa aplikacji, aby wykrywać i naprawiać luki w kodzie oraz tajemnice, dalej zabezpieczając proces tworzenia oprogramowania.</p>
<h5>Komentarz Eksperta</h5>
<p>Dzięki współpracy z OpenAI, Microsoft w 2023r. stał się liderem jeśli chodzi o wdrażanie rozwiązań AI/LLM na świecie. Strategia Microsoftu, w tym zakresie opiera się na stosowaniu modelu LLM do tego, aby wspierał (ale nie zastępował) możliwie dużą liczbę czynności i procesów wykorzystujących produkty Microsoft. Szczególne znaczenie miało także zapewnienie odpowiedniego poziomu SLA (uspójnionego z resztą usług Azure) oraz bezpieczeństwa danych. Do najistotniejszych zmian, oprócz wspominanego GitHub CoPilota (który ma za zadanie wspierać programistów w kodowaniu), można zaliczyć, wtyczki CoPilota dostępne w praktycznie wszystkich flagowych produktach tej firmy (Word, Excel, PowerPoint, Outlook).<br />
W Grudniu 2023, nastąpiła także prezentacja rozwiązania CoPilot Studio, które umożliwia tworzenie systemów IT low-code / no-code z istotnym wsparciem modelu OpenAI. To w efekcie umożliwia łatwe rozbudowanie już istniejących w Azure rozwiązań low-code, takich jak np. Azure Agents z botami konwersacyjnymi czy adapterami do baz danych wspieranymi przez AI. Mimo ze CoPilot Studio na chwilę obecną nie jest dostępny w docelowej formie, Microsft jasno komunikuje kierunki rozwoju oraz to jakie zalety, wynikające z jego użycia mogą doświadczyć zarówno deweloperzy, inżynierowie jak i użytkownicy. Z prezentacji przedstawicieli MS można wysnuć wniosek iż, celem Microsoftu jest obniżenie progu wejścia w zakresie tworzenia oraz wdrażania nowych, zaawansowanych rozwiązań AI, gdyż wykorzystanie platform low-code nie wymaga tak głębokiej wiedzy technicznej jak w przypadku tradycyjnego kodowania. Możemy się spodziewać powszechnego zainteresowania tymi rozwiązaniami, nie tylko największych firm wykorzystujących MS Azure w najbliższych latach. Obecnie w gronie ekspertów, pytanie brzmi nie “czy używać AI” ale jak ją wdrożyć aby nie zostać w tyle za konkurencją. Te podmioty, które w najbliższych latach stworzą spójną strategię w zakresie wchłaniania produktów opartych o AI do swoich procesów będą mogły znacząco skorzystać na rewolucji która już ma miejsce.</p>
<p><a href="https://docsquality.com/pl/"><img loading="lazy" decoding="async" data-attachment-id="5345" data-permalink="https://inero-software.com/pl/podsumowanie-2023/dq-pl/" data-orig-file="https://inero-software.com/wp-content/uploads/2023/12/DQ-PL.png" data-orig-size="700,100" 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="DQ PL" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2023/12/DQ-PL-300x43.png" data-large-file="https://inero-software.com/wp-content/uploads/2023/12/DQ-PL.png" tabindex="0" role="button" class="wp-image-5345 aligncenter" src="https://inero-software.com/wp-content/uploads/2023/12/DQ-PL-300x43.png" alt="" width="1063" height="152" srcset="https://inero-software.com/wp-content/uploads/2023/12/DQ-PL-300x43.png 300w, https://inero-software.com/wp-content/uploads/2023/12/DQ-PL.png 700w" sizes="(max-width: 1063px) 100vw, 1063px" /></a></p>
<h4>Fakt 3: Europejski akt ws. sztucznej inteligencji</h4>
<p>14 czerwca 2023 roku Parlament Europejski zajął pozycję negocjacyjną w sprawie sztucznej inteligencji. Priorytetem Parlamentu było zapewnienie, że systemy AI używane w UE są bezpieczne, przejrzyste, możliwe do śledzenia i niedyskryminujące. Parlament zaplanował również ustanowienie neutralnej technologicznie, jednolitej definicji AI, która mogłaby być stosowana do przyszłych systemów AI. Akt ustala różne zasady dla różnych poziomów ryzyka AI.</p>
<p>Niedopuszczalne ryzyko: Systemy AI o niedopuszczalnym ryzyku to systemy uznane za zagrożenie dla ludzi i będą zakazane. Należą do nich:</p>
<ul>
<li>Manipulacja poznawczo-zachowawcza osób lub konkretnych grup podatnych na wpływy: na przykład zabawki aktywowane głosem, które zachęcają dzieci do niebezpiecznych zachowań</li>
<li>Ocena społeczna: klasyfikacja osób na podstawie zachowania, statusu socjoekonomicznego lub cech osobistych</li>
<li>Systemy identyfikacji biometrycznej w czasie rzeczywistym i zdalnej, takie jak rozpoznawanie twarzy Niektóre</li>
<li>wyjątki mogą być dozwolone: Na przykład &#8222;post&#8221; systemy zdalnej identyfikacji biometrycznej, gdzie identyfikacja następuje po znacznym opóźnieniu, będą dozwolone do ścigania poważnych przestępstw, ale tylko po zatwierdzeniu przez sąd.</li>
</ul>
<p>Systemy AI niedopuszczalnego ryzyka</p>
<p>Systemy sztucznej inteligencji stwarzające niedopuszczalne ryzyko, czyli uważane za zagrożenie dla ludzi, zostaną zakazane. To m.in.:</p>
<ul>
<li>Poznawczo-behawioralna manipulacja ludźmi lub określonymi wrażliwymi grupami: na przykład zabawki aktywowane głosem, które zachęcają dzieci do niebezpiecznych zachowań.</li>
<li>Identyfikacja biometryczna i kategoryzacja osób fizycznych.</li>
<li>Scoring (klasyfikacja punktowa) obywateli: klasyfikacja ludzi na podstawie ich zachowań, statusu społeczno-ekonomicznego lub cech osobistych.</li>
<li>Systemy identyfikacji biometrycznej działające w czasie rzeczywistym i zdalnie, takie jak rozpoznawanie twarzy.</li>
</ul>
<p>Pewne wyjątki mogą być dopuszczalne do celów egzekwowania prawa. Systemy zdalnej identyfikacji biometrycznej działające w czasie rzeczywistym będą dozwolone w ograniczonej liczbie poważnych przypadków, natomiast systemy identyfikujące ze znacznym opóźnieniem będą mogły być używane do ścigania poważnych przestępstw, ale wyłącznie po zgodzie sądu.</p>
<p>Systemy AI wysokiego ryzyka</p>
<p>Systemy sztucznej inteligencji negatywnie wpływające na bezpieczeństwo lub prawa podstawowe będą uznane za systemy wysokiego ryzyka.</p>
<p>Zostaną podzielone na dwie kategorie:</p>
<p>1) Systemy sztucznej inteligencji stosowane w produktach objętych <a href="https://eur-lex.europa.eu/legal-content/PL/TXT/?uri=CELEX%3A02001L0095-20100101">unijnymi przepisami dotyczącymi bezpieczeństwa produktów</a>. To np. zabawki, lotnictwo, samochody, urządzenia medyczne i windy.</p>
<p>2) Systemy sztucznej inteligencji należące do ośmiu konkretnych obszarów, które będą musiały zostać zarejestrowane w unijnej bazie danych:</p>
<ul>
<li>Zarządzanie i eksploatacja infrastruktury krytycznej.</li>
<li>Edukacja i szkolenie zawodowe.</li>
<li>Zatrudnienie, zarządzanie pracownikami i dostęp do samozatrudnienia.</li>
<li>Dostęp do i korzystanie z podstawowych usług prywatnych oraz usług i korzyści publicznych.</li>
<li>Ściganie przestępstw.</li>
<li>Zarządzanie migracją, azylem i kontrolą granic.</li>
<li>Pomoc w interpretacji prawnej i stosowaniu prawa.</li>
</ul>
<p>Wszystkie systemy AI wysokiego ryzyka będą oceniane przed wprowadzeniem na rynek, a także przez cały cykl ich życia.</p>
<p>*źródło https://www.europarl.europa.eu/news/pl/headlines/society/20230601STO93804/akt-ws-sztucznej-inteligencji-pierwsze-przepisy-regulujace-ai</p>
<h5>Komentarz Eksperta:</h5>
<p>Zapewnienie bezpieczeństwa oraz poufności danych to z pewnością jedna najistotniejszych kwestii dotyczących wdrażania rozwiązań AI. Liczni eksperci wskazują, że mimo dobrych intencji komisji Europejskiej, proponowane rozwiązania przyczynią się do zmniejszenia konkurencyjności rodzimego rynku twórców AI, co w efekcie zwiększy dystans pomiędzy Europą a liderami w tej dziedzinie (tj. USA i Chinami). Osobiście podzielam te obawy, tutaj dobrym przykładem może być analogiczna sytuacja jaka miała miejsce ok. 15 lat temu, kiedy wdrażana była chmura obliczeniowa. Wtedy w EU też powstał akt regulujący zasady dostępu i poufności danych (GDPR) który do tej pory jest podstawą regulacyjną w tym zakresie. Jednocześnie, największe rozwiązania, z których większość krajów EU korzysta to rozwiązania wytworzone w USA, dla których priorytetem był swobodny rozwój technologii a dopiero w drugiej kolejności ramy prawne. Niestety, wiele wskazuje na to że podobnie może być jeśli chodzi o AI.</p>
<p><a href="https://goracyposilek.pl/"><img loading="lazy" decoding="async" data-attachment-id="5352" data-permalink="https://inero-software.com/pl/podsumowanie-2023/stopka-docsquality-700x100/" data-orig-file="https://inero-software.com/wp-content/uploads/2023/12/STOPKA-DOCSQUALITY-700x100-1.png" data-orig-size="700,100" 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="STOPKA DOCSQUALITY 700&amp;#215;100" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2023/12/STOPKA-DOCSQUALITY-700x100-1-300x43.png" data-large-file="https://inero-software.com/wp-content/uploads/2023/12/STOPKA-DOCSQUALITY-700x100-1.png" tabindex="0" role="button" class="wp-image-5352 aligncenter" src="https://inero-software.com/wp-content/uploads/2023/12/STOPKA-DOCSQUALITY-700x100-1-300x43.png" alt="" width="1063" height="152" srcset="https://inero-software.com/wp-content/uploads/2023/12/STOPKA-DOCSQUALITY-700x100-1-300x43.png 300w, https://inero-software.com/wp-content/uploads/2023/12/STOPKA-DOCSQUALITY-700x100-1.png 700w" sizes="(max-width: 1063px) 100vw, 1063px" /></a></p>
<h4>Fakt 4: Gemini: nowy model od Google</h4>
<p>Bez wątpienia premiera Gemini była najważniejszym wydarzeniem drugiej połowy 2023 roku, które odbiło się szerokim echem. Te nowe narzędzie jest wynikiem współpracy licznych zespołów Google. Zostało zbudowane od podstaw jako multimodalne, co oznacza, że ​​może generalizować i bezproblemowo rozumieć, łączyć różne rodzaje informacji, w tym tekst, kod, audio, obraz i wideo.</p>
<p>Gemini 1.0 zostało przeszkolone do rozpoznawania i rozumienia tekstu, obrazów, dźwięku jednocześnie, dzięki czemu lepiej rozumie złożone informacje i może odpowiadać na pytania, dotyczące skomplikowanych tematów. To sprawia, że ​​jest szczególnie dobre w wyjaśnianiu rozumowania w złożonych dziedzinach, takich jak matematyka i fizyka.</p>
<p>Podczas prezentacji dotyczącej wydania API Gemini dla deweloperów dużo czasu poświęcono AI Studio, narzędziu do tworzenia kodu. Drugim głównym tematem był Vertex AI, bardziej zaawansowany program, który umożliwia &#8222;zarówno szkolenie, jak i wdrażanie modeli uczenia maszynowego (ML) i aplikacji AI&#8221;. Google oferuje możliwość przeniesienia wstępnego projektu opracowanego w AI Studio do Vertex AI, aby dodać dodatkowe funkcje dostępne w ramach większej platformy Google Cloud.</p>
<h5>Komentarz Eksperta:</h5>
<p>Do wyścigu LLM oficjalnie dołączył Google. Najciekawszym aspektem tego co proponuje jest to, że ich model będzie działał w trzech wersjach Ultra (najbogatszej), Pro oraz Nano, przy czym ta ostatnia będzie przeznaczona do działania na telefonach komórkowych. Nie wiemy jeszcze czy Nano będzie w całości uruchamiany na urządzeniach klienckich (smartfonach) czy będzie jedynie swego rodzaju rozwinięciem Google Asisstant.<br />
Warto tez podkreślić, że Google, podobnie jak Microsoft, będzie oferował usługi Gemini jako elementy swoich flagowych produktów takich jak SpreadSheets, Google Docs oraz inne.</p>
<p>&nbsp;</p>
<h4>Fakt 5: Postępy w przetwarzaniu języka naturalnego (NLP)</h4>
<p>Rok 2023 był przyniósł znaczący postęp w dziedzinie przetwarzania języka naturalnego (NLP). Badacze i firmy na całym świecie poczynili znaczne kroki w poprawie dokładności i wszechstronności modeli NLP. Te postępy doprowadziły do bardziej zaawansowanego rozumienia i generowania ludzkiego języka przez maszyny, otwierając drogę do bardziej intuicyjnych i naturalnych interakcji człowieka z komputerem. W tym roku nastąpiło wdrożenie zaawansowanych technologii NLP w różnych aplikacjach, od chatbotów obsługi klienta po złożone narzędzia analizy danych, rewolucjonizując sposób, w jaki codziennie wchodzimy w interakcje z technologią. Postęp w technologii NLP nie tylko wzmocnił istniejące aplikacje, ale również otworzył nowe możliwości dla AI w takich dziedzinach jak edukacja, tworzenie treści i komunikacja wielojęzyczna.</p>
<h5>Komentarz Eksperta:</h5>
<p>Technologie AI coraz śmielej przełamują barierę rozumienia języka naturalnego. Tym samym powoli zaciera się granica pomiędzy danymi ustrukturyzowanymi jakie do tej pory używaliśmy w systemach IT a wiedzą ludzką. Wydaje się stworzenie AGI czyli maszyny dorównującej albo nawet przewyższającej przeciętnego człowieka w wielu aspektach jest już tylko kwestią czasu. Wyzwaniem dla świata nauki, biznesu i polityków będzie teraz pokierowanie rozwojem AI tak, aby służył on możliwie szeroko rozumianej ludzkości i nie powodował zagrożeń, których wielu (prawdopodobnie) słusznie się obawia.</p>
<p>&nbsp;</p>
<p>Ostatnie miesiące były bogate w interesujące premiery w dziedzinie sztucznej inteligencji. Prezentacja nowych dużych modeli językowych, otworzyła szereg możliwości ich zastosowania w codziennych zadaniach, zarówno w pracy programistycznej, jak i w kreatywnych zespołach. Europejskie władze starają się nadążyć za tymi zmianami i dostosować przepisy prawne do aktualnej sytuacji technologicznej. W nadchodzących miesiącach z pewnością zobaczymy więcej nowości, ponieważ wiodący gracze, tacy jak Google i Microsoft, rywalizują w tworzeniu rozwiązań wykorzystujących sztuczną inteligencję.</p>
<p><a href="https://inero-software.com/pl/kontakt/"><img loading="lazy" decoding="async" data-attachment-id="5349" data-permalink="https://inero-software.com/pl/podsumowanie-2023/baner-21-12-2023/" data-orig-file="https://inero-software.com/wp-content/uploads/2023/12/baner-21.12.2023.png" data-orig-size="1700,200" 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="baner 21.12.2023" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2023/12/baner-21.12.2023-300x35.png" data-large-file="https://inero-software.com/wp-content/uploads/2023/12/baner-21.12.2023-1030x121.png" tabindex="0" role="button" class="wp-image-5349 aligncenter" src="https://inero-software.com/wp-content/uploads/2023/12/baner-21.12.2023-300x35.png" alt="" width="1457" height="170" srcset="https://inero-software.com/wp-content/uploads/2023/12/baner-21.12.2023-300x35.png 300w, https://inero-software.com/wp-content/uploads/2023/12/baner-21.12.2023-1030x121.png 1030w, https://inero-software.com/wp-content/uploads/2023/12/baner-21.12.2023-768x90.png 768w, https://inero-software.com/wp-content/uploads/2023/12/baner-21.12.2023.png 1700w" sizes="(max-width: 1457px) 100vw, 1457px" /></a></p>
<p>Artykuł <a href="https://inero-software.com/pl/podsumowanie-2023/">Rok pod znakiem upowszechnienia Sztucznej Inteligencji</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">5343</post-id>	</item>
		<item>
		<title>Optymalizacja procesu gromadzenia danych dzięki algorytmom AI</title>
		<link>https://inero-software.com/pl/optymalizacja-procesu-gromadzenia-danych-dzieki-algorytmom-ai/</link>
		
		<dc:creator><![CDATA[Marta Kuprasz]]></dc:creator>
		<pubDate>Tue, 12 Sep 2023 08:48:59 +0000</pubDate>
				<category><![CDATA[Blog_pl]]></category>
		<category><![CDATA[Firma]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[biznes]]></category>
		<category><![CDATA[digitalizacja]]></category>
		<category><![CDATA[DocsQuality]]></category>
		<category><![CDATA[dokumentacja]]></category>
		<category><![CDATA[integracja]]></category>
		<category><![CDATA[jakość]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[modele]]></category>
		<category><![CDATA[NLP]]></category>
		<category><![CDATA[oprogramowanie]]></category>
		<category><![CDATA[sztuczna inteligencja]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=5052</guid>

					<description><![CDATA[<p>Optymalizacja procesu gromadzenia danych dzięki algorytmom AI W dobie postępu i licznych osiągnięć w dziedzinie przetwarzania języka naturalnego, widzimy coraz większe możliwości w zakresie analizy i wnioskowania, na podstawie danych zgromadzonych w nieustrukturyzowanych archiwach tekstowych i dokumentach. Koniecznym krokiem staje się więc, usprawnienie działań biznesowych i wdrożenie do nich narzędzi&#8230;</p>
<p>Artykuł <a href="https://inero-software.com/pl/optymalizacja-procesu-gromadzenia-danych-dzieki-algorytmom-ai/">Optymalizacja procesu gromadzenia danych dzięki algorytmom AI</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3></h3>
<h1><span style="color: #800080;">Optymalizacja procesu gromadzenia danych dzięki algorytmom AI</span></h1>
<p><span data-contrast="auto"><span class="TextRun SCXW189727610 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW189727610 BCX0"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" class=" wp-image-2768 alignleft" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" alt="" width="71" height="71" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w" sizes="(max-width: 71px) 100vw, 71px" /></span></span></span></span></span></p>
<p>W dobie postępu i licznych osiągnięć w dziedzinie przetwarzania języka naturalnego, widzimy coraz większe możliwości w zakresie analizy i wnioskowania, na podstawie danych zgromadzonych w nieustrukturyzowanych archiwach tekstowych i dokumentach. Koniecznym krokiem staje się więc, usprawnienie działań biznesowych i wdrożenie do nich narzędzi związanych z NLP i LLM. Digitalizacja procesów biznesowych sprawia, że wiele zadań przenosi się do świata wirtualnego, a kontrola i analiza dużej ilości zgromadzonych danych staje się poważnym wyzwaniem.</p>
<p><span id="more-5052"></span></p>
<h2>Kluczowy jest oczywiście czas</h2>
<p>W erze ciągłego pośpiechu, żmudne zadania analityczne, wymagające skupienia, dokładności i sumienności stają się prawdziwym ciężarem dla sprawnych i często rozproszonych zespołów. Nowoczesny biznes działa szybko. Jest wiele branż, w których dbałość o jakość dokumentacji odgrywa bardzo ważną rolę i znacząco wpływa na efektywność pracy w grupie. To między innymi sektor księgowy, kancelarie prawnicze, branża ubezpieczeniowa czy transportowa. Właśnie tą ostatnią posłużymy się jako przykładem. Firmy TSL codziennie realizują nawet po kilkadziesiąt frachtów. Każdy z nich generuje dużą ilość dokumentacji, jak faktury, umowy, polisy, WZ, karty pracy kierowców itp.. Dodając je do wewnętrznego obiegu administracyjnego, łatwo przeoczyć dokument nieczytelny (np. pośpiesznie zeskanowany), który na pewnym etapie zakłóci proces obiegu dokumentów i będzie wymagał korekty, przez co liczba zadań do wykonania znacznie się wydłuży. Może mieć to wpływ na zachwianie przepływów pieniężnych. Optymalizacja procesu gromadzenia danych we właściwej jakości staje się więc kluczowa.</p>
<p>&nbsp;</p>
<h2>Tradycyjne metody stają się mniej skuteczne</h2>
<p>Tradycyjne metody rozwoju oprogramowania stają się mniej skuteczne w przypadku dużych baz danych. Często opierają się wyłącznie na strukturalnie przetwarzanych danych i z góry określonych regułach, które mogą być nieodpowiednie do pracy z nieustrukturyzowanym tekstem i subtelnościami naturalnego pisma. Klasyczne podejście do tworzenia oprogramowania załamuje się w obliczu wielkoskalowych baz wiedzy. Pracując nad DocsQuality obniżamy barierę dostępu zespołów do narzędzi związanych z NLP (programowaniem neurolingwistycznym) i LLM (z ang. Large Language Model), aby mogły one w sposób prosty pobierać dane z archiwów nieustrukturyzowanych tekstów i dokumentów.</p>
<p>Zadaniem oprogramowania <a href="https://docsquality.com/">DocsQuality</a> jest ocena atrybutów dokumentu, przed jego zaimportowaniem do obiegu księgowego. Oceni on w czasie rzeczywistym, między innymi czytelność, wyrazistość i jakość pliku. Oprogramowanie od razu poinformuje o problemach związanych np. z załącznikiem do maila, dając sygnał, że już na tym etapie system nie powinien przyjąć tego dokumentu do obiegu.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="5054" data-permalink="https://inero-software.com/pl/optymalizacja-procesu-gromadzenia-danych-dzieki-algorytmom-ai/page1/" data-orig-file="https://inero-software.com/wp-content/uploads/2023/09/page1.png" data-orig-size="766,282" 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="page1" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2023/09/page1-300x110.png" data-large-file="https://inero-software.com/wp-content/uploads/2023/09/page1.png" tabindex="0" role="button" class=" wp-image-5054 aligncenter" src="https://inero-software.com/wp-content/uploads/2023/09/page1-300x110.png" alt="" width="352" height="129" srcset="https://inero-software.com/wp-content/uploads/2023/09/page1-300x110.png 300w, https://inero-software.com/wp-content/uploads/2023/09/page1.png 766w" sizes="(max-width: 352px) 100vw, 352px" /></p>
<h2>Modele NLP i LLM</h2>
<p>Połączenie i zastosowanie modeli NLP i LLM to nowa, innowacyjna metoda oceny jakości dokumentacji. Przy tworzeniu oprogramowania, NLP może być używane do wyodrębnienia tekstu ze zdjęć dokumentów. Jest to związane z techniką OCR (Optical Character Recognition) i pozwala przekształcić tekst z obrazu na tekst edytowalny, który można ocenić pod kątem jakości. Z kolei modele LLM, mogą przeczytać i zrozumieć tekst w dokumencie PDF, pozwalając na ocenę czytelności, gramatyki, składni oraz poprawności ortografii w dokumencie, a w kolejnym etapie analizę, wnioskowanie i rozumienie treści.</p>
<h2>DocsQuality</h2>
<p>Inżynierowie Inero Software wiąż rozwijają funkcjonalności, które oferuje DocsQuality. Tworzenie nowego oprogramowania  w tak dynamicznym środowisku, wymaga ciągłego udoskonalania i szukania optymalnych rozwiązań. Potencjał, który ma w sobie wdrożenie do niego narzędzi związanych z NLP i LLM, pozwoli w przyszłości na jeszcze dokładniejszą analizę dokumentacji.</p>
<p>Jeśli zainteresowało Cię oprogramowanie DocsQuality zapraszamy na stronę <a href="https://docsquality.com/">https://docsquality.com/</a> oraz do kontaktu mailowego <a href="mailto:hi@docsquality.com">hi@docs-quality.com</a>. Chętnie odpowiemy na wszystkie pytania i przedstawimy jego funkcjonalność i sposób wdrożenia. DocsQuality można z powodzeniem zintegrować z działającym systemem ERP.  Pozwoli to na rozszerzenie oferowanych funkcjonalności o skuteczny monitoring jakości dokumentów, pozwalający wyłapywać problematyczne pliki przed ich wdrożeniem do obiegu księgowego.</p>
<p>Artykuł <a href="https://inero-software.com/pl/optymalizacja-procesu-gromadzenia-danych-dzieki-algorytmom-ai/">Optymalizacja procesu gromadzenia danych dzięki algorytmom AI</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">5052</post-id>	</item>
		<item>
		<title>Budowa systemu rozpoznawania komend głosowych w języku polskim</title>
		<link>https://inero-software.com/pl/budowa-systemu-rozpoznawania-komend-glosowych/</link>
		
		<dc:creator><![CDATA[Andrzej Chybicki]]></dc:creator>
		<pubDate>Mon, 04 Apr 2022 10:08:58 +0000</pubDate>
				<category><![CDATA[Blog_pl]]></category>
		<category><![CDATA[Firma]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[deepspeech]]></category>
		<category><![CDATA[model językowy]]></category>
		<category><![CDATA[modele ASR]]></category>
		<category><![CDATA[rozpoznawanie komend głosowych]]></category>
		<category><![CDATA[sieci neuronowe]]></category>
		<category><![CDATA[system rozpoznawania głosu]]></category>
		<category><![CDATA[zbiory danych]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=4748</guid>

					<description><![CDATA[<p>System rozpoznawania głosu pełni rolę pomocnika, który wyszuka dla nas odpowiednie informacje, ułatwi zakupy w Internecie czy umożliwi obsługę różnych urządzeń bez wykorzystywania zewnętrznych przycisków czy regulacji.</p>
<p>Artykuł <a href="https://inero-software.com/pl/budowa-systemu-rozpoznawania-komend-glosowych/">Budowa systemu rozpoznawania komend głosowych w języku polskim</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>&nbsp;</p>
<div class="row">
<p><div class="col-sm-1"></div></p>
<p><div class="col-sm-10">
<p><img loading="lazy" decoding="async" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;">Budowa systemu rozpoznawania komend głosowych w języku polskim</span></h2>
<p>&nbsp;</p>
<p><span data-contrast="auto"><span class="TextRun SCXW189727610 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW189727610 BCX0"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" class=" wp-image-2768 alignleft" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" alt="" width="71" height="71" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w" sizes="(max-width: 71px) 100vw, 71px" /></span></span></span></span></span>System rozpoznawania komend głosowych został stworzony po to, aby usprawnić życie człowieka. Pełni on rolę pomocnika, który wyszuka dla nas odpowiednie informacje, ułatwi zakupy w Internecie czy umożliwi obsługę różnych urządzeń bez wykorzystywania zewnętrznych przycisków czy regulacji. Jednak stworzenie takiego systemu od podstaw może być trudnym wyzwaniem. W szczególności, jeśli chcemy zbudować go w języku polskim.</p>
<p>Istnieją ogólne modele sieci neuronowych, które dedykowane są rozpoznawaniu języka mówionego, czyli transkrypcji nagrania audio do tekstu. Wszystko jednak uwarunkowane jest od tego, ile danych posiadamy. Obecnie istnieje wiele zbiorów nagrań z języka angielskiego, które są odpowiednio przygotowane. Same dane jednak nie wystarczą. Muszą być do nich dołączone transkrypcje. Niestety w języku polskim nie mamy dużej ilości próbek głosowych razem z transkrypcjami. Na dzień dzisiejszy nie jesteśmy więc w stanie tak dobrze wyuczyć modeli, jak to jest robione w języku angielskim.</p>
<p>Jak na razie nie możemy wyuczyć asystentów wykorzystując modele open source’owe z zadowalającą skutecznością, jednak możemy sprawdzić co jesteśmy w stanie zbudować z ogólnie dostępnych danych. Celem naszej pracy jest stworzenie systemu rozpoznawania mowy, który działa w ograniczonym zbiorze komend.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;">Główne źródła zbierania danych dla systemu rozpoznawania komend głosowych</span></h2>
<p>&nbsp;</p>
<p><span data-contrast="auto"><span class="TextRun SCXW189727610 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW189727610 BCX0"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" class=" wp-image-2768 alignleft" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" alt="" width="71" height="71" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w" sizes="(max-width: 71px) 100vw, 71px" /></span></span></span></span></span>W ostatnich miesiącach pojawiły się zbiory danych: <strong><a href="https://commonvoice.mozilla.org/pl">Common Voice</a> i <a href="https://zasobynauki.pl/zasoby/korpus-nagran-probek-mowy-do-celow-budowy-modeli-akustycznych-dla-automatycznego-rozpoznawania-mowy,56411/">Zasoby Nauki</a></strong>, które są odpowiednio przygotowane pod modele ASR (Automatic Speech Recognition). Oznacza to, że nagrania dźwiękowe zawierają również transkrypcje. Są to tak naprawdę dwa największe zbiory danych, które można użyć. Do zbudowania własnego systemu wykorzystaliśmy więc je i złączyliśmy w jedno.</p>
<p><a href="https://commonvoice.mozilla.org/pl">Common Voice</a> jest ciekawym zbiorem danych. Jeżeli chcemy aby ich ilość była jeszcze większa, możemy kontrybuować w tym działaniu. Każdy z nas może wejść na stronę i nagrać swój głos, który zostanie zapisany, a następnie sprawdzony przez innych użytkowników. W ten sposób będziemy mogli przyczynić się do powiększenia ilości danych z języka polskiego, dzięki czemu budowanie systemów rozpoznawania komend głosowych będzie łatwiejsze.</p>
<p>W przyszłości istnieje możliwość, że YouTube udostępni do wykorzystania swoje nagrania audio razem z automatycznie generowanymi transkrypcjami. Jest to jednak rozwiązanie, które (być może) powstanie dopiero później. Dodatkowym źródłem danych mogą również być audiobooki, które zawierają transkrypcję książek i nagrania audio. W takim przypadku musimy jednak wykonać pracę przygotowania danych polegającą na pofragmentowaniu danych na krótsze nagrania. Dodatkowo zmienna intonacja lektora może wpływać na dokładność wyuczonych przez nas modeli.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;">Przygotowanie i ujednolicenie danych</span></h2>
<p>&nbsp;</p>
<p><span data-contrast="auto"><span class="TextRun SCXW189727610 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW189727610 BCX0"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" class=" wp-image-2768 alignleft" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" alt="" width="87" height="87" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w" sizes="(max-width: 87px) 100vw, 87px" /></span></span></span></span></span>Przede wszystkim musimy zapewnić minimalną i maksymalną długość nagrania. Muszą one znajdować się w określonych ramach czasowych. Zbyt długie nagrania mogą być problemem podczas uczenia modelu, natomiast krótkie nagrania mogą nie nieść ze sobą żadnej istotnej informacji. Musimy także zapewnić jednakową częstotliwość próbkowania sygnału. Jest to bardzo ważna kwestia przy uczeniu modeli opartych na dźwięk.</p>
<p>Fala dźwiękowa czystego tonu, rozchodząca się w przestrzeni, ma charakter sinusoidalny. Zmiana częstotliwości takiego dźwięku oznacza zmianę okresu sinusoidy, więc zmieniają się odległości między jej grzbietami. Jednak dźwięk w komputerze również musi być w jakiś sposób zaprezentowany. Sinusoida jest przebiegiem ciągłym, natomiast komputer zapisuje pojedyncze wartości. Częstotliwość próbkowania mówi nam o tym, ile razy na sekundę została zapisana wartość rejestrowanej fali dźwiękowej. Bardzo ważne jest to, żeby każdy dźwięk, który wchodzi do naszego modelu miał taką samą częstotliwość próbkowania.</p>
<p>Poprzez nieprawidłowe próbkowanie rekonstruowany dźwięk może być zniekształcony lub całkowicie niesłyszalny. Trzeba więc pamiętać o odpowiednim dobraniu częstotliwości próbkowania, aby zminimalizować rozmiar zapisywanych danych przy jednoczesnym braku utraty informacji. Zbyt rzadkie próbkowanie może spowodować pojawienie się zjawiska aliasingu, czyli nakładania się wyższych częstotliwości na niższe.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="4749" data-permalink="https://inero-software.com/pl/budowa-systemu-rozpoznawania-komend-glosowych/picture1/" data-orig-file="https://inero-software.com/wp-content/uploads/2022/03/Picture1.png" data-orig-size="605,454" 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="Picture1" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2022/03/Picture1-300x225.png" data-large-file="https://inero-software.com/wp-content/uploads/2022/03/Picture1.png" tabindex="0" role="button" class="aligncenter wp-image-4749 size-full" src="https://inero-software.com/wp-content/uploads/2022/03/Picture1.png" alt="częstotliwość próbkowania dźwięku" width="605" height="454" srcset="https://inero-software.com/wp-content/uploads/2022/03/Picture1.png 605w, https://inero-software.com/wp-content/uploads/2022/03/Picture1-300x225.png 300w, https://inero-software.com/wp-content/uploads/2022/03/Picture1-400x300.png 400w" sizes="(max-width: 605px) 100vw, 605px" /></p>
<p style="text-align: center;"><em>Źródło: <a href="https://pbc.gda.pl/dlibra/publication/109835/edition/98484/content">Reprezentacje danych dźwiękowych w kontekście metod uczenia maszynowego</a>, s. 134, Tymoteusz Cejrowski</em></p>
<p>Zapobieganie takiemu zjawisku polega na próbkowaniu sygnału z częstotliwością co najmniej dwa razy większą od najwyższej częstotliwości występującej w sygnale. Częstotliwość ta nazywana jest częstotliwością Nyqiusta. Dla przykładu, nagrania na płytach CD są zapisywane z częstotliwością próbkowania 44100 Hz. Natomiast maksymalna poprawnie zrekonstruowana częstotliwość będzie wynosiła 22050 Hz, co odpowiada górnemu zakresowi dźwięków słyszalnych przez człowieka.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;">Opis i uczenie modelu deepspeech w systemie rozpoznawania komend głosowych</span></h2>
<p>&nbsp;</p>
<p><span data-contrast="auto"><span class="TextRun SCXW189727610 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW189727610 BCX0"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" class=" wp-image-2768 alignleft" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" alt="" width="48" height="48" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w" sizes="(max-width: 48px) 100vw, 48px" /></span></span></span></span></span>Sieci neuronowe w pewien sposób przypominają układ nerwowy. Podstawowymi jednostkami w takich sieciach są neurony, które rozmieszczone są w warstwach. Jest to uproszczony model procesu przetwarzania informacji przez ludzki umysł.</p>
<p>Zazwyczaj sieć neuronowa składa się z trzech części. Pierwsza to warstwa wejściowa, która posiada jednostki reprezentujące zmienne wejściowe. Następna część to warstwy ukryte, które zawierają jednostki nieobserwowane i są ukrytym stanem sieci neuronowej. To właśnie od tych warstw w dużej mierze zależy efektywność modelu. Natomiast ostatnią częścią jest oczywiście warstwa wyjściowa, która posiada jednostki reprezentujące zmienne przewidywane. Wszystkie jednostki złączone są konkretnymi połączeniami o różnej wadze. Dane wejściowe znajdują się na pierwszej warstwie, przechodzą one przez kolejne, a ostatecznie z warstwy wyjściowej otrzymujemy wynik.</p>
<p>Sieć neuronowa uczy się przez porównywanie rekordów. Generuje ona predykcje dla konkretnych danych (nagrań audio) i wprowadza korekty wag, jeśli generują one niepoprawną predykcję (złą transkrypcję). Cały proces powtarzany jest wiele razy do uzyskania satysfakcjonującej dokładności. Wszystkie wagi na początku mają charakter losowy, a odpowiedzi wychodzące nie mają dużo sensu, z czasem natomiast sieć poprawia swoje predykcje. Dzieje się tak, ponieważ sieć dopasowuje się do danych w procesie uczenia wykorzystując algorytm wstecznej propagacji błędu.</p>
<p>Jednym z najprostszych modeli Sieci Neuronowych jest <strong>Perceptron wielowarstwowy</strong>. Składa się on z wielu warstw neuronowych. Neurony poprzedniej warstwy tworzą konkretny wektor, który jest podawany na wejście neuronów do warstwy następnej. Pojedynczy neuron w warstwie następnej ma liczbę wejść równej liczbie neuronów z warstwy poprzedniej +1. Jednak w ramach jednej warstwy, neurony między sobą nie mają żadnych połączeń. Taki typ modelu nazywany jest również modelem „Feed-Forward” i jest jedną z podstawowych architektur sieci neuronowych.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="4750" data-permalink="https://inero-software.com/pl/budowa-systemu-rozpoznawania-komend-glosowych/picture2/" data-orig-file="https://inero-software.com/wp-content/uploads/2022/03/Picture2.png" data-orig-size="361,461" 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="Picture2" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2022/03/Picture2-235x300.png" data-large-file="https://inero-software.com/wp-content/uploads/2022/03/Picture2.png" tabindex="0" role="button" class="wp-image-4750 size-full aligncenter" src="https://inero-software.com/wp-content/uploads/2022/03/Picture2.png" alt="model sieci feed-forward" width="361" height="461" srcset="https://inero-software.com/wp-content/uploads/2022/03/Picture2.png 361w, https://inero-software.com/wp-content/uploads/2022/03/Picture2-235x300.png 235w" sizes="(max-width: 361px) 100vw, 361px" /></p>
<p style="text-align: center;"><em>Rysunek przedstawiający model „Feed-Forward”</em></p>
<p><strong>Sieci rekurencyjne</strong> różnią się od sieci typu „Feed-Forward” w wielu aspektach. Jedną z głównych różnic jest sposób propagacji danych wejściowych na wyjście sieci. W najprostszym modelu wyjście sieci jest niczym innym kombinacją wag i wejścia modelu (pojedynczego rekordu). W przypadku sieci rekurencyjnych wyjście modelu zależy również od poprzedniego wyjścia. Wynik działania modelu dla rekordu X jest brany pod uwagę przy wyliczaniu wyjścia dla kolejnego rekordu Y.</p>
<p><strong>Konwolucyjna sieć neuronowa</strong> jest typem sieci najczęściej stosowanej do analizy obrazów wizualnych z uwagi na swój charakter procesowania wejścia. Podobnie jak człowiek, sieć ta nie analizuje obrazu piksel po pikselu ale wyłapuje wzorce obecne w danych wejściowych dzięki zastosowaniu tzw. Kerneli czyli filtrów. Każda warstwa w sieci neuronowej uczy się cech obrazu takich jak kontury czy nasycenie światłem. Złożenie tych informacji poprawia efektywność modelu.</p>
<p>Poza neuronowymi modelami rozpoznawania mowy, warto pochylić się nad open source’owymi systemami, które umożliwiają zbudowanie systemu rozpoznawania komend głosowych. Jednym z nich jest <a href="http://kaldi-asr.org"><strong>Kaldi</strong></a>, który został napisany w C++. Powstał on w 2009 roku, a jego głównymi cechami jest to, że system ten jest rozszerzalny i cały czas rozwijany. Udostępnia on m.in. narzędzia do pre-procesowania nagrań audio czy modeli opartych o Ukryte Modele Markowa (HMM). Sama społeczność udostępnia wiele innych modułów, które można wykorzystać do własnych zadań. Kaldi, poza modelami statystycznymi, obsługuje także głębokie sieci neuronowe. Pomimo tego, że jest napisany głównie w C++, to posiada on skrypty w jezyku Bash czy Python.</p>
<p>W naszej pracy skupiliśmy się jednak na konkretnym modelu ASR: <a href="https://github.com/SeanNaren/deepspeech.pytorch"><strong>deepspeech</strong></a><strong> 2</strong>. Jest to model, który wykorzystuje głębokie uczenie (ang. Deep Learning), składa się on z 3 warstw konwolucyjnych, 8 rekurencyjnych i jednej Fully-Connected. Deepspeech 2 można z powodzeniem wyuczyć na dowolnym języku, trzeba jednak pamiętać, że takie uczenie wymaga wydajnego systemu komputerowego/serwerowego wyposażonego w odpowiednią ilość kart graficznych lub akceleratorów obliczeń.</p>
<p>W przypadku popularnych języków takich jak angielski czy mandaryński można znaleźć przetrenowane modele gotowe do użycia. W naszym zadaniu wybraliśmy deepspeech 2 z implementacją w <a href="https://github.com/SeanNaren/deepspeech.pytorch">PyTorchu</a>, ponieważ jest on lekki, ma stosunkowo mało parametrów (wag do wyuczenia) i wybrana przez nas implementacja jest aktywnie utrzymywana. W tym modelu oprócz przygotowania odpowiednich częstotliwości próbkowania o których pisaliśmy wyżej, musieliśmy również przygotować odpowiednio dane pod sam model deepspeech. Wiązało się to z zapewnieniem odpowiedniej struktury katalogów.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;">Wnioskowanie z użyciem modeli ASR i dodatkowego modelu językowego</span></h2>
<p>&nbsp;</p>
<p><span data-contrast="auto"><span class="TextRun SCXW189727610 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW189727610 BCX0"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" class=" wp-image-2768 alignleft" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" alt="" width="101" height="101" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w" sizes="(max-width: 101px) 100vw, 101px" /></span></span></span></span></span>Wykorzystując deepspeech jesteśmy w stanie zastosować dodatkowy model językowy (model n-gramowy). Opiera się on na statystykach i pomaga w przewidywaniu kolejnego elementu sekwencji w wynikowej transkrypcji. Trzeba pamiętać, że zastosowanie takiego modelu wymaga zgromadzenia dużego zasobu danych statystycznych. N-gramy pomagają maszynom w zrozumieniu słowa w konkretnym kontekście. Dzięki temu mogą one lepiej zrozumieć jego przeznaczenie.</p>
<p>Jeśli chcemy utworzyć taki model, zaczynamy od zliczania wystąpień sekwencji o ustalonej długości <em>n</em> w istniejących już zasobach językowych. Analizuje się więc całe teksty i zlicza się pojedyncze wystąpienia (1-gram), dwójki (2-gramy) i trójki (3-gramy). Możemy również uzyskać model 4-gramowy, jednak tutaj potrzebne są już ogromne zbiory danych, przez co dla języka polskiego jest to niezwykle trudne do zrealizowania. W kolejnym kroku zamienia się liczbę wystąpień na prawdopodobieństwo poprzez normalizację. W ten sposób zyskujemy predykcję kolejnego elementu na podstawie dotychczasowych sekwencji. Warto zaznaczyć, że im więcej przeanalizowanego tekstu, tym wyższa jakość modelu. Dane te są głównie wykorzystywane w aplikacjach przetwarzania języka naturalnego (NLP). Model n-gramowy dla języka polskiego można znaleźć <a href="https://zasobynauki.pl/zasoby/model-jezykowy-dla-jezyka-polskiego,55644/">tutaj</a>.</p>
<p>Użycie modelu n-gramowego na etapie wnioskowania pozwala na skorygowanie wyjścia sieci neuronowej (transkrypcji modelu deepspeech 2) zgodnie z regułami zawartymi w modelu n-gramowym.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;">Działanie w ograniczonym zbiorze komend</span></h2>
<p>&nbsp;</p>
<p><span data-contrast="auto"><span class="TextRun SCXW189727610 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW189727610 BCX0"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" class=" wp-image-2768 alignleft" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" alt="" width="101" height="101" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w" sizes="(max-width: 101px) 100vw, 101px" /></span></span></span></span></span>Niestety budowane modele nie mogą być wystarczająco dokładne ze względu na małą ilość danych w języku polskim. W naszym przypadku możemy jednak działać w ograniczonym zbiorze komend. Oznacza to, że rozpoznawaniu podlega konkretna ilość komend głosowych. Nasze zadanie polegało na tym, żeby dopasować odpowiednią komendę ze zbioru z tym co dostarczył nam model. Ważne jest tutaj określenie najwyższego podobieństwa pomiędzy komendą, a tym co zwrócił nam model.</p>
<p>Do tego zadania wykorzystaliśmy miarę zwaną <strong>odległością Levenshteina</strong>, która wskazuje na podobieństwo pomiędzy transkrypcją, a daną komendą. Polega ona na zliczaniu pozycji lub liter, które się nie zgadzają. Przykładowo, odległość Levenshteina pomiędzy wyrazami:</p>
<ul>
<li>drzwi</li>
<li>drzwi</li>
</ul>
<p>Jest zerowa. Są to wyrazy identyczne, więc nie potrzeba tutaj żadnych działań.</p>
<p>Natomiast odległość Levenshteina pomiędzy wyrazami:</p>
<ul>
<li>kołacz</li>
<li>połać</li>
</ul>
<p>wynosi 3, ponieważ potrzeba co najmniej 3 działań: zamiany <strong>k</strong> na <strong>p</strong>, zamiany <strong>c</strong> na <strong>ć</strong> i usunięcia litery <strong>z</strong>.</p>
<p>Tam, gdzie jest najmniej podstawień, posiadamy największe prawdopodobieństwo, że komendy są takie same.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;">Podsumowanie</span></h2>
<p>&nbsp;</p>
<p><span data-contrast="auto"><span class="TextRun SCXW189727610 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW189727610 BCX0"><span class="TextRun SCXW21457896 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW21457896 BCX0"><img loading="lazy" decoding="async" class=" wp-image-2768 alignleft" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png" alt="" width="101" height="101" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-08-50x50.png 50w" sizes="(max-width: 101px) 100vw, 101px" /></span></span></span></span></span>Celem systemów rozpoznawania głosu jest zapewnienie łatwości w komunikacji między urządzeniem a człowiekiem. Podejście wykorzystujące narzędzia Open-Source w zadaniu uczenia modeli ASR na razie ogranicza się do rozpoznawania ograniczonego zbioru komend. Budowanie takiego sytemu w oparciu o dane w języku polskim jest trudnym zadaniem, ze względu na małą ilość danych dźwiękowych połączonych z transkrypcjami. Zastosowanie miary podobieństwa pomiędzy transkrypcją a zbiorem komend pozwala na zbudowanie użytecznego systemu ASR działającego w trybie offline. Biorąc pod uwagę aktualne trendy w wykorzystaniu inteligentnych urządzeń oraz możliwości techniczne, warto obserwować dalszy rozwój tych systemów i pojawiające się nowe zbiory danych.</p>
<p><a href="https://inero-software.com/pl/"><span style="color: #800080;"><strong>Inero Software</strong></span></a> oferuje wiedzę i doświadczenie w zakresie skutecznego wykorzystywania najnowocześniejszych technologii i danych do kształtowania korporacyjnych produktów cyfrowych przyszłości.</p>
<p>W sekcji <a href="https://inero-software.com/pl/category/firma/"><span style="color: #800080;"><strong>BLOG</strong></span></a> można znaleźć inne artykuły dotyczące nowoczesnych rozwiązań dla przedsiębiorstw.</p>
<p><strong><span style="color: #000000;">Redakcja: Tymoteusz Cejrowski, Software Developer.</span></strong></p>
<p></p></div><br />
</p></div>
<p>Artykuł <a href="https://inero-software.com/pl/budowa-systemu-rozpoznawania-komend-glosowych/">Budowa systemu rozpoznawania komend głosowych w języku polskim</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">4748</post-id>	</item>
		<item>
		<title>Tożsamość cyfrowa w dobie pracy zdalnej</title>
		<link>https://inero-software.com/pl/zarzadzanie-tozsamoscia-i-dostepem/</link>
		
		<dc:creator><![CDATA[Andrzej Chybicki]]></dc:creator>
		<pubDate>Mon, 21 Mar 2022 11:02:59 +0000</pubDate>
				<category><![CDATA[Blog_pl]]></category>
		<category><![CDATA[Firma]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[cyberbezpieczeństwo]]></category>
		<category><![CDATA[cyfrowa tożsamość]]></category>
		<category><![CDATA[IAM]]></category>
		<category><![CDATA[SSO]]></category>
		<category><![CDATA[zarządzanie dostępem i tożsamością]]></category>
		<guid isPermaLink="false">https://inero-software.com/?p=4340</guid>

					<description><![CDATA[<p>Cyfrowa tożsamość to zbiór indywidualnych loginów i haseł, z których korzystamy w różnych systemach. Jeżeli posiadamy ich wiele, to dysponujemy dużą ilością danych logowania. W dalszej perspektywie może być to uciążliwe, szczególnie w sytuacjach, kiedy zapominamy jednego z haseł, przez co później musimy je odzyskiwać.</p>
<p>Artykuł <a href="https://inero-software.com/pl/zarzadzanie-tozsamoscia-i-dostepem/">Tożsamość cyfrowa w dobie pracy zdalnej</a> pochodzi z serwisu <a href="https://inero-software.com/pl">Inero Software - Rozwiązania IT i Konsulting</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="row">
<p><div class="col-sm-1"></div></p>
<p><div class="col-sm-10">
<p><img loading="lazy" decoding="async" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="91" height="91" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 91px) 100vw, 91px" /></p>
<p>&nbsp;</p>
<h2 aria-level="1"><span style="color: #800080;">Cyfrowa tożsamość w dobie pracy zdalnej i pandemii </span></h2>
<p>&nbsp;</p>
<p><span data-contrast="auto"><span class="TextRun SCXW252288117 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW252288117 BCX0"><img loading="lazy" decoding="async" class=" wp-image-2873 alignleft" src="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" alt="" width="99" height="99" srcset="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-50x50.png 50w" sizes="(max-width: 99px) 100vw, 99px" /></span></span>Okres pracy zdalnej i postępująca cyfryzacja usług przyczyniła się do popularyzacji narzędzi i systematów informatycznych w naszej codziennej pracy. Obok powszechnie znanych narzędzi takich jak systemy Office, Outlook, komunikatory, narzędzia telekonferencje typu Microsoft Teams czy Google Meets, zdalnie pracujemy także z coraz bardziej wyspecjalizowanymi systemami takimi jak systemy obiegu dokumentacji, fakturowania czy inne. Aby uwzględnić wymagania prawne i zapewnić bezpieczeństwo danych w tych systemach, dostęp do nich musi być odpowiednio zabezpieczony i skonfigurowany. Z jednej strony, ważne jest aby użytkownicy mogli z nich korzystać możliwie w łatwy sposób, np. bez konieczności wpisywania loginu hasła za każdym razem kiedy chcą uzyskać do nich dostęp. Z drugiej, istotnym jest także, aby osoby postronne, dostawcy nie mogli bez odpowiedniej autoryzacji uzyskać dostępu do zasobów zawartych w tych systemach, zgodnie z polityką bezpieczeństwa naszej organizacji. </span></p>
<p><span data-contrast="auto">W dużych zespołach korporacyjnych, których pracownicy są fizyczne rozmieszczeni w różnych lokalizacjach, miastach a nawet krajach, kwestia ta ma jeszcze większe znaczenie. Mimo że osoby zatrudnione w takich zespołach pracują z różnych miejsc to wiele zasobów musi być ze sobą zintegrowanych, a ujednolicony dostęp do nich usprawnia pracę i ułatwia komunikację oraz zarządzanie.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> Prostym przykładem takich zintegrowanych rozwiązań mogą być systemy obiegu dokumentów i fakturowania</span><span data-contrast="auto">. Dla przykładu, pracownik posiadający dostęp do systemu zarządzania umowami obsługuje również system fakturowy. Dla bardziej złożonych procesów biznesowych, logowanie się do różnych systemów działających w obrębie korporacji może być jednak uciążliwe. Każdy z pracowników musi pamiętać swoje unikatowe login i hasło, które w ogólności powinny być różne dla każdego z wykorzystywanych systemów. Jednocześnie, każdy pracownik logując się do dowolnego z tych systemów, chce mieć jedną tożsamość, ponieważ tak naprawdę zawsze reprezentuje tą samą, fizyczną osobę i w każdym z tych systemów podlega konkretnej grupie autoryzacji i uprawnień wynikających z przypisanego mu stanowiska, obowiązków służbowych oraz innych. W takich sytuacjach właśnie stosuje się systemy zarządzania tożsamością </span><b><span data-contrast="auto">(ang. <a href="https://inero-software.com/pl/rozwiazania-logistyczne/cyberbezpieczenstwo/">IAM &#8211; Identity and Access Management</a>)</span></b><span data-contrast="auto">.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span style="color: #800080;"><strong>Czym jest cyfrowa tożsamość &#8211; digital identity?<br />
</strong></span><span data-contrast="auto">Cyfrowa tożsamość to zbiór indywidualnych loginów i haseł, z których korzystamy w różnych systemach. Jeżeli posiadamy ich wiele, to dysponujemy dużą ilością danych logowania. W dłuższej perspektywie może być to uciążliwe, szczególnie w sytuacjach, kiedy użytkownik zapomni jednego z haseł, przez co później musi je odzyskiwać. W takim przypadku jest to trudne do zarządzania zarówno ze strony użytkowników, jak i administratorów.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="auto">IAM to narzędzie, które zapewnia skuteczne zarządzanie dostępem do zasobów informacyjnych. Za pomocą takiego rozwiązania można z wykorzystaniem jednego mechanizmu obsługiwać konta zarówno istniejących jak i nowo utworzonych. System zarządzania tożsamością pomaga również w administrowaniu danymi użytkowników, którzy odeszli z organizacji lub zmienili się ich status. W ten sposób można bez problemu zmienić lub wygasić ich uprawnienia.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="auto">Jednym z częściej pojawiających się pojęć podczas tworzenia IAM jest pojęcie </span><a href="https://inero-software.com/pl/rozwiazania-logistyczne/cyberbezpieczenstwo/"><b><span data-contrast="auto">SSO (Single-Sign-On)</span></b></a><span data-contrast="auto">. SSO to koncepcja budowania rozwiązań autoryzacji, która pozwala nam logować się do wielu systemów przy wykorzystaniu z jednego wspólnego punktu logowania. Charakteryzuje się on również tym że że posiada jeden wspólny moduł zarządzania użytkownikami, ich uprawnieniami oraz autoryzacją dla wszystkich systemów. Pozwalają one na zarządzanie naszą cyfrową tożsamością w zunifikowany sposób. W efekcie, użytkownik posiada jeden login i hasło do wielu systemów, za pomocą których może się autentyfikować.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p>&nbsp;</p>
<h6><span style="color: #800080;">Wpływ COVID-19 na zintegrowane zarządzenie autoryzacją </span></h6>
<p>&nbsp;</p>
<p><span data-contrast="auto"><span class="TextRun SCXW252288117 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW252288117 BCX0"><img loading="lazy" decoding="async" class=" wp-image-2873 alignleft" src="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png" alt="" width="75" height="75" srcset="https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08.png 208w, https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/10/inero-glify-08-50x50.png 50w" sizes="(max-width: 75px) 100vw, 75px" /></span></span>W ostatnich dwóch latach systemy klasy IAM są coraz częściej stosowane z uwagi na konieczność pracy zdalnej lub hybrydowej. IAM ma ogromne znaczenie w zabezpieczeniu zasobów cyfrowych. Ważne jest aby wiedzieć iż narzędzia te zapewniają nie tylko podstawowe uwierzytelnianie i autoryzację w celu zabezpieczenia danych pracownika, ale także dają możliwość autoryzacji wieloetapowej (ang. Mutli-factor authorization &#8211; MFA) np. z wykorzystaniem SMSów, mailów, komunikatorów, powiadomień zdalnych czy innych. </span></p>
<p><span data-contrast="auto"> </span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><img loading="lazy" decoding="async" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="91" height="91" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 91px) 100vw, 91px" /></p>
<p>&nbsp;</p>
<h2 aria-level="2"><span style="color: #800080;">Kiedy ważne jest zarządzanie tożsamością i dostępem? </span></h2>
<p>&nbsp;</p>
<p><span data-contrast="auto">Zarządzanie cyfrową tożsamością odbywa się tak naprawdę zawsze gdy korzystamy ze swojego unikalnego loginu. Prostym przykładem użycia cyfrowej tożsamości może być integracja konta Google z przeglądarką Chrome. W przypadku korporacyjnych rozwiązań nasza tożsamość musi być dokładniej uwierzytelniana, dlatego za każdym razem gdy logujemy się do np. poczty przez przeglądarkę internetową musimy podawać swój login i hasło. </span></p>
<blockquote>
<p style="text-align: center;"><span style="color: #800080;"><i>„Według raportu Verizon Data Breach Investigations, ponad 70% pracowników wielokrotnie używa tych samych haseł w pracy. Raport stwierdza, że 81% naruszeń związanych z hakowaniem wykorzystywało skradzione lub słabe hasła”</i> </span></p>
</blockquote>
<p><span data-contrast="auto">Podstawową zasadą tworzenia systemów IAM jest to, żeby nie tworzyć nowych rozwiązań w zakresie bezpieczeństwa, </span><b><span data-contrast="auto">ale przede wszystkim wykorzystywać standardy i sprawdzone metody zabezpieczeń. </span></b><span data-contrast="auto">Narzędzia, które pozwalają nam na wykorzystanie standardowych podejść do zapewnienia bezpieczeństwa i wygody użytkowania w zakresie autoryzacji dla różnych scenariuszy połączeń rozmaitych systemów, to między innymi:</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Azure B2C</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">OAuth2</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">Open ID Connect</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">Identity Server</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">Active Directory</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">KeyCloak</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">Amazon Cognito</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto">Google IAM</span><span data-ccp-props="{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></li>
</ul>
<p><span data-contrast="auto">Wspominając o zarządzaniu cyfrową tożsamością konieczne jest wskazanie różnic pomiędzy autoryzacją a autentyfikacją. Autoryzacja daje możliwość dostępu do potwierdzania czy dana osoba jest dopuszczona do skorzystania z jakiegoś zasobu (np. modułu, funkcji lub bazy danych), a autentyfikacja oznacza potwierdzanie tożsamości.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> <img loading="lazy" decoding="async" data-attachment-id="4265" data-permalink="https://inero-software.com/pl/rozwiazania/cyberbezpieczenstwo/rysunek-2-pl/" data-orig-file="https://inero-software.com/wp-content/uploads/2022/02/rysunek-2-PL.png" data-orig-size="1920,1020" 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="rysunek 2 PL" data-image-description="" data-image-caption="" data-medium-file="https://inero-software.com/wp-content/uploads/2022/02/rysunek-2-PL-300x159.png" data-large-file="https://inero-software.com/wp-content/uploads/2022/02/rysunek-2-PL-1030x547.png" tabindex="0" role="button" class="aligncenter wp-image-4265" src="https://inero-software.com/wp-content/uploads/2022/02/rysunek-2-PL-300x159.png" alt="rysunek obrazujący jednorazowe logowanie" width="1023" height="542" srcset="https://inero-software.com/wp-content/uploads/2022/02/rysunek-2-PL-300x159.png 300w, https://inero-software.com/wp-content/uploads/2022/02/rysunek-2-PL-1030x547.png 1030w, https://inero-software.com/wp-content/uploads/2022/02/rysunek-2-PL-768x408.png 768w, https://inero-software.com/wp-content/uploads/2022/02/rysunek-2-PL-1536x816.png 1536w, https://inero-software.com/wp-content/uploads/2022/02/rysunek-2-PL-565x300.png 565w, https://inero-software.com/wp-content/uploads/2022/02/rysunek-2-PL.png 1920w" sizes="(max-width: 1023px) 100vw, 1023px" /></span></p>
<p><img loading="lazy" decoding="async" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="91" height="91" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 91px) 100vw, 91px" /></p>
<p>&nbsp;</p>
<h2 aria-level="2"><span style="color: #800080;">5 zalet zarządzania tożsamością i dostępem </span></h2>
<p>&nbsp;</p>
<h6><i><span data-contrast="none">Zwiększenie <a href="https://inero-software.com/pl/rozwiazania-logistyczne/cyberbezpieczenstwo/">cyber bezpieczeństwa</a> </span></i><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></h6>
<h6></h6>
<h6><i style="font-family: 'Open Sans'; font-size: 12px; font-weight: bold; text-transform: uppercase;"><span data-contrast="none"><img loading="lazy" decoding="async" class=" wp-image-1574 alignleft" src="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" alt="" width="63" height="63" srcset="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png 208w, https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02-80x80.png 80w" sizes="(max-width: 63px) 100vw, 63px" /></span></i></h6>
<p><span data-contrast="auto">Dzięki rozwiązaniom IAM, firmy mogą wdrażać wspólne i zunifikowane polityki zabezpieczeń we wszystkich połączonych systemach. Korzystając z takich narzędzi administratorzy mogą bez problemu usuwać niepożądane uprawnienia dostępu w razie potrzeby, poprzez zapewnienie jednego spójnego systemu kont i haseł.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<h6><i><span data-contrast="none">Mniejsze koszty operacyjne w zakresie zarządzania infrastrukturą i bezpieczeństwem IT</span></i><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></h6>
<h6><i><span data-contrast="none"><img loading="lazy" decoding="async" class=" wp-image-1574 alignleft" src="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" alt="" width="63" height="63" srcset="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png 208w, https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02-80x80.png 80w" sizes="(max-width: 63px) 100vw, 63px" /></span></i></h6>
<p><span data-contrast="auto">Wykorzystując zintegrowane systemy przedsiębiorstwa mogą obniżyć koszty w zakresie zarządzania infrastrukturą informatyczną minimalizując czas potrzebny na rozwiązywanie problemów związanych z kontem użytkownika.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<h6><i><span data-contrast="none">Wygodniejsze korzystanie z systemów przez użytkowników i administratorów</span></i><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></h6>
<h6><i><span data-contrast="none"><img loading="lazy" decoding="async" class=" wp-image-1574 alignleft" src="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" alt="" width="63" height="63" srcset="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png 208w, https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02-80x80.png 80w" sizes="(max-width: 63px) 100vw, 63px" /></span></i></h6>
<p><span data-contrast="auto">Poprzez wdrożenie narzędzi IAM administratorzy są w stanie stworzyć unikalną tożsamość dla każdego użytkownika w prosty i szybko sposób. Nie muszą oni więc zarządzać dziesiątkami kont dla różnych aplikacji lub innych zasobów. Użytkownicy posiadają dostęp do systemów niezależnie od ich lokalizacji, czasu lub aktualnie wykorzystanego urządzenia.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<h6><i><span data-contrast="none">Możliwość łatwiejszego dostosowania się do regulacji polityk bezpieczeństwa korporacyjnego</span></i><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></h6>
<h6><i><span data-contrast="none"><img loading="lazy" decoding="async" class=" wp-image-1574 alignleft" src="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" alt="" width="63" height="63" srcset="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png 208w, https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02-80x80.png 80w" sizes="(max-width: 63px) 100vw, 63px" /></span></i></h6>
<p><span data-contrast="auto">Korporacje zamawiając albo tworząc <a href="https://inero-software.com/logistics-solutions/">oprogramowanie</a> wdrażają polityki bezpieczeństwa mówiące o tym co może, a co nie może być dopuszczalne w konkretnych systemach informatycznych. Jeżeli mamy do czynienia z jednym systemem logowania kont, to o wiele łatwiej jest zarządzać taką polityką.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<h6><i><span data-contrast="none">Łatwiejsze odzyskiwanie i zarządzanie hasłami</span></i><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></h6>
<h6><i><span data-contrast="none"><img loading="lazy" decoding="async" class=" wp-image-1574 alignleft" src="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png" alt="" width="63" height="63" srcset="https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02.png 208w, https://inero-software.com/wp-content/uploads/2018/11/inero-glify-02-80x80.png 80w" sizes="(max-width: 63px) 100vw, 63px" /></span></i></h6>
<p><span data-contrast="auto">Dzięki rozwiązaniom IAM, problemy związane z bezpieczeństwem haseł zostaną zminimalizowane. Pomagają one administratorom wdrażać lepsze praktyki dotyczące zarządzania zabezpieczeniami. Mowa tutaj o częstych aktualizacjach danych logowania czy silniejszym uwierzytelnianiu.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class=" wp-image-2770 aligncenter" src="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png" alt="" width="91" height="91" srcset="https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10.png 208w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-80x80.png 80w, https://inero-software.com/wp-content/uploads/2019/05/inero-glify-10-50x50.png 50w" sizes="(max-width: 91px) 100vw, 91px" /></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;" data-contrast="none">Zarządzanie tożsamością i dostępem</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}"> &#8211; <span style="color: #800080;">podsumowanie</span></span></h2>
<p>&nbsp;</p>
<p><span data-contrast="auto">Jeżeli przedsiębiorstwa chcą zapewnić swoim pracownikom bezpieczeństwo i zwiększyć ich produktywność, powinny zdecydować się na zintegrowane zarządzanie tożsamością i dostępem. Po zalogowaniu się do głównego systemu użytkownicy nie muszą martwić się posiadaniem odpowiedniego hasła do innych struktur. Pracownik otrzymuje więc dostęp do idealnego zestawu narzędzi, dzięki którym może zwiększyć swoją produktywność.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<blockquote>
<p style="text-align: center;"><span style="color: #800080;"><i>„72% organizacji przekłada bezpieczeństwo nad wydajność operacyjną (52%) i zapobieganie naruszeniom (47%) co jest kluczowym czynnikiem rozwoju narzędzi IAM.”</i> </span></p>
<p><em>~Według <a href="https://www.cybersecurity-insiders.com/portfolio/2020-identity-and-access-management-report-download/">2020 IAM Report, Cybersecurity Insiders</a></em></p></blockquote>
<p><span data-contrast="auto"><a href="https://inero-software.com/logistics-solutions/cyber-security/">Cyfrowe zarządzanie tożsamością</a> to proces, który może być wdrażany etapami. Nie trzeba integrować wszystkich systemów w zakresie autoryzacji za jednym razem. Przedsiębiorstwo może zdecydować się na wprowadzanie pojedynczych systemów i z czasem dołączać kolejne struktury. </span></p>
<p><a href="https://inero-software.com/pl/"><span style="color: #800080;"><strong>Inero Software</strong></span></a> oferuje wiedzę i doświadczenie w zakresie skutecznego wykorzystywania najnowocześniejszych technologii i danych do kształtowania korporacyjnych produktów cyfrowych przyszłości w zakresie IAM, sztucznej inteligencji czy rozwiązań webowych.</p>
<p>W sekcji <a href="https://inero-software.com/pl/category/firma/"><span style="color: #800080;"><strong>BLOG</strong></span></a> można znaleźć inne artykuły dotyczące nowoczesnych rozwiązań dla przedsiębiorstw.</p>
<p><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}"> </span></p>
<p></p></div><br />
</p></div>
<p>Artykuł <a href="https://inero-software.com/pl/zarzadzanie-tozsamoscia-i-dostepem/">Tożsamość cyfrowa w dobie pracy zdalnej</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">4340</post-id>	</item>
	</channel>
</rss>
