Bezpieczeństwo
Domena bezpieczeństwa - konfiguracja uwierzytelniania, autoryzacji oraz innych elementów związanych z bezpieczeństwem. Implementuje Java Authentication and Authorization Service (JAAS) declarative security.
Domyślnie zdefiniowane są następujące Security Realm.
- ManagementRealm - umożliwia bezpieczny dostęp do interfejsów administracyjnych - CLI i Web Console
- ApplicationRealm - związany z bezpieczeństwem wdrożonych aplikacji
W obu przypadkach dodawanie nowych użytkowników odbywa się z pomocą skryptu add-user.sh.
ManagementRealm
Domyślnie opiera się o prosty mechanizm uwierzytelniania i autoryzacji zakładający konfigurację opartą o pliki mgmt-users.properties i mgmt-groups.properties znajdujące się w katalogu z konfiguracją.
<security-realm name="ManagementRealm">
<authentication>
<local default-user="$local" />
<properties path="mgmt-users.properties" relative-to="jboss.server.conKg.dir" />
</authentication>
<authorization map-groups-to-roles="false">
<properties path="mgmt-groups.properties" relative-to="jboss.server.conKg.dir" />
</authorization>
</security-realm>
W przypadku CLI uwierzytelnianie zachodzi automatycznie jeśli próba dostępu jest realizowana z lokalnej maszyny.
ApplicationRealm
Wykorzystywany do zabezpieczania aplikacji na poziomie webowym jak i komponentów EJB.
<security-realm name="ApplicationRealm">
<authentication>
<local default-user="$local" allowed-users="*" />
<properties path="application-users.properties" relative-to="jboss.server.conKg.dir" />
</authentication>
<authorization>
<properties path="application-roles.properties" relative-to="jboss.server.conKg.dir" />
</authorization>
</security-realm>
Proces uwierzytelniania zachodzi tak samo jak w poprzednim przypadku, z tą różnicą że dane uwierzytelniające znajdują się w pliku application-user.properties. Proces autoryzacji przeprowadzany jest na podstawie pliku application-roles.properties.
Security Domains
Konfiguracja modułów logowania oraz mechanizmów mapowania ról. Znajduje się w podpakiecie security.
<subsystem xmlns="urn:jboss:domain:security:1.2">
<security-domains>
<security-domain name="other" cache-type="default">
<authentication>
<login-module code="Remoting" flag="optional">
<module-option name="password-stacking" value="useFirstPass" />
</login-module>
<login-module code="RealmDirect" flag="required">
<module-option name="password-stacking" value="useFirstPass" />
</login-module>
</authentication>
</security-domain>
</security-domains>
</subsystem>
Domyślnie skonfigurowana i zarazem podstawowa konfiguracja domeny nazywa się other. Definiuje ona moduły Remoting i RealmDirect. Pierwszy używany jest wewnętrznie podczas gdy potrzebne jest uwierzytelnianie na poziomie zdalnych połączeń (zwykle wywołania EJB). Drugi używany jest kiedy np. logujemy się z poziomu konsoli webowej.
Domyślnie dostępne moduły bezpieczeństwa
- RealmDirect - oparty o pliki tekstowe
- Database - oparty o bazę relacyjną
- LDAP - oparty o bazę LDAP