<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hu">
	<id>https://vik.wiki/index.php?action=history&amp;feed=atom&amp;title=Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Security</id>
	<title>Szoftverfejlesztés J2EE platformon - Security - Laptörténet</title>
	<link rel="self" type="application/atom+xml" href="https://vik.wiki/index.php?action=history&amp;feed=atom&amp;title=Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Security"/>
	<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Security&amp;action=history"/>
	<updated>2026-05-16T17:58:48Z</updated>
	<subtitle>Az oldal laptörténete a wikiben</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Security&amp;diff=182595&amp;oldid=prev</id>
		<title>Szikszayl, 2014. augusztus 21., 20:23-n</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Security&amp;diff=182595&amp;oldid=prev"/>
		<updated>2014-08-21T20:23:12Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;hu&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Régebbi változat&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;A lap 2014. augusztus 21., 22:23-kori változata&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;1. sor:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;1. sor:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{GlobalTemplate|Valaszthato|J2EESecurity}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Gondolom, elég sokan vagyunk, akik úgy képzelünk el egy webes bejelentkezést, hogy a felhasználónak ki kell töltenie valamilyen űrlapot a nevével és a jelszavával, a háttérben erre a program kiszedi a megfelelő sort az adatbázisból, és ennek alapján eldönti, hogy jó-e a jelszó, avagy rossz, admin-e a felhasználó vagy sem, stb. Ez a folyamat az autentikáció. Ezután a felhasználó meg akar nézni valamilyen lapot a biztonságos területről. A rendszernek döntenie kell, hogy beengedje-e, avagy sem. Ez az autorizáció. Aki csinált már valamilyen webes bejelentkező felülettel rendelkező cuccot PHP-ban, az megszokta, hogy mindezt saját magának kell leprogramoznia. Erre természetesen Java EE-ben is van lehetőség (a PHP-hoz képest kisebb csinosításokkal, úgymint filterek beiktatása, entity beanek használata sima query-k helyett, stb.), szükség azonban nincs rá. Tudvalevő, hogy a Java EE biztonsági szolgáltatása a programozó kezébe ad egy JAAS-alapú (Java Authentication &amp;amp; Authorization Service) módszert az autentikáció és az autorizáció (a továbbiakban AA) kezelésére. Hogy miért jó ez?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Gondolom, elég sokan vagyunk, akik úgy képzelünk el egy webes&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;bejelentkezést, hogy a felhasználónak ki kell töltenie valamilyen űrlapot a&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;nevével és a jelszavával, a háttérben erre a program kiszedi a megfelelő&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;sort az adatbázisból, és ennek alapján eldönti, hogy jó-e a jelszó, avagy&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;rossz, admin-e a felhasználó vagy sem, stb. Ez a folyamat az autentikáció.&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Ezután a felhasználó meg akar nézni valamilyen lapot a biztonságos&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;területről. A rendszernek döntenie kell, hogy beengedje-e, avagy sem. Ez az&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;autorizáció. Aki csinált már valamilyen webes bejelentkező felülettel&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;rendelkező cuccot PHP-ban, az megszokta, hogy mindezt saját magának kell&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;leprogramoznia. Erre természetesen Java EE-ben is van lehetőség (a PHP-hoz&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;képest kisebb csinosításokkal, úgymint filterek beiktatása, entity beanek&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;használata sima query-k helyett, stb.), szükség azonban nincs rá. Tudvalevő,&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;hogy a Java EE biztonsági szolgáltatása a programozó kezébe ad egy&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;JAAS-alapú (Java Authentication &amp;amp; Authorization Service) módszert az&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;autentikáció és az autorizáció (a továbbiakban AA) kezelésére. Hogy miért jó ez?&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Valakik már megírták helyetted a kódot. Valószínű, hogy az évek során sikerült egy csomó rést kiküszöbölni (lásd pl. SQL-injektálhatóság), úgyhogy feltehetően jobban jársz egy ilyennel.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Valakik már megírták helyetted a kódot. Valószínű, hogy az évek során sikerült egy csomó rést kiküszöbölni (lásd pl. SQL-injektálhatóság), úgyhogy feltehetően jobban jársz egy ilyennel.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Ha deklaratívan kezeled az AA-t, akkor a jogosultságok nincsenek bedrótozva a programba: egy-két telepítésleíró-bejegyzés beiktatásával vagy elvételével bővíthető vagy kurtítható egy-egy szerepkör felhasználói tábora. További hatalmas előny, hogy az AA adatokat tartalmazó erőforrás jellegétől (Egy fájl? Egy adatbázis? Egy...?) is független maradhatsz.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Ha deklaratívan kezeled az AA-t, akkor a jogosultságok nincsenek bedrótozva a programba: egy-két telepítésleíró-bejegyzés beiktatásával vagy elvételével bővíthető vagy kurtítható egy-egy szerepkör felhasználói tábora. További hatalmas előny, hogy az AA adatokat tartalmazó erőforrás jellegétől (Egy fájl? Egy adatbázis? Egy...?) is független maradhatsz.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A Java EE biztonsági szolgáltatásában ún. realmek (ejtsd &quot;relm&quot;, nem pedig&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A Java EE biztonsági szolgáltatásában ún. realmek (ejtsd &quot;relm&quot;, nem pedig &quot;rílm&quot;) használatosak egy alkalmazás felhasználói táborának azonosítására. Autentikálják a felhasználót, aki egy biztonsági kontextust kap, benne a felhasználói azonosítójával és a csoportazonosítójával (esetleg több &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ilyenis &lt;/ins&gt;lehet bizonyos realmeknél). Az autorizáció ezután a konténer feladata, a telepítésleírók alapján.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&quot;rílm&quot;) használatosak egy alkalmazás felhasználói táborának azonosítására.&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Autentikálják a felhasználót, aki egy biztonsági kontextust kap, benne a&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;felhasználói azonosítójával és a csoportazonosítójával (esetleg több &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ilyen&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is &lt;/del&gt;lehet bizonyos realmeknél). Az autorizáció ezután a konténer feladata, a&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;telepítésleírók alapján.&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A továbbiak kizárólag Netbeans 5.5-re, és a hozzácsomagolt AS-re&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A továbbiak kizárólag Netbeans 5.5-re, és a hozzácsomagolt AS-re&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key my_wiki:diff:1.41:old-157019:rev-182595:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Szikszayl</name></author>
	</entry>
	<entry>
		<id>https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Security&amp;diff=157019&amp;oldid=prev</id>
		<title>David14: David14 átnevezte a(z) Java EE Security lapot a következő névre: Szoftverfejlesztés J2EE platformon - Security</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Security&amp;diff=157019&amp;oldid=prev"/>
		<updated>2013-02-06T00:11:41Z</updated>

		<summary type="html">&lt;p&gt;David14 átnevezte a(z) &lt;a href=&quot;/index.php?title=Java_EE_Security&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Java EE Security (a lap nem létezik)&quot;&gt;Java EE Security&lt;/a&gt; lapot a következő névre: &lt;a href=&quot;/Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Security&quot; title=&quot;Szoftverfejlesztés J2EE platformon - Security&quot;&gt;Szoftverfejlesztés J2EE platformon - Security&lt;/a&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;hu&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Régebbi változat&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;A lap 2013. február 6., 02:11-kori változata&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;hu&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Nincs különbség)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key my_wiki:diff:1.41:old-145745:rev-157019 --&gt;
