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. 새 보안 영역 추가

  1. 관리 CLI를 실행합니다.

    jboss-cli.sh 또는 jboss-cli.bat 스크립트를 실행하고 서버에 연결합니다.

  2. 새 보안 영역 자체를 생성합니다.

    다음 명령을 실행하여 도메인 컨트롤러 또는 독립 실행형 서버에 MyDomainRealm 이라는 새 보안 영역을 생성합니다.

    도메인 인스턴스의 경우 다음 명령을 사용하십시오.

    /host=master/core-service=management/security-realm=MyDomainRealm:add()

    독립 실행형 인스턴스의 경우 다음 명령을 사용하십시오.

    /core-service=management/security-realm=MyDomainRealm:add()
  3. myfile.properties 라는 속성 파일을 만듭니다 :

    독립 실행형 인스턴스의 경우 EAP_HOME/standalone/configuration/myfile.properties 파일을 생성하고 도메인 인스턴스에 대해 EAP_HOME/domain/configuration/myfile.properties 파일을 생성합니다. 이러한 파일에는 파일 소유자의 읽기 및 쓰기 액세스 권한이 있어야 합니다.

    $ chmod 600 myfile.properties
  4. 새 역할에 대한 정보를 저장할 속성 파일에 대한 참조를 생성합니다.

    다음 명령을 실행하여 새 역할과 관련된 속성을 포함할 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. 보안 영역에 사용자 추가

  1. add-user 스크립트를 실행합니다. 터미널을 열고 디렉터리를 EAP_HOME/bin/ 디렉터리로 변경합니다. Red Hat Enterprise Linux 또는 기타 UNIX 유사 운영 체제인 경우 add-user.sh를 실행합니다. Windows Server인 경우 add-user.bat를 실행합니다.
  2. 관리 사용자 또는 애플리케이션 사용자를 추가할지 여부를 선택합니다. 이 절차의 경우 b 를 입력하여 애플리케이션 사용자를 추가합니다.
  3. 사용자가 추가할 영역을 선택합니다. 기본적으로 사용 가능한 유일한 영역은 ApplicationRealm 입니다. 사용자 지정 영역을 추가한 경우 대신 사용자를 추가할 수 있습니다.
  4. 메시지가 표시되면 사용자 이름, 암호 및 역할을 입력합니다. 메시지가 표시되면 원하는 사용자 이름, 암호 및 선택적 역할을 입력합니다. 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을 명시적으로 비활성화하는 것이 좋습니다.