2016-03-21 7 views
1

私は春のセキュリティロールビード認可ポリシーを追加してルートを保護するために春のブートベースのapache camelウェブアプリケーションにしようとしています。キャメルルートのセキュリティポリシーを登録できません

私はスプリングブートベースではないベースとして、例(http://camel.apache.org/spring-security-example.html)を使用しています。

私はSpringブートベースのApacheのラクダアプリケーションを使用しているので、進める方法には固執していません。

1つ以上のラクダルートで参照される認可ポリシーを登録するためのコードでBean /コンポーネントを追加する方法を知りたいと思います。

スプリングブートが追加されました。私はCamel xml構成で特定のコンポーネントをどのように保持し、Java config/springブートでその他の必要な ビーンコンポーネントを追加することができるのかよくわかりません。

したがって、私はこの非春のブートの例をapache camelの春のブートベースのアプリケーションに変換することはできません。

問題に近づくための正しい方法で私を助けてくれる人がいますか?

私はjavaの設定で以下のように定義しました。

@Bean(name="roleUserEmp") 
     public SpringSecurityAccessPolicy roleUserEmp() { 
      SpringSecurityAccessPolicy policy = new SpringSecurityAccessPolicy("ROLE_USER_EMP"); 
      return policy; 
     } 

はまた、私は

org.apache.camel.spring.boot.CamelSpringBootInitializationException: org.apache.camel.FailedToCreateRouteException: Failed to create route createEmpFlow at: >>> Policy[ref:roleUserEmp] <<< in route: Route(createEmpFlow)[[From[direct:createEmpFlow]] -> [... because of No bean could be found in the registry for: roleUserEmp of type: org.apache.camel.spi.Policy 
    at org.apache.camel.spring.boot.RoutesCollector.onApplicationEvent(RoutesCollector.java:94) ~[camel-spring-boot-2.16.2.jar:2.16.2] 
    at org.apache.camel.spring.boot.RoutesCollector.onApplicationEvent(RoutesCollector.java:38) ~[camel-spring-boot-2.16.2.jar:2.16.2] 
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:163) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE] 
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:136) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:380) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:334) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:854) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE] 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:140) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:540) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE] 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE] 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE] 
    at org.springframework.boot.SpringApplication.doRun(SpringApplication.java:347) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:295) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1112) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1101) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE] 
    at com.company.application.EmpApplication.main(EmpApplication.java:48) [classes/:na] 
Caused by: org.apache.camel.FailedToCreateRouteException: Failed to create route createEmpFlow at: >>> Policy[ref:roleUserEmp] <<< in route: Route(createEmpFlow)[[From[direct:createEmpFlow]] -> [... because of No bean could be found in the registry for: roleUserEmp of type: org.apache.camel.spi.Policy 
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1072) ~[camel-core-2.16.2.jar:2.16.2] 
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:196) ~[camel-core-2.16.2.jar:2.16.2] 
    at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:947) ~[camel-core-2.16.2.jar:2.16.2] 
    at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:3258) ~[camel-core-2.16.2.jar:2.16.2] 
    at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:2981) ~[camel-core-2.16.2.jar:2.16.2] 
    at org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:175) ~[camel-core-2.16.2.jar:2.16.2] 
    at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2812) ~[camel-core-2.16.2.jar:2.16.2] 
    at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2808) ~[camel-core-2.16.2.jar:2.16.2] 
    at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2831) ~[camel-core-2.16.2.jar:2.16.2] 
    at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:2808) ~[camel-core-2.16.2.jar:2.16.2] 
    at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) ~[camel-core-2.16.2.jar:2.16.2] 
    at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:2777) ~[camel-core-2.16.2.jar:2.16.2] 
    at org.apache.camel.spring.boot.RoutesCollector.onApplicationEvent(RoutesCollector.java:92) ~[camel-spring-boot-2.16.2.jar:2.16.2] 
    ... 15 common frames omitted 
Caused by: org.apache.camel.NoSuchBeanException: No bean could be found in the registry for: roleUserEmp of type: org.apache.camel.spi.Policy 
    at org.apache.camel.util.CamelContextHelper.mandatoryLookup(CamelContextHelper.java:159) ~[camel-core-2.16.2.jar:2.16.2] 
    at org.apache.camel.model.TransactedDefinition.doResolvePolicy(TransactedDefinition.java:171) ~[camel-core-2.16.2.jar:2.16.2] 
    at org.apache.camel.model.PolicyDefinition.resolvePolicy(PolicyDefinition.java:158) ~[camel-core-2.16.2.jar:2.16.2] 
    at org.apache.camel.model.PolicyDefinition.createProcessor(PolicyDefinition.java:134) ~[camel-core-2.16.2.jar:2.16.2] 
    at org.apache.camel.model.ProcessorDefinition.makeProcessorImpl(ProcessorDefinition.java:534) ~[camel-core-2.16.2.jar:2.16.2] 
    at org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:495) ~[camel-core-2.16.2.jar:2.16.2] 
    at org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:219) ~[camel-core-2.16.2.jar:2.16.2] 
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1069) ~[camel-core-2.16.2.jar:2.16.2] 
    ... 27 common frames omitted 

おかげで以下のようにスタックトレースを持って、私が持っている

ルートは、私が使用してそれをラップしている、以下のように

<route id="createEmpFlow "> 

    <from uri="direct:createEmpFlow "/> 

     <policy ref="roleEmpUser"> 


     </policy> 
</route> 

ですpolicy camelタグはroleUserEmpを参照します。

+0

'SpringSecurityAccessPolicy'はルートポリシーではありません。使用しているルートを表示してください。 –

答えて

2

SpringSecurityAccessPolicyPolicyではありません。 SpringSecurityAuthorizationPolicyを使用し、accessDecisionManager,authenticationManagerSpringSecurityAccessPolicyで構成する必要があります。

@Bean(name="policy") 
public SpringSecurityAuthorizationPolicy springPolicy(AuthenticationManager authMgr, AccessDecisionManager accessMgr) { 
    SpringSecurityAuthorizationPolicy policy = new SpringSecurityAuthorizationPolicy(); 

    // .. configure 
    policy.setAuthenticationManager(authMgr); 
    policy.setAccessDecisionManager(accessMgr); 
    policy. setSpringSecurityAccessPolicy(new SpringSecurityAccessPolicy("ROLE_USER_EMP")); 
    return policy; 
} 
関連する問題