15.2. 자카르타 권한 부여 보안 구성

올바른 모듈로 보안 도메인을 구성한 다음 필수 매개변수를 포함하도록 jboss-web.xml 을 수정하여 Jakarta Authorization을 구성할 수 있습니다.

보안 도메인에 자카르타 인증 추가

보안 도메인에 Jakarta Authorization 지원을 추가하려면 required 플래그가 설정된 security 도메인의 권한 부여 스택에 Jakarta Authorization 권한 부여 정책을 추가합니다. 다음은 Jakarta Authorization 지원이 포함된 보안 도메인의 예입니다. 그러나 XML을 직접 수정하는 대신 관리 콘솔 또는 관리 CLI에서 보안 도메인을 구성하는 것이 좋습니다.

예제: 자카르타 인증을 통한 보안 도메인

<security-domain name="jacc" cache-type="default">
    <authentication>
        <login-module code="UsersRoles" flag="required">
        </login-module>
    </authentication>
    <authorization>
        <policy-module code="JACC" flag="required"/>
    </authorization>
</security-domain>

자카르타 인증을 사용하도록 웹 애플리케이션 구성

jboss-web.xml 파일은 배포의 WEB-INF/ 디렉터리에 있으며, 웹 컨테이너에 대한 재정의 및 추가 JBoss 특정 구성이 포함되어 있습니다. Jakarta Authorization-enabled 보안 도메인을 사용하려면 <security-domain> 요소를 포함하고 < use-jboss-authorization> 요소도 true 로 설정해야 합니다. 다음 XML은 위의 Jakarta Authorization 보안 도메인을 사용하도록 구성되어 있습니다.

예제: Jakarta Authentication Security Domain 사용

<jboss-web>
    <security-domain>jacc</security-domain>
    <use-jboss-authorization>true</use-jboss-authorization>
</jboss-web>

자카르타 인증을 사용하도록 자카르타 엔터프라이즈 빈 애플리케이션 구성

보안 도메인을 사용하도록 Jakarta Enterprise Bean을 구성하고 Jakarta Authorization Authorization을 사용하는 것은 웹 애플리케이션과 다릅니다. Jakarta Enterprise Beans의 경우 메서드 메서드 또는 그룹에 대한 메서드 권한을 ejb-jar.xml 설명자에서 선언할 수 있습니다. <ejb-jar> 요소 내에서 모든 child <method-permission> 요소에는 Jakarta Authorization 역할에 대한 정보가 포함되어 있습니다. 자세한 내용은 아래 설정 예제를 참조하십시오. EJBMethodPermission 클래스는 Jakarta EE API의 일부이며 Class EJBMethodPermission 에 설명되어 있습니다.

예제: 자카르타 엔터프라이즈 빈에서 자카르타 인증 방법 사용 권한

<ejb-jar>
  <assembly-descriptor>
    <method-permission>
      <description>The employee and temp-employee roles can access any method of the EmployeeService bean </description>
      <role-name>employee</role-name>
      <role-name>temp-employee</role-name>
      <method>
        <ejb-name>EmployeeService</ejb-name>
        <method-name>*</method-name>
      </method>
    </method-permission>
  </assembly-descriptor>
</ejb-jar>

또한 웹 애플리케이션의 경우와 마찬가지로 보안 도메인을 사용하여 Jakarta Enterprise Bean의 인증 및 권한 부여 메커니즘을 제한할 수 있습니다. 보안 도메인은 <security> 하위 요소의 jboss-ejb3.xml 설명자에 선언됩니다. 보안 도메인 외에도 <run-as-principal> 을 지정하여 Jakarta Enterprise Beans가 실행되는 주체를 변경할 수도 있습니다.

예제: Jakarta Enterprise Bean의 보안 도메인 선언

<ejb-jar>
    <assembly-descriptor>
        <security>
        <ejb-name>*</ejb-name>
        <security-domain>myDomain</security-domain>
        <run-as-principal>myPrincipal</run-as-principal>
        </security>
    </assembly-descriptor>
