1.3. 분산 영역 생성
1.3.1. Elytron의 분산 영역 링크 복사링크가 클립보드에 복사되었습니다!
분산 영역을 사용하면 기존 보안 영역을 참조하여 다양한 ID 저장소에서 검색할 수 있습니다. 가져온 ID는 인증 및 권한 부여 모두에 사용됩니다. Elytron은 분산 영역의 보안 영역을 distributed-realm 리소스에서 정의하는 순서대로 호출합니다.
분산-realm 구성의 예
/subsystem=elytron/distributed-realm=exampleSecurityRealm:add(realms=[exampleLDAPRealm,exampleFilesystemRealm])
이 예제에서 구성된 distributed-realm 은 두 개의 기존 보안 영역인 "exampleLDAPRealm", LDAP 영역인 "exampleFilesystemRealm"과 파일 시스템 영역인 "exampleFilesystemRealm"을 참조합니다. Elytron은 참조된 보안 영역을 다음과 같이 순차적으로 검색합니다.
- Elytron은 먼저 LDAP 영역에서 일치하는 ID를 검색합니다.
- Elytron이 일치하는 항목을 찾으면 인증이 성공합니다.
- Elytron이 일치하는 항목을 찾지 못하면 파일 시스템 영역을 검색합니다.
기본적으로 ID 저장소와 일치하기 전에 ID 저장소에 대한 연결이 실패하면 예외 Cryostat UnavailableException 과 함께 인증이 실패하고 더 이상 영역을 검색하지 않습니다. ignore-unavailable-realms 속성을 true 로 설정하여 이 동작을 변경할 수 있습니다. ignore-unavailable-realms 가 true 로 설정된 경우 ID 저장소에 대한 연결이 실패하면 Elytron은 나머지 영역을 계속 검색합니다.
ignore-unavailable-realms 가 true 로 설정된 경우emit-events 는 기본적으로 true 로 설정되므로 쿼리된 영역을 사용할 수 없는 경우 SecurityEvent 가 생성됩니다. emit-events 를 false 로 설정하여 이 기능을 끌 수 있습니다.
1.3.2. 분산 영역에 필요한 보안 영역을 생성하는 예 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 ldap-realm 및 filesystem-realm 생성을 보여줍니다. 이러한 보안 영역은 분산-현실 에서 참조할 수 있습니다.
1.3.2.1. Elytron 예제에서 ldap-realm 생성 링크 복사링크가 클립보드에 복사되었습니다!
LDAP(Lightweight Directory Access Protocol) ID 저장소에서 지원하는 Elytron 보안 영역을 생성하여 JBoss EAP 서버 인터페이스 또는 서버에 배포된 애플리케이션을 보호합니다.
이 절차의 예에서는 다음 LDAP Data Interchange Format(LDIF)이 사용됩니다.
dn: ou=Users,dc=wildfly,dc=org
objectClass: organizationalUnit
objectClass: top
ou: Users
dn: uid=user1,ou=Users,dc=wildfly,dc=org
objectClass: top
objectClass: person
objectClass: inetOrgPerson
cn: user1
sn: user1
uid: user1
userPassword: userPassword1
dn: ou=Roles,dc=wildfly,dc=org
objectclass: top
objectclass: organizationalUnit
ou: Roles
dn: cn=Admin,ou=Roles,dc=wildfly,dc=org
objectClass: top
objectClass: groupOfNames
cn: Admin
member: uid=user1,ou=Users,dc=wildfly,dc=org
예제에 사용되는 LDAP 연결 매개변수는 다음과 같습니다.
-
LDAP URL:
ldap://10.88.0.2 LDAP 관리자 암호:
secretElytron은 LDAP 서버와 연결하려면 이 작업이 필요합니다.
-
LDAP 관리자 고유 이름(DN):
(cn=admin,dc=wildfly,dc=org) LDAP 조직:
wildfly조직 이름을 지정하지 않으면 기본값은
Example Inc입니다.LDAP 도메인:
wildfly.org이는 플랫폼에 LDAP 검색 참조가 수신될 때 일치하는 이름입니다.
사전 요구 사항
- LDAP ID 저장소를 구성했습니다.
- JBoss EAP가 실행 중입니다.
프로세스
LDAP 서버에 연결하는 데 사용되는 URL과 주체를 제공하는 디렉터리 컨텍스트를 구성합니다.
/subsystem=elytron/dir-context=<dir_context_name>:add(url="<LDAP_URL>",principal="<principal_distinguished_name>",credential-reference=<credential_reference>)예제
/subsystem=elytron/dir-context=exampleDirContext:add(url="ldap://10.88.0.2",principal="cn=admin,dc=wildfly,dc=org",credential-reference={clear-text="secret"}) {"outcome" => "success"}디렉터리 컨텍스트를 참조하는 LDAP 영역을 생성합니다. Search Base DN과 사용자 매핑 방법을 지정합니다.
구문
/subsystem=elytron/ldap-realm=<ldap_realm_name>add:(dir-context=<dir_context_name>,identity-mapping=search-base-dn="ou=<organization_unit>,dc=<domain_component>",rdn-identifier="<relative_distinguished_name_identifier>",user-password-mapper={from=<password_attribute_name>},attribute-mapping=[{filter-base-dn="ou=<organization_unit>,dc=<domain_component>",filter="<ldap_filter>",from="<ldap_attribute_name>",to="<identity_attribute_name>"}]})예제
/subsystem=elytron/ldap-realm=exampleLDAPRealm:add(dir-context=exampleDirContext,identity-mapping={search-base-dn="ou=Users,dc=wildfly,dc=org",rdn-identifier="uid",user-password-mapper={from="userPassword"},attribute-mapping=[{filter-base-dn="ou=Roles,dc=wildfly,dc=org",filter="(&(objectClass=groupOfNames)(member={1}))",from="cn",to="Roles"}]}) {"outcome" => "success"}
이제 이 영역을 사용하여 보안 도메인을 생성하거나 페일오버-realm , 의 다른 영역과 결합할 수 있습니다. distributed-realm 또는 aggregate-realm ldap 을 구성하여 조회 결과를 캐시하고 성능을 향상시킬 수도 있습니다.
-realm 에 대해 캐싱-realm
1.3.2.2. Ely tron에서 파일 시스템 생성 예 링크 복사링크가 클립보드에 복사되었습니다!
파일 시스템 기반 ID 저장소에서 지원하는 Elytron 보안 영역을 생성하여 JBoss EAP 서버 인터페이스 또는 서버에 배포된 애플리케이션을 보호합니다.
사전 요구 사항
- JBoss EAP가 실행 중입니다.
프로세스
Elytron에서
filesystem-realm을 만듭니다.구문
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add(path=<file_path>)예제
/subsystem=elytron/filesystem-realm=exampleFileSystemRealm:add(path=fs-realm-users,relative-to=jboss.server.config.dir) {"outcome" => "success"}사용자를 영역에 추가하고 사용자 역할을 구성합니다.
사용자를 추가합니다.
구문
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add-identity(identity=<user_name>)예제
/subsystem=elytron/filesystem-realm=exampleFileSystemRealm:add-identity(identity=user2) {"outcome" => "success"}사용자의 암호를 설정합니다.
구문
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:set-password(identity=<user_name>, clear={password=<password>})예제
/subsystem=elytron/filesystem-realm=exampleFileSystemRealm:set-password(identity=user2, clear={password="passwordUser2"}) {"outcome" => "success"}사용자의 역할을 설정합니다.
구문
/subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add-identity-attribute(identity=<user_name>, name=<roles_attribute_name>, value=[<role_1>,<role_N>])예제
/subsystem=elytron/filesystem-realm=exampleFileSystemRealm:add-identity-attribute(identity=user2, name=Roles, value=["Admin","Guest"]) {"outcome" => "success"}
이제 이 영역을 사용하여 보안 도메인을 생성하거나 페일오버-realm , 의 다른 영역과 결합할 수 있습니다.
distributed-realm 또는 aggregate-realm
1.3.3. Elytron에서 분산- 현지 생성 링크 복사링크가 클립보드에 복사되었습니다!
ID를 검색할 기존 보안 영역을 참조하는 Elytron에 분산-realm 을 만듭니다. distributed-realm 을 사용하여 관리 인터페이스 또는 서버에 배포된 애플리케이션에 인증 및 권한 부여를 추가하는 보안 도메인을 생성합니다.
사전 요구 사항
- JBoss EAP가 실행 중입니다.
-
distributed-realm에서 참조할 영역을 생성했습니다.
프로세스
기존 보안 영역을 참조하는
distributed-realm을 생성합니다.구문
/subsystem=elytron/distributed-realm=<distributed_realm_name>:add(realms=[<security_realm_1>, <security_realm_2>, ..., <security_realm_N>])예제
/subsystem=elytron/distributed-realm=exampleSecurityRealm:add(realms=[exampleLDAPRealm, exampleFileSystemRealm]) {"outcome" => "success"}특성을 역할에 매핑하는 역할 디코더를 생성합니다.
구문
/subsystem=elytron/simple-role-decoder=<role_decoder_name>:add(attribute=<attribute>)예제
/subsystem=elytron/simple-role-decoder=from-roles-attribute:add(attribute=Roles) {"outcome" => "success"}distributed-realm및 역할 디코더를 참조하는 보안 도메인을 생성합니다.구문
/subsystem=elytron/security-domain=<security_domain_name>:add(realms=[{realm=<distributed_realm_name>,role-decoder=<role_decoder_name>}],default-realm=<ldap_realm_name>,permission-mapper=<permission_mapper>)예제
/subsystem=elytron/security-domain=exampleSecurityDomain:add(default-realm=exampleSecurityRealm,permission-mapper=default-permission-mapper,realms=[{realm=exampleSecurityRealm,role-decoder="from-roles-attribute"}]) {"outcome" => "success"}
이제 생성된 보안 도메인을 사용하여 관리 인터페이스 및 애플리케이션에 인증 및 권한 부여를 추가할 수 있습니다. 자세한 내용은 관리 인터페이스 및 애플리케이션 보안을 참조하십시오.