&lt;/table&gt;</summary>
		<author><name>David14</name></author>
	</entry>
	<entry>
		<id>https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Security&amp;diff=145745&amp;oldid=prev</id>
		<title>Unknown user: Új oldal, tartalma: „{{GlobalTemplate|Valaszthato|J2EESecurity}}   Gondolom, elég sokan vagyunk, akik úgy képzelünk el egy webes bejelentkezést, hogy a felhasználónak ki kell tölten…”</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Security&amp;diff=145745&amp;oldid=prev"/>
		<updated>2012-10-22T11:40:57Z</updated>

		<summary type="html">&lt;p&gt;Új oldal, tartalma: „{{GlobalTemplate|Valaszthato|J2EESecurity}}   Gondolom, elég sokan vagyunk, akik úgy képzelünk el egy webes bejelentkezést, hogy a felhasználónak ki kell tölten…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Új lap&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{GlobalTemplate|Valaszthato|J2EESecurity}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gondolom, elég sokan vagyunk, akik úgy képzelünk el egy webes&lt;br /&gt;
bejelentkezést, hogy a felhasználónak ki kell töltenie valamilyen űrlapot a&lt;br /&gt;
nevével és a jelszavával, a háttérben erre a program kiszedi a megfelelő&lt;br /&gt;
sort az adatbázisból, és ennek alapján eldönti, hogy jó-e a jelszó, avagy&lt;br /&gt;
rossz, admin-e a felhasználó vagy sem, stb. Ez a folyamat az autentikáció.&lt;br /&gt;
Ezután a felhasználó meg akar nézni valamilyen lapot a biztonságos&lt;br /&gt;
területről. A rendszernek döntenie kell, hogy beengedje-e, avagy sem. Ez az&lt;br /&gt;
autorizáció. Aki csinált már valamilyen webes bejelentkező felülettel&lt;br /&gt;
rendelkező cuccot PHP-ban, az megszokta, hogy mindezt saját magának kell&lt;br /&gt;
leprogramoznia. Erre természetesen Java EE-ben is van lehetőség (a PHP-hoz&lt;br /&gt;
képest kisebb csinosításokkal, úgymint filterek beiktatása, entity beanek&lt;br /&gt;
használata sima query-k helyett, stb.), szükség azonban nincs rá. Tudvalevő,&lt;br /&gt;
hogy a Java EE biztonsági szolgáltatása a programozó kezébe ad egy&lt;br /&gt;
JAAS-alapú (Java Authentication &amp;amp; Authorization Service) módszert az&lt;br /&gt;
autentikáció és az autorizáció (a továbbiakban AA) kezelésére. Hogy miért jó ez?&lt;br /&gt;
* Valakik már megírták helyetted a kódot. Valószínű, hogy az évek során sikerült egy csomó rést kiküszöbölni (lásd pl. SQL-injektálhatóság), úgyhogy feltehetően jobban jársz egy ilyennel.&lt;br /&gt;
* Ha deklaratívan kezeled az AA-t, akkor a jogosultságok nincsenek bedrótozva a programba: egy-két telepítésleíró-bejegyzés beiktatásával vagy elvételével bővíthető vagy kurtítható egy-egy szerepkör felhasználói tábora. További hatalmas előny, hogy az AA adatokat tartalmazó erőforrás jellegétől (Egy fájl? Egy adatbázis? Egy...?) is független maradhatsz.&lt;br /&gt;
&lt;br /&gt;
A Java EE biztonsági szolgáltatásában ún. realmek (ejtsd &amp;quot;relm&amp;quot;, nem pedig&lt;br /&gt;
&amp;quot;rílm&amp;quot;) használatosak egy alkalmazás felhasználói táborának azonosítására.&lt;br /&gt;
Autentikálják a felhasználót, aki egy biztonsági kontextust kap, benne a&lt;br /&gt;
felhasználói azonosítójával és a csoportazonosítójával (esetleg több ilyen&lt;br /&gt;
is lehet bizonyos realmeknél). Az autorizáció ezután a konténer feladata, a&lt;br /&gt;
telepítésleírók alapján.&lt;br /&gt;
&lt;br /&gt;
A továbbiak kizárólag Netbeans 5.5-re, és a hozzácsomagolt AS-re&lt;br /&gt;
vonatkoznak. (Ezt használom, ezt ismerem...) Az életszerűség kedvéért hagyom&lt;br /&gt;
a fenébe a konfigfájlalapú (file realm) azonosítást, helyette az&lt;br /&gt;
adatbázis-alapú azonosítást (JDBCRealm) fogom bemutatni.&lt;br /&gt;
&lt;br /&gt;
Mik egy biztonságos program fejlesztésének lépései, ha Java EE Securityben&lt;br /&gt;
gondolkozunk?&lt;br /&gt;
* Adatbázistáblák létrehozása a felhasználónév, a jelszó és a csoportazonosító tárolására&lt;br /&gt;
* Adatok beírása az adatbázisba ;)&lt;br /&gt;
* Alkalmazásszerver elindítása, Admin console megnyitása, bejelentkezés (alapértelmezés: admin/adminadmin)&lt;br /&gt;
* Ámulás-bámulás: a Configuration -&amp;gt; Security (a baloldali menüben a kis nyílra kattints!) -&amp;gt; Realms alatt csak olyasmik látszanak, mint a file realm (bármilyen komolyabb célra használhatatlan) és a certificate realm (ennek a valós életben lehet értelme, egy házi feladatban már kevésbé). Hozzá kell adni a listához a JDBCRealmet. A New... gombot megnyomva egy űrlapot kapunk. Az adatok: &lt;br /&gt;
** Realm: [[JDBCRealm]]&lt;br /&gt;
** Class name: com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm&lt;br /&gt;
** Hozzá kell továbbá adni egy vagon propertyt az Add Property gombbal. Ezek a következők: &lt;br /&gt;
*** datasource-jndi (az adatbázis kapcsolat JNDI neve)&lt;br /&gt;
*** user-table (a felhasználói neveket és jelszavakat tároló tábla)&lt;br /&gt;
*** user-name-column (a felhasználói név oszlopa)&lt;br /&gt;
*** password-column (a jelszó oszlopa)&lt;br /&gt;
*** group-table (a csoport táblája, mely akár azonos is lehet a user-table-ben megadottal)&lt;br /&gt;
*** group-name-column (a csoportnév oszlopa)&lt;br /&gt;
*** jaas-context (kötelezően jdbcRealm, pontosan ilyen betűnagyságokkal)&lt;br /&gt;
*** digest-algorithm (a jelszóhoz tartozó digest előállításának algoritmusa - ha ilyet nem akarsz, ez a property none legyen).&lt;br /&gt;
** Ok.&lt;br /&gt;
* A group-table tábla group-name-column mezejéből kivett csoportnevet össze kell rendelni a konténer által azonosítható biztonsági szerepkörökkel (role). Ennek módja a telepítésleíró (sun-application.xml) megbuherálása. Először is meg kell adni neki a fasza kis GUI-n, hogy a [[JDBCRealmet]] használja, majd Edit as XML. Be kell szúrni a kívánt	mennyiségű összerendelést a következőképp: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;security-role-mapping&amp;gt;&lt;br /&gt;
&amp;lt;role-name&amp;gt;client&amp;lt;/role-name&amp;gt;&lt;br /&gt;
&amp;lt;group-name&amp;gt;client&amp;lt;/group-name&amp;gt;&lt;br /&gt;
&amp;lt;/security-role-mapping&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Asszem nemigen szükséges magyarázat, hogy hova mit írj (a csoport és a&lt;br /&gt;
szerepkör neve lehet azonos, de ez korántsem kötelező, valamint egy szerepkörhöz több csoport is lehet rendelve).&lt;br /&gt;
* Pl. web réteges AA beállításához security constrainteket kell beállítani a telepítésleíróban (EJB rétegben is lehet használni deklaratív jellegű AA-t, de ott annotációk szükségesek. Ennek sajnos nem néztem utána, majd valaki más... :) ). Nyisd ki a web.xml-t, és menj a Security fülre! Az autentikáció típusa legyen Form, a realm neve JDBCRealm, a Form Login Page és a Form Error Page értelemszerűen kitöltendő egy-egy magunk készítette lap címével. Most a Security Roles rész jön. Ide kell beszúrni az alkalmazásban használni kívánt biztonsági szerekörök nevét. (Nem árt, ha a csoport-szerepkör összerendelésnél mindkét fél létezik...) Végül a Security Constraints részben definiálni kell a jogosultsági korlátokat a megfelelő URL mintákra. Fontos, hogy az Enable Authentication Constraint be legyen ikszelve, és hozzá legyen adva az Edit gombbal az engedélyezni kívánt szerepkör. Az sem árt továbbá, ha a Form Login Page nem a védett területen belül van. A bejelentkeztetést végző űrlap szerkezete kötött:&lt;br /&gt;
** a form tag action paramétere mindenképp j_security_check&lt;br /&gt;
** a felhasználónév egy text típusú, j_username nevű szövegmező&lt;br /&gt;
** a jelszó egy password típusú, j_password nevű szövegmező&lt;br /&gt;
&lt;br /&gt;
No, nagyjából ennyi: ha ezt mind végigcsináltad, kaptál egy működő AA-t a&lt;br /&gt;
web rétegben, egyetlen sor Java kód beírása nélkül. Ugye, hogy nem rossz? :)&lt;br /&gt;
&lt;br /&gt;
Amit még érdemes tudni:&lt;br /&gt;
* A form HTML-tagnek &amp;#039;&amp;#039;ne&amp;#039;&amp;#039; legyen ilyen attribútuma: enctype=&amp;quot;multipart/form-data&amp;quot;.&lt;br /&gt;
* A login form csak akkor fog feljönni, ha authentikációhoz kötött oldalt szeretnél elérni. Direkt meghívni nem szerencsés (nem fog működni). Ha jól adod meg a felhasználónevet és a jelszót, akkor az elküld gomb után megkapod a kért oldalt.&lt;br /&gt;
&lt;br /&gt;
Források:&lt;br /&gt;
* Imre Gábor diái :)&lt;br /&gt;
* http://blogs.sun.com/swchan/entry/jdbcrealm_in_glassfish&lt;br /&gt;
* http://www.developinjava.com/readarticle.php?article_id=5&lt;br /&gt;
	&lt;br /&gt;