</ejb-jar>

elytron 하위 시스템을 사용하여 자카르타 권한 부여 활성화

레거시 보안 하위 시스템에서 자카르타 인증 비활성화

기본적으로 애플리케이션 서버는 레거시 보안 하위 시스템을 사용하여 Jakarta Authorization 정책 프로바이더 및 팩토리를 구성합니다. 기본 구성은 PicketBox의 구현으로 매핑됩니다.

Elytron을 사용하여 Jakarta Authorization 구성을 관리하거나 애플리케이션 서버에 설치하려는 기타 모든 정책을 관리하려면 먼저 레거시 보안 하위 시스템에서 Jakarta Authorization을 비활성화해야 합니다. 이를 위해 다음 관리 CLI 명령을 사용할 수 있습니다.

/subsystem=security:write-attribute(name=initialize-jacc, value=false)

이렇게 하지 않으면 서버 로그에 다음과 같은 오류가 발생할 수 있습니다. MSC000004: org.wildfly.security.policy 서비스 중지 중에 오류가 발생했습니다: java.lang.StackOverflowError.

자카르타 인증 정책 공급자 정의

elytron 하위 시스템은 Jakarta Authorization 사양을 기반으로 기본 제공 정책 프로바이더를 제공합니다. 정책 공급자를 생성하려면 다음 관리 CLI 명령을 실행할 수 있습니다.

/subsystem=elytron/policy=jacc:add(jacc-policy={})

reload

웹 배포에 대한 자카르타 인증 활성화

Jakarta Authorization 정책 공급자가 정의되면 다음 명령을 실행하여 웹 배포에 대해 Jakarta Authorization을 활성화할 수 있습니다.

/subsystem=undertow/application-security-domain=other:add(security-domain=ApplicationDomain,enable-jacc=true)

위의 명령은 jboss-web.xml 파일에 제공되지 않는 경우 애플리케이션의 기본 보안 도메인을 정의합니다. 이미 application-security-domain 이 정의되어 있고 Jakarta Authorization을 활성화하려는 경우 다음 명령을 실행할 수 있습니다.

/subsystem=undertow/application-security-domain=my-security-domain:write-attribute(name=enable-jacc,value=true)

자카르타 엔터프라이즈 빈 배포에 대한 자카르타 인증 활성화

Jakarta Authorization 정책 공급자가 정의되면 다음 명령을 실행하여 Jakarta Enterprise Beans 배포에 대한 Jakarta Authorization Authorization을 활성화할 수 있습니다.

/subsystem=ejb3/application-security-domain=other:add(security-domain=ApplicationDomain,enable-jacc=true)

위의 명령은 Jakarta Enterprise Bean의 기본 보안 도메인을 정의합니다. 이미 application-security-domain 이 정의되어 있고 Jakarta Authorization을 활성화하려는 경우 다음과 같이 명령을 실행할 수 있습니다.

/subsystem=ejb3/application-security-domain=my-security-domain:write-attribute(name=enable-jacc,value=true)

사용자 지정 Elytron 정책 공급자 생성

사용자 지정 정책 프로바이더는 권한을 확인하기 위해 일부 외부 인증 서비스와 통합하려는 경우와 같이 사용자 지정 java.security.Policy 가 필요할 때 사용됩니다. 사용자 지정 정책 프로바이더를 생성하려면 java.security.Policy 를 구현하고, 구현을 통해 사용자 지정 모듈을 생성 및 연결하며 elytron 하위 시스템의 모듈에서 구현을 사용해야 합니다.

/subsystem=elytron/policy=policy-provider-a:add(custom-policy={class-name=MyPolicyProviderA, module=x.y.z})

자세한 내용은 정책 공급자 속성을 참조하십시오.

참고

대부분의 경우 Jakarta EE 규격 애플리케이션 서버의 일부이므로 Jakarta Authorization 정책 공급자를 사용할 수 있습니다.