A | B | C | D | E | F | G | H | CH | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Java Authentication and Authorization Service (JAAS) představuje javovskou verzi standardního Pluggable Authentication Module (PAM) frameworku.[1]
Je využíván pro dvě činnosti:
- Autentizace (Ověření pravosti) – ověření identity uživatele. Provádí se nejčastěji přijetím uživatelova jména a hesla. Ověření je bezpečné a důvěryhodné.
- Autorizace – určení, zda ověřený uživatel má práva k přístupu k určité části systému
Základní popis
JAAS je standardní součástí Javy od JavaTM 2 SDK, Standard Edition (J2SDK), v 1.4. Ve verzi 1.3 byla součástí volitelnou. Byl přidán z důvodu nízké flexibility u původního systému zabezpečení, zejména pro provozování serverových aplikací. Jako součást Java 2 security se zabývá poskytováním povolení a bezpečnostní kontrolou těchto povolení. Toto vše je prováděno mimo kód aplikace, takže není nutné původní aplikaci upravovat. Samotná aplikace si není vědoma, že je na ní prováděna autentizace a autorizace.
Obsah frameworku[1]1" class="mw-editsection-visualeditor">editovat | editovat zdroj
Základní třídyeditovat | editovat zdroj
- Subject – zastupuje zdroj požadavku (uživatele), může jím být jak osoba, tak služba. Po autentizaci je k němu připojeno až několik objektů Principal a Credential.
- Principal – zastupuje identitu uživatele. Vždy se jedná jen o jednu identitu, ale Subject jich může obsahovat několik. Může jí být například zaměstnanecké číslo, rodné číslo, jméno… Dále zastupuje role uživatele v systému. Subject opět může mít více rolí.
- Credential – Může jím být cokoliv, co dokáže prokázat identitu uživatele (jméno a heslo, otisk prstu…) Není součástí knihovny JAAS, neboť jakákoliv třída může být Credential. Měl by implementovat metody Refreshable Archivováno 12. 10. 2008 na Wayback Machine. a Destroyable Archivováno 7. 5. 2009 na Wayback Machine.. Credential může být veřejný nebo soukromý. Pod veřejným si lze představit jméno a pod soukromým heslo.
Třídy a Rozhraní autentifikaceeditovat | editovat zdroj
- LoginContext – obsahuje základní metody pro autentizaci Subjectu
- LoginModule – rozhraní pro přidání vlastní autentizační technologie
- CallbackHandler – rozhraní pro komunikaci uživatele s LoginModule a naopak
- Callback – rozhraní pro přenos různých autentizačních informací.
Třídy autorizaceeditovat | editovat zdroj
- Policy – abstraktní třída reprezentující tzv. bezpečnostní politiku. Stanovuje povolení přidělená kódu spuštěného z určitého zdroje (URL) nebo určitou identitou (osobou) Principal.
- AuthPermission – třída pro základní povolení v JAAS. Využívá předvolené názvy pro určitá povolení.
- PrivateCredentialPermission – třída pro ochranu soukromých Credential.
Průběh autentifikace a autorizace[1]editovat | editovat zdroj
Autentifikaceeditovat | editovat zdroj
- Aplikace vytvoří instanci LoginContext
- LoginContext pomocí dat z konfigurace načte všechny LoginModule přidružené k aplikaci
- Aplikace zavolá login metodu na LoginContext
- Login metoda zavolá všechny LoginModule. Ty se pokusí o autentifikaci subjektu. Pokud se to podaří, jsou objektu Subject přiřazeny relevantní Principal a Credential. Tímto je subjekt autentizovaný.
- LoginContext předá status o autentizaci aplikaci
- Při úspěšné autentizaci dostane aplikace objekt Subject od LoginContext
Autorizaceeditovat | editovat zdroj
- Uživatel musí být autentizován
- Subject, který je výsledkem autentizace, musí mít k sobě přiřazený kontext řízení přístupu (access control context)
- Principal položky musí být konfigurovány v Policy
Příkladyeditovat | editovat zdroj
Jednoduchý příklad, kde se zjišťuje povolení k zápisu do souboru cheese.txt[2]editovat | editovat zdroj
Aplikace:
package chp02; import java.io.File; import java.io.IOException; public class Chp02aMain { public static void main(String args) throws IOException { File file = new File("build/conf/cheese.txt"); try { file.canWrite(); System.out.println("Můžeme zapsat do cheese.txt"); } catch (SecurityException e) { System.out.println("Nemůžeme zapsat do cheese.txt"); } } }
- Aplikace si vytvoří objekt souboru cheese.txt
- Zjistí, zda má povolení pro zápis do tohoto souboru
- Podle nastavených práv pak zjistí, zda je schopen zápisu do souboru (pak je vyhozeno hlášení „Můžeme zapsat do cheese.txt“), nebo je vyhozena bezpečnostní výjimka a zahlášeno „Nemůžeme zapsat do cheese.txt“
Konfigurační soubor Policy:
grant { permission java.io.FilePermission "build/conf/cheese.txt", "write"; };
- Garantujeme povolení typu FilePermission na soubor "build/conf/cheese.txt" a to na zápis do tohoto souboru
Příklad logování do aplikace[3]editovat | editovat zdroj
Aplikace:
CallbackHandler handler = new RanchCallbackHandler(userName, password); try { LoginContext loginContext = new LoginContext("RanchLogin", handler); // Přihlášení loginContext.login(); } catch (LoginException e) { // Chyba při přihlášení, nepodařilo se přihlásit e.printStackTrace(); }
- Aplikace vytvoří instanci LoginContext
- Provede se pokus o nalogování
Login konfigurační soubor:
RanchLogin { com.javaranch.auth.RanchLoginModule required; };
- Tento soubor určuje, který z LoginModule bude použit pro logování a jak (viz Login konfigurační soubor podrobněji).
- Zde se nastavuje, že pro jméno "RanchLogin" je použito RanchLoginModule a je nutné, aby modul uživatele autentizoval
- Nastavuje se pro JVM přes parametr: -Djava.security.auth.login.config="JAAS_CONFIG_FILENAME"
'''LoginModul "RanchLoginModule":'''
public boolean login() throws LoginException {
boolean returnValue = true;
if (callbackHandler == null){
throw new LoginException("No callback handler supplied.");
}
Callback callbacks = new Callback2;
callbacks0 = new NameCallback("Username");
callbacks1 = new PasswordCallback("Password", false);
try {
callbackHandler.handle(callbacks);
String userName = ((NameCallback) callbacks0).getName();
char passwordCharArray = ((PasswordCallback)
callbacks1).getPassword();
String password = new String(passwordCharArray);
//-->autentifikuje se pomocí jména a hesla, které musí být stejné
returnValue = userName.equals(password);
} catch (IOException ioe) {
ioe.printStackTrace();
throw new LoginException("IOException occurred:
"+ioex.getMessage());
} catch (UnsupportedCallbackException ucbe) {
ucbe.printStackTrace();
throw new LoginException("UnsupportedCallbackException encountered:
"+ucbe.getMessage());
}
System.out.println("Přihlášen");
return returnValue;
}
- Pomocí Callbacků a CalbackHandleru se získá jméno a heslo
- Porovná se, zda se jméno shoduje s heslem
- Vrátí se návratová hodnota true nebo false podle porovnání jména a hesla
Konfigurační soubor Policy:
grant { permission java.util.PropertyPermission "user", "read"; permission java.util.PropertyPermission "pass", "read"; permission java.util.PropertyPermission "java.security.auth.login.config", "read"; permission java.util.PropertyPermission "java.security.policy", "read"; permission javax.security.auth.AuthPermission "createLoginContext.RanchLogin"; };
- Nastavení práv pro možnost vytváření objektu LoginContext a přístup k atributům
- Je nutné pouze při aktivním security manageru
Výsledky spuštění aplikace:
Stejné jméno a heslo
java -Duser=rahul -Dpass=rahul -Djava.security.auth.login.config=jaas.config -jar jaas-example.jar
- Přihlášení proběhlo v pořádku
Různé jméno a heslo
java -Duser=rahul -Dpass=notrahul -Djava.security.auth.login.config=jaas.config -jar jaas-example.jar
- Jméno a heslo nejsou stejné, proto se nepřihlásí
Stejné jméno a heslo + spuštěn security manager
java -Duser=rahul -Dpass=rahul -Djava.security.auth.login.config=jaas.config -Djava.security.manager -jar jaas-example.jar
- Nejsou nastavena práva. Není tedy schopen provést operace pro přihlášení a nepřihlásí se
Stejné jméno a heslo + spuštěn security manager + nstavena práva
java -Duser=rahul -Dpass=rahul -Djava.security.auth.login.config=jaas.config -Djava.security.manager -Djava.security.policy=policy.config -jar jaas-example.jar
- Přihlášení proběhlo v pořádku
Login konfigurační soubor podrobněji[3]editovat | editovat zdroj
RanchLogin { com.javaranch.auth.FirstLoginModule requisite debug=true ; com.javaranch.auth.SecondLoginModule required debug=false email=admin@mydomain.com ; };
Jak je vidět z příkladu pod jedním jménem (RanchLogin) může být více než jeden LoginModule. Obsahují také své vlastní parametry, které jsou pak v jednotlivých modulech přístupné (debug pro FirstLoginModule, debug a email pro SecondLoginModule). Poslední položkou je konfigurace jednotlivých modulů. Ty mohou být podle klíčových slov:
- Required – Modul musí autentizovat uživatele. Pokud se tak nestane, stejně je předáno řízení dalšímu LoginModul
- Requisite – Pokud se nepovede přihlášení, vrátí se okamžitě zpět do aplikace a další LoginModuly se nespouští
- Sufficient – Pokud se tomuto modulu podaří přihlásit, autentizace se bere jako splněná a vrací se zpět do aplikace. Pokud ne, pokračuje se dalšími LoginModuly
- Optional – Pokračuje vždy k dalšímu LoginModulu, nezávisle na výsledku autentizace
Referenceeditovat | editovat zdroj
- ↑ a b c JAAS Reference Guide online. Dostupné online. (anglicky)
- ↑ COTÉ, Michael. JAAS in action "PDF online". 2005-10-26. Dostupné online. (anglicky)
- ↑ a b BHATTACHARJEE, Rahul. Authentication using JAAS online. Příprava vydání Ulf Dittmer. 4.2008 cit. 2010-06-16. Dostupné v archivu pořízeném dne 2012-02-13. (anglicky)
Text je dostupný za podmienok Creative Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších podmienok. Podrobnejšie informácie nájdete na stránke Podmienky použitia.
Antropológia
Aplikované vedy
Bibliometria
Dejiny vedy
Encyklopédie
Filozofia vedy
Forenzné vedy
Humanitné vedy
Knižničná veda
Kryogenika
Kryptológia
Kulturológia
Literárna veda
Medzidisciplinárne oblasti
Metódy kvantitatívnej analýzy
Metavedy
Metodika
Text je dostupný za podmienok Creative
Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších
podmienok.
Podrobnejšie informácie nájdete na stránke Podmienky
použitia.
www.astronomia.sk | www.biologia.sk | www.botanika.sk | www.dejiny.sk | www.economy.sk | www.elektrotechnika.sk | www.estetika.sk | www.farmakologia.sk | www.filozofia.sk | Fyzika | www.futurologia.sk | www.genetika.sk | www.chemia.sk | www.lingvistika.sk | www.politologia.sk | www.psychologia.sk | www.sexuologia.sk | www.sociologia.sk | www.veda.sk I www.zoologia.sk