7.5. 경로 정책
Camel은 JBoss EAP 보안 시스템과의 통합에 사용할 수 있는 RoutePolicies 의 개념을 지원합니다. 현재 보안 통합을 위해 지원되는 두 가지 시나리오가 있습니다.
7.5.1. Cryostat에 대한 Camel 호출
제공된 경로가 보안 Cryostat 구성 요소를 호출할 때 클라이언트 역할을 하며 호출과 관련된 적절한 자격 증명을 제공해야 합니다.
다음과 같이 ClientAuthorizationPolicy
를 사용하여 경로를 분리할 수 있습니다.
CamelContext camelctx = new DefaultCamelContext(); camelctx.addRoutes(new RouteBuilder() { @Override public void configure() throws Exception { from("direct:start") .policy(new ClientAuthorizationPolicy()) .to("ejb:java:module/AnnotatedSLSB?method=doSelected"); } });
이는 camel 메시지 처리의 일부로 인증 및 권한 부여를 수행하지 않습니다. 대신 Camel Exchange와 함께 제공되는 인증 정보를 OpenSCAP3 계층 호출과 연결합니다.
메시지 소비자를 호출하는 클라이언트는 다음과 같이 AUTHENTICATION 헤더에 적절한 자격 증명을 제공해야 합니다.
ProducerTemplate producer = camelctx.createProducerTemplate(); Subject subject = new Subject(); subject.getPrincipals().add(new DomainPrincipal(domain)); subject.getPrincipals().add(new EncodedUsernamePasswordPrincipal(username, password)); producer.requestBodyAndHeader("direct:start", "Kermit", Exchange.AUTHENTICATION, subject, String.class);
Cryostat 계층에서 인증 및 권한 부여가 수행됩니다.
7.5.2. Camel 경로 보안
Camel 경로를 보호하려면 DomainAuthorizationPolicy
를 경로와 연결할 수 있습니다. 이 정책은 지정된 보안 도메인과 "Role2"에 대한 권한 부여에 대해 성공적으로 인증해야 합니다.
CamelContext camelctx = new DefaultCamelContext(); camelctx.addRoutes(new RouteBuilder() { @Override public void configure() throws Exception { from("direct:start") .policy(new DomainAuthorizationPolicy().roles("Role2")) .transform(body().prepend("Hello ")); } }); camelctx.start();
또한 메시지 소비자를 호출하는 클라이언트는 다음과 같이 AUTHENTICATION 헤더에 적절한 자격 증명을 제공해야 합니다.
ProducerTemplate producer = camelctx.createProducerTemplate(); Subject subject = new Subject(); subject.getPrincipals().add(new DomainPrincipal(domain)); subject.getPrincipals().add(new EncodedUsernamePasswordPrincipal(username, password)); producer.requestBodyAndHeader("direct:start", "Kermit", Exchange.AUTHENTICATION, subject, String.class);