6.4. Jakarta Enterprise Bean에 대한 원격 액세스
6.4.1. 원격 자카르타 엔터프라이즈 빈 클라이언트에서 보안 영역 사용
Jakarta Enterprise Bean을 원격으로 호출하는 클라이언트에 보안을 추가하는 한 가지 방법은 보안 영역을 사용하는 것입니다. 보안 영역은 사용자 이름/암호 쌍과 사용자 이름/역할 쌍으로 이루어진 간단한 데이터베이스입니다. 또한 용어는 웹 컨테이너의 컨텍스트에서도 약간 다른 의미를 가집니다.
Jakarta Enterprise Bean에 대해 보안 영역에 있는 특정 사용자 이름/암호 쌍을 인증하려면 다음 단계를 따르십시오.
- 도메인 컨트롤러 또는 독립 실행형 서버에 새 보안 영역을 추가합니다.
다음 예와 같이 애플리케이션의 클래스 경로에 있는
wildfly-config.xml
파일을 구성합니다.<configuration> <authentication-client xmlns="urn:elytron:client:1.2"> <authentication-rules> <rule use-configuration="default" /> </authentication-rules> <authentication-configurations> <configuration name="default"> <sasl-mechanism-selector selector="DIGEST-MD5" /> <set-user-name name="admin" /> <credentials> <clear-password password="password123!" /> </credentials> </configuration> </authentication-configurations> </authentication-client> <jboss-ejb-client xmlns="urn:jboss:wildfly-client-ejb:3.0"> <connections> <connection uri="remote+http://127.0.0.1:8080" /> </connections> </jboss-ejb-client> </configuration>
- 새 보안 영역을 사용하는 도메인 또는 독립 실행형 서버에 사용자 지정 원격 커넥터를 생성합니다.
- 사용자 지정 Remoting 커넥터로 프로필을 사용하도록 구성된 서버 그룹에 Jakarta Enterprise Bean을 배포하거나 관리형 도메인을 사용하지 않는 경우 독립 실행형 서버에 배포합니다.
6.4.2. 새 보안 영역 추가
관리 CLI를 실행합니다.
jboss-cli.sh
또는jboss-cli.bat
스크립트를 실행하고 서버에 연결합니다.새 보안 영역 자체를 생성합니다.
다음 명령을 실행하여 도메인 컨트롤러 또는 독립 실행형 서버에
MyDomainRealm
이라는 새 보안 영역을 생성합니다.도메인 인스턴스의 경우 다음 명령을 사용하십시오.
/host=master/core-service=management/security-realm=MyDomainRealm:add()
독립 실행형 인스턴스의 경우 다음 명령을 사용하십시오.
/core-service=management/security-realm=MyDomainRealm:add()
myfile.properties
라는 속성 파일을 만듭니다 :독립 실행형 인스턴스의 경우
EAP_HOME/standalone/configuration/myfile.properties
파일을 생성하고 도메인 인스턴스에 대해EAP_HOME/domain/configuration/myfile.properties
파일을 생성합니다. 이러한 파일에는 파일 소유자의 읽기 및 쓰기 액세스 권한이 있어야 합니다.$ chmod 600 myfile.properties
새 역할에 대한 정보를 저장할 속성 파일에 대한 참조를 생성합니다.
다음 명령을 실행하여 새 역할과 관련된 속성을 포함할
myfile.properties
파일에 대한 포인터를 생성합니다.참고속성 파일은 포함된
add-user.sh 및
스크립트로 생성되지 않습니다. 외부에서 생성해야 합니다.add-user.
bat도메인 인스턴스의 경우 다음 명령을 사용하십시오.
/host=master/core-service=management/security-realm=MyDomainRealm/authentication=properties:add(path=myfile.properties)
독립 실행형 인스턴스의 경우 다음 명령을 사용하십시오.
/core-service=management/security-realm=MyDomainRealm/authentication=properties:add(path=myfile.properties)
새 보안 영역이 생성됩니다. 이 새 영역에 사용자와 역할을 추가하면 기본 보안 영역과 별도의 파일에 정보가 저장됩니다. 자체 애플리케이션 또는 절차를 사용하여 이 새 파일을 관리할 수 있습니다.
add-user.sh
스크립트를 사용하여 application-users.properties 이외의 기본이 아닌 파일에 사용자를 추가하는 경우
--user-properties
myfile.properties 인수를 전달해야 합니다. 그렇지 않으면application-users.properties
를 사용하려고 합니다.
6.4.3. 보안 영역에 사용자 추가
-
add-user
스크립트를 실행합니다. 터미널을 열고 디렉터리를EAP_HOME/bin/
디렉터리로 변경합니다. Red Hat Enterprise Linux 또는 기타 UNIX 유사 운영 체제인 경우add-user.sh를
실행합니다. Windows Server인 경우add-user.bat를
실행합니다. -
관리 사용자 또는 애플리케이션 사용자를 추가할지 여부를 선택합니다. 이 절차의 경우
b
를 입력하여 애플리케이션 사용자를 추가합니다. -
사용자가 추가할 영역을 선택합니다. 기본적으로 사용 가능한 유일한 영역은
ApplicationRealm
입니다. 사용자 지정 영역을 추가한 경우 대신 사용자를 추가할 수 있습니다. -
메시지가 표시되면 사용자 이름, 암호 및 역할을 입력합니다. 메시지가 표시되면 원하는 사용자 이름, 암호 및 선택적 역할을 입력합니다.
yes
를 입력하여 선택 사항을 확인하거나,no
를 입력하여 변경 사항을 취소합니다. 변경 사항은 보안 영역의 각 속성 파일에 작성됩니다.
6.4.4. 보안 도메인과 보안 영역 간의 관계
Jakarta Enterprise Beans를 보안 영역으로 보호하려면 보안 영역에서 사용자 자격 증명을 검색하도록 구성된 보안 도메인을 사용해야 합니다. 즉, 도메인에는 Remoting 및 RealmDirect 로그인 모듈이 포함되어야 합니다. 보안 도메인 할당은 @SecurityDomain
주석으로 수행되며 Jakarta Enterprise Bean에 적용할 수 있습니다.
other
보안 도메인은 기본 보안 영역에서 사용자 및 암호 데이터를 검색합니다. 이 보안 도메인은 Jakarta Enterprise Beans에 @SecurityDomain
주석이 없는 경우 기본 도메인이지만 Jakarta Enterprise Beans에는 보안으로 간주되는 기타 보안 관련 주석이 포함되어 있습니다.
클라이언트에서 연결을 설정하는 데 사용하는 기본 http-remoting 커넥터
는 사용되는 보안 영역을 결정합니다. http-remoting 커넥터에
대한 자세한 내용은 JBoss EAP 구성 가이드의 하위 시스템 제거 정보를 참조하십시오.
기본 커넥터의 보안 영역은 다음과 같은 방식으로 변경할 수 있습니다.
/subsystem=remoting/http-connector=http-remoting-connector:write-attribute(name=security-realm,value=MyDomainRealm)
6.4.5. SSL 암호화를 사용하여 원격 자카르타 엔터프라이즈 빈 액세스 정보
기본적으로 EJB2의 RMI(Remote Method Invocation) 및 Jakarta Enterprise Beans3 Bean에 대한 네트워크 트래픽은 암호화되지 않습니다. 암호화가 필요한 경우 클라이언트와 서버 간의 연결이 암호화되도록 SSL(Secure Sockets Layer)을 사용할 수 있습니다. SSL을 사용하면 방화벽 구성에 따라 네트워크 트래픽이 일부 방화벽을 통과하도록 허용하는 추가 이점이 있습니다.
Red Hat은 영향을 받는 모든 패키지에서 TLSv1.1 또는 TLSv1.2를 기반으로 SSLv2, SSLv3 및 TLSv1.0을 명시적으로 비활성화하는 것이 좋습니다.