Služba ověřování a autorizace Java - Java Authentication and Authorization Service
Služba Java Authentication and Authorization Service neboli JAAS , vyslovovaná jako „Jazz“, je implementací standardního bezpečnostního rámce PAM ( Pluggable Authentication Module ) v jazyce Java . JAAS byl představen jako rozšiřující knihovna k platformě Java Standard Edition 1.3 a byl integrován do verze 1.4.
Hlavním cílem JAAS je oddělení obav z autentizace uživatelů, aby mohly být spravovány nezávisle. Zatímco dřívější ověřovací mechanismus obsahoval informace o tom, odkud kód pochází a kdo tento kód podepsal, JAAS přidá značku o tom, kdo kód spouští. Rozšířením ověřovacích vektorů rozšiřuje JAAS architekturu zabezpečení pro aplikace Java, které vyžadují moduly ověřování a autorizace .
Správa
Pro správce systému se JAAS skládá ze dvou druhů konfiguračních souborů :
-
*.login.conf: určuje, jak zapojit přihlašovací moduly dodané dodavatelem do konkrétních aplikací -
*.policy: určuje, kterým identitám (uživatelům nebo programům) jsou udělena jaká oprávnění
Například aplikace může mít tento soubor login.conf označující, jak mají být spuštěny různé mechanismy autentizace pro autentizaci uživatele:
PetShopApplication {
com.sun.security.auth.module.LdapLoginModule sufficient;
com.foo.SmartcardLoginModule requisite;
com.sun.security.auth.module.UnixLoginModule required debug=true;
}
Rozhraní aplikace
Pro vývojáře aplikací je JAAS standardní knihovna, která poskytuje:
- reprezentace identity ( Principal ) a sada pověření ( Subject )
- přihlašovací služba, která vyvolá vaše aplikační zpětná volání požádat uživatelské věci, jako je uživatelské jméno a heslo . Vrátí nový předmět
- služba, která testuje, zda subjektu bylo uděleno povolení správcem.
Integrace bezpečnostního systému
Pro integrátora bezpečnostního systému poskytuje JAAS rozhraní:
- poskytnout aplikacím svůj jmenný prostor identity
- připojit pověření k vláknům ( Předmět )
- pro vývoj přihlašovacích modulů. Váš modul vyvolá zpětná volání k dotazování uživatele, zkontroluje jejich odpověď a vygeneruje předmět .
Přihlašovací moduly
Přihlašovací moduly se primárně zabývají spíše autentizací než autorizací a tvoří široce používanou součást JAAS. K implementaci javax.security.auth.spi.LoginModule rozhraní je vyžadován přihlašovací modul , který určuje následující metody:
Poznámka: A Subject je uživatel, který se pokouší přihlásit.
-
initialize: Kód pro inicializaci přihlašovacího modulu, obvykle uložením parametrů předaných do příslušných polí
Class. -
přihlášení: Vlastně zkontrolujte přihlašovací údaje poskytnuté prostřednictvím
Objectimplementujícíhojavax.security.auth.Callbackrozhraní (např. zkontrolujte databázi). Tato metoda může uživatele vyzvat k zadání přihlašovacího jména a hesla nebo může použít dříve získané podrobnosti. Je důležité si zde uvědomit, že pokud jsou zadána neplatná pověření,javax.security.auth.login.FailedLoginExceptionměla by být vyvolána a (spíše než vrácení hodnoty false, což znamená, že tento přihlašovací modul by měl být ignorován, což potenciálně umožňuje úspěšné ověření). -
potvrzení: Identita subjektu byla ověřena, takže kód v této metodě nastaví
PrincipalaGroups(role) pro úspěšně ověřený subjekt. Tuto metodu je třeba v podnikových aplikacích psát opatrně, protože aplikační servery Java EE často očekávají, že vztahy mezi objektyPrincipalaGroupobjekty budou nastaveny určitým způsobem. Tato metoda by měla hodit,javax.security.auth.login.FailedLoginExceptionpokud se ověření nezdaří (např. Uživatel zadal nesprávné přihlašovací jméno nebo heslo). - abort: Volá se, pokud selže samotný proces ověřování. Pokud tato metoda vrátí hodnotu false, bude tento přihlašovací modul ignorován.
-
odhlášení: Kód, který by měl být proveden při odhlášení (např. by mohl odstranit
PrincipalzSubjectnebo by mohl zneplatnit webovou relaci).
Přihlašovací moduly mohou poskytovat jednotné přihlášení (SSO) prostřednictvím konkrétního protokolu / rámce SSO (např. SAML , OpenID a SPNEGO ), mohou kontrolovat přítomnost hardwarových bezpečnostních tokenů (např. USB token) atd. V aplikaci n-tier , LoginModules může být přítomen jak na straně klienta, tak na straně serveru.
Přihlašovací modul ( javax.security.auth.spi.LoginModule )
Přihlašovací moduly se zapisují implementací tohoto rozhraní; obsahují skutečný kód pro autentizaci. Může použít různé mechanismy k ověření pověření uživatele. Kód může načíst heslo z databáze a porovnat jej s heslem dodaným modulu.
LoginContext ( javax.security.auth.login.LoginContext )
Kontext přihlášení je jádrem rámce JAAS, který zahajuje proces ověřování vytvořením subjektu. Jak proces ověřování pokračuje, subjekt je naplněn různými principy a pověřeními pro další zpracování.
Předmět ( javax.security.auth.Subject )
Subjekt představuje jednoho uživatele, entitu nebo systém - jinými slovy klient - požadující ověření.
Principal ( java.security.Principal )
Principál představuje tvář subjektu. Zapouzdřuje vlastnosti nebo vlastnosti subjektu. Subjekt může obsahovat více principů.
Pověření
Pověření nejsou nic jiného než informace týkající se uvažovaného subjektu. Mohou to být čísla účtů, hesla, certifikáty atd. Protože pověření představuje některé důležité informace, další rozhraní mohou být užitečná pro vytvoření správného a zabezpečeného pověření - javax.security.auth.Destroyable a javax.security.auth.Refreshable . Předpokládejme, že po úspěšném ověření uživatele naplníte subjekt tajným ID (ve formě pověření), pomocí kterého může subjekt provádět některé důležité služby, ale pověření by mělo být po určitém čase odstraněno. V takovém případě může být vhodné implementovat Destroyable rozhraní. Refreshable může být užitečné, pokud má pověření pouze omezený časový rozsah, ve kterém je platné.
Viz také
Reference
externí odkazy
- Výukový program JAAS
- jGuard: projekt s otevřeným zdrojovým kódem, který může zabezpečit samostatné nebo webové aplikace založené na JAAS
- Musser, John; Feuer, Paul (23. září 2002). "Všechno to JAAS" . JavaWorld . Citováno 2020-07-20 .
- Knihovna SPNEGO - open source projekt GNU LGPL, který se při zjednodušení ověřování a autorizace spoléhá na rámec JAAS