==Programmatic Login==&lt;br /&gt;
&lt;br /&gt;
Ha minden oldalra szeretnél kirakni egy egyedi login form-ot, akkor a _ProgrammaticLogin_-ra lesz szükséged. &lt;br /&gt;
A [[ProgrammaticLogin]] osztály használatához szükség lesz a Glassfish lib könyvtárában lévő lévő appserver-rt.jar fájlra. NetBeansben: a pojectben a Libraries mappára jobb klikk, Add JAR/Folder...&lt;br /&gt;
&lt;br /&gt;
Ezzel megoldható az is, hogy egy JSF-es űrlaphoz tartozó backing bean kezelje a bejelentkezést, illetve a kijelentkezést is. Hátránya, hogy appszerverfüggő. Íme egy Glassfish-es megoldás vázlata:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import com.sun.appserv.security.ProgrammaticLogin;&lt;br /&gt;
...&lt;br /&gt;
ProgrammaticLogin programmaticLogin;&lt;br /&gt;
programmaticLogin = new ProgrammaticLogin();&lt;br /&gt;
....&lt;br /&gt;
programmaticLogin.login(username, password, &amp;quot;JDBCRealm&amp;quot;, getRequest(), getResponse(), true);&lt;br /&gt;
...&lt;br /&gt;
programmaticLogin.logout(getRequest(), getResponse());&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A HttpServletRequest és HttpServletResponse objektumokat így tudod megszerezni backing beanből:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
		  FacesContext ctx = FacesContext.getCurrentInstance();&lt;br /&gt;
		  ExternalContext ectx = ctx.getExternalContext();&lt;br /&gt;
		  this.req = (HttpServletRequest) ectx.getRequest();&lt;br /&gt;
		  this.resp = (HttpServletResponse) ectx.getResponse();	 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezekre azért van szükség, mert sikeres authentikáció után ide kerül be a session azonosító. Persze ha csak meghívsz egy metódust a jogosultságokkal, és rögtön ki is lépsz (ugyanabban a backing bean metódusban), akkor elég lehet a HttpServlet* paraméterek nélkül &amp;#039;&amp;#039;login()&amp;#039;&amp;#039; és &amp;#039;&amp;#039;logout()&amp;#039;&amp;#039; metódus is (bár ezt nem próbáltam).&lt;br /&gt;
