242.9. HTTP 기본 인증 사용

Netty HTTP 소비자는 사용할 보안 영역 이름을 다음과 같이 지정하여 HTTP 기본 인증을 지원합니다.

<route>
   <from uri="netty4-http:http://0.0.0.0:{{port}}/foo?securityConfiguration.realm=karaf"/>
   ...
</route>

영역 이름은 기본 인증을 활성화하기 위해 필수입니다. 기본적으로 JAAS 기반 인증자는 지정된 영역 이름(위의 예에서karaf)을 사용하고 인증을 위해 이 영역의 JAAS \{{LoginModule}}s를 사용합니다.

Apache Karaf / ServiceMix의 최종 사용자는 상자 밖으로 karaf 영역을 가지고 있으므로 위의 예제가 이러한 컨테이너의 상자에서 작동하지 않는 이유는 무엇입니까?

242.9.1. 웹 리소스에서 ACL 지정

org.apache.camel.component.netty4.http.SecurityConstraint 를 사용하면 웹 리소스에서 제한 사항을 정의할 수 있습니다. 그리고 org.apache.camel.component.netty.http.SecurityConstraintMapping 이 제공되어 역할을 사용하여 포함 및 제외를 쉽게 정의할 수 있습니다.

예를 들어 XML DSL에서 다음과 같이 제약 조건 빈을 정의합니다.

  <bean id="constraint" class="org.apache.camel.component.netty4.http.SecurityConstraintMapping">
    <!-- inclusions defines url -> roles restrictions -->
    <!-- a * should be used for any role accepted (or even no roles) -->
    <property name="inclusions">
      <map>
        <entry key="/*" value="*"/>
        <entry key="/admin/*" value="admin"/>
        <entry key="/guest/*" value="admin,guest"/>
      </map>
    </property>
    <!-- exclusions is used to define public urls, which requires no authentication -->
    <property name="exclusions">
      <set>
        <value>/public/*</value>
      </set>
    </property>
  </bean>

위의 제약 조건은 다음과 같이 정의합니다.

  • /*에 대한 액세스는 제한되어 있으며 모든 역할이 허용됩니다(사용자가 역할이 없는 경우)
  • /admin/*에 대한 액세스에는 admin 역할이 필요합니다.
  • /guest/*에 액세스하려면 admin 또는 guest 역할이 필요합니다.
  • /public/*에 대한 액세스 권한은 제외되므로 인증이 필요하지 않으므로 로그인하지 않고 모든 사용자에게 공개됩니다.

이 제약 조건을 사용하려면 다음과 같이 빈 ID를 참조해야 합니다.

<route>
   <from uri="netty4-http:http://0.0.0.0:{{port}}/foo?matchOnUriPrefix=true&amp;securityConfiguration.realm=karaf&amp;securityConfiguration.securityConstraint=#constraint"/>
   ...
</route>