搜索

7.5. 路由策略

download PDF

Camel 支持 RoutePolicies 的概念,可用于与 JBoss EAP 安全系统集成。目前有两种安全集成的场景。

7.5.1. Camel 调用 Jarkarta EE

当 camel 路由调用到安全 Jarkarta EE 组件时,它充当客户端,并且必须提供与调用关联的适当凭证。

您可以使用 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 附带的凭据与 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);

身份验证和授权将在 Jarkarta EE 层中进行。

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);
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.