7.5. 路由策略
Camel 支持 RoutePolicies 的概念,可用于与 JBoss EAP 安全系统集成。目前有两种安全集成的场景。
7.5.1. Camel 调用 Jarkarta EE 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
当 camel 路由调用到安全 Jarkarta EE 组件时,它充当客户端,并且必须提供与调用关联的适当凭证。
您可以使用 ClientAuthorizationPolicy
分离路由,如下所示:
这不作为 camel 消息处理的一部分,不执行任何身份验证和授权。相反,它会将与 Camel Exchange 附带的凭据与 EJB3 层的调用相关联。
调用消息消费者的客户端必须在 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);
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);
身份验证和授权将在 Jarkarta EE 层中进行。
7.5.2. 保护 Camel 路由 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
为了保护 Camel 路由,您可以将 DomainAuthorizationPolicy
与路由关联。此策略需要针对给定安全域成功进行身份验证,并为 "Role2" 授权。
同样,调用消息消费者的客户端必须在 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);
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);