2015-12-28 3 views
0

Я использую маршрут Apache Camel, и я хочу включить/отключить безопасность Shiro.Включение/отключение защиты Shiro - Apache Camel

Это маршрут (blueprint.xml):

<bean id="shiroPolicy" class="org.apache.camel.component.shiro.security.ShiroSecurityPolicy"> 
    <argument value="shiro.ini"/> 
</bean> 

<route> 
<from uri="bean:com.ngt.secured.ShiroSecurity?method=tokeninject(Exchange)"/> 
       <policy ref="shiroPolicy"> 
         <to uri="bean:com.ngt.secured.transform?method=addrip(Exchange)"/> 
         ... 
         some process.. 
       </policy> 
</route> 

Это маркер инъекции (ShiroSecurity.java):

public void tokeninject(Exchange exchange) throws Exception 
      { 
      ShiroSecurityToken shiroSecurityToken = new ShiroSecurityToken(login,password); 
      TestShiroSecurityTokenInjector shiroSecurityTokenInjector = new  TestShiroSecurityTokenInjector(shiroSecurityToken, passPhrase); 
      shiroSecurityTokenInjector.process(exchange); 
} 
private static class TestShiroSecurityTokenInjector extends ShiroSecurityTokenInjector { 
        public TestShiroSecurityTokenInjector(ShiroSecurityToken shiroSecurityToken, byte[] bytes) 
        { 
         super(shiroSecurityToken, bytes); 
        } 

        public void process(Exchange exchange) throws Exception { 
         exchange.getIn().setHeader("SHIRO_SECURITY_TOKEN", encrypt()); 
         //exchange.getIn().setBody("Beatle Mania"); 
        } 
      } 

в этом случае безопасности включена. Как отключить его? есть ли возможность установить On/Off?

ответ

0

Я наткнулся на это, ища решение проблемы с верблюдом-широ. Надеюсь, что ответ не слишком поздний.

Нет альтернативы/свойства, чтобы установить защиту в безопасности в apache верблюде. Вы можете поочередно достичь этого, включив выбор в настройку маршрута, как показано ниже, и вводите опцию включения/выключения в качестве свойства заголовка при вводе маркера безопасности:

<route> 
<from uri="bean:com.ngt.secured.ShiroSecurity?method=tokeninject(Exchange)"/> 
<choice> 
    <when> 
     <simple>${in.header.isSecured} == 'true'</simple> 
     <policy ref="shiroPolicy"> 
      <to uri="bean:com.ngt.secured.transform?method=addrip(Exchange)"/> 
      ... 
      some process.. 
     </policy> 
    </when> 
    <otherwise> 
     <to uri="bean:com.ngt.secured.transform?method=addrip(Exchange)"/> 
     ... 
     some process.. 
    </otherwise> 
</choice>    
</route> 

public void process(Exchange exchange) throws Exception { 
    exchange.getIn().setHeader("SHIRO_SECURITY_TOKEN", encrypt()); 
    exchange.getIn().setHeader("isSecured", Boolean.FALSE); 
    //exchange.getIn().setBody("Beatle Mania"); 
}