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&securityConfiguration.realm=karaf&securityConfiguration.securityConstraint=#constraint"/> ... </route>