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:

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 Object implementujícího javax.security.auth.Callback rozhraní (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.FailedLoginException mě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í Principal a Groups (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 objekty Principal a Group objekty budou nastaveny určitým způsobem. Tato metoda by měla hodit, javax.security.auth.login.FailedLoginException pokud 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 Principal z Subject nebo 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