&lt;br /&gt;
Egy példa login form:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
		 &amp;lt;f:view&amp;gt;&lt;br /&gt;
				&amp;lt;h:form&amp;gt;&lt;br /&gt;
		  &amp;lt;table border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
					 &amp;lt;tr&amp;gt;&lt;br /&gt;
						  &amp;lt;th colspan=&amp;quot;2&amp;quot;&amp;gt;Login form&amp;lt;/th&amp;gt;&lt;br /&gt;
					 &amp;lt;/tr&amp;gt;&lt;br /&gt;
					 &amp;lt;tr&amp;gt;&lt;br /&gt;
						  &amp;lt;th&amp;gt;&amp;lt;h:outputLabel for=&amp;quot;UsernameField&amp;quot; value=&amp;quot;Username:&amp;quot; /&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
						  &amp;lt;td&amp;gt;&lt;br /&gt;
								&amp;lt;h:inputText id=&amp;quot;UsernameField&amp;quot; &lt;br /&gt;
									 value=&amp;quot;#{LoginManagedBean.username}&amp;quot; required=&amp;quot;true&amp;quot; &lt;br /&gt;
									 /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
						  &amp;lt;/td&amp;gt;&lt;br /&gt;
						  &amp;lt;td&amp;gt;&amp;lt;h:message for=&amp;quot;UsernameField&amp;quot; /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
					 &amp;lt;/tr&amp;gt;&lt;br /&gt;
					 &amp;lt;tr&amp;gt;&lt;br /&gt;
						  &amp;lt;th&amp;gt;&amp;lt;h:outputLabel for=&amp;quot;PasswordField&amp;quot; value=&amp;quot;Password:&amp;quot; /&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
						  &amp;lt;td&amp;gt;&lt;br /&gt;
								&amp;lt;h:inputText id=&amp;quot;PasswordField&amp;quot; &lt;br /&gt;
									 value=&amp;quot;#{LoginManagedBean.password}&amp;quot; &lt;br /&gt;
									 required=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
						  &amp;lt;/td&amp;gt;&lt;br /&gt;
						  &amp;lt;td&amp;gt;&amp;lt;h:message for=&amp;quot;PasswordField&amp;quot; /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
					 &amp;lt;/tr&amp;gt;&lt;br /&gt;
					 &amp;lt;tr&amp;gt;&lt;br /&gt;
						  &amp;lt;td&amp;gt;&lt;br /&gt;
								&amp;lt;h:commandButton type=&amp;quot;submit&amp;quot; value=&amp;quot;Login&amp;quot;&lt;br /&gt;
												 action=&amp;quot;#{LoginManagedBean.login}&amp;quot; /&amp;gt;&lt;br /&gt;
						  &amp;lt;/td&amp;gt;&lt;br /&gt;
						  &amp;lt;td colspan=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
								&amp;lt;h:messages globalOnly=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
						  &amp;lt;/td&amp;gt;&lt;br /&gt;
					 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		  &amp;lt;/table&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
				&amp;lt;/h:form&amp;gt;&lt;br /&gt;
		  &amp;lt;/f:view&amp;gt;					 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==EJB-security==&lt;br /&gt;
&lt;br /&gt;
Ha JAAS-el authentikálod magad, akkor azt a webréteg továbbterjeszti az EJB-réter felé is. Session bean-ben így tudod lekérdezni a bejelentkezett felhasználó nevét:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	 @Resource&lt;br /&gt;
	 SessionContext sessionContext;&lt;br /&gt;
	 ...&lt;br /&gt;
	 String username = sessionContext.getCallerPrincipal().getName();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[FoldesAdam|Földe]] - 2006.12.26.&lt;br /&gt;
-- [[KarakoMiklos|palacsint]] - 2007.11.12.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Valaszthato]]&lt;/div&gt;</summary>
		<author><name>Unknown user</name></author>
	</entry>
</feed>