I'm using camel blueprint.xml and I want to secure routes with Shiro. I
created the following class :

    public class ShiroSecurity {
        // Shiro configuration file path
           private static final String iniResourcePath = "shiro.ini";
           // Object used to encrypt/decrypt the token in the message.
           private static final byte[] passPhrase = {
                 (byte) 0x08, (byte) 0x09, (byte) 0x0A, (byte) 0x0B, (byte) 
0x0C,
(byte) 0x0D, (byte) 0x0E, (byte) 0x0F,
                 (byte) 0x10, (byte) 0x11, (byte) 0x12, (byte) 0x13, (byte) 
0x14,
(byte) 0x15, (byte) 0x16, (byte) 0x17};

           // list of token injectors used in this example
           private static ShiroSecurityTokenInjector shiroSecurityTokenInjector;
          
           /**
            * @param args
            * @throws Exception
            */
           public void test()
           {

              // Creation of the permission list supported by the policy.
              List<Permission> permissionsList = new ArrayList<Permission>();
              Permission permission = new 
WildcardPermission("zone1:readwrite:*");
              permissionsList.add(permission);

              ShiroSecurityPolicy policy = new 
ShiroSecurityPolicy(iniResourcePath,
passPhrase, true, permissionsList);

     SimpleRegistry reg = new SimpleRegistry();
              reg.put("securityPolicy", policy);
    
              // Instanciating the Shiro tokens
              // The ShiroSecurityToken constructor receives the userName and 
the
password as
              // parameters.
              ShiroSecurityToken shiroSecurityToken = new
ShiroSecurityToken("paul", "mccartney");
             
              // Instanciating the Shiro TokenInjectors objects
              shiroSecurityTokenInjector = new
ShiroSecurityTokenInjector(shiroSecurityToken, passPhrase);
         
           } }

with Java DSL we add policy like this:

  

       final CamelContext context = new DefaultCamelContext(reg);
                  context.addRoutes(new RouteBuilder()
                 {
                    public void configure() throws Exception
                    {
                      
onException(UnknownAccountException.class).handled(true).to("log:UnknownAccountException").to(
                             "file:Error/UnknownAccountException");
                      
onException(IncorrectCredentialsException.class).handled(true).to("log:IncorrectCredentialsException")
                             .to("file:Error/IncorrectCredentialsException");
                      
onException(LockedAccountException.class).handled(true).to("log:LockedAccountException").to(
                             "file:Error/LockedAccountException");
                      
onException(AuthenticationException.class).handled(true).to("log:AuthenticationException").to(
                             "file:Error/AuthenticationException");
                      
onException(CamelAuthorizationException.class).handled(true).to(
                             "log:CamelAuthorizationException
${in.header}").to("file:Error/CamelAuthorizationException");
                      
onException(NullPointerException.class).handled(true).to("log:Message not
secure").to(
                             "file:Error/NotSecureMessage");

                      
from("direct:client").process(shiroSecurityTokenInjector).policy(
                                     (Policy)
context.getRegistry().lookup("securityPolicy")).to("log:success");;
                       
                    }
                 });

                 context.start();

                 ProducerTemplate template = context.createProducerTemplate();

                 Endpoint endpoint = context.getEndpoint("direct:client");
                 Exchange exchange = endpoint.createExchange();
                 exchange.getIn().setBody("Data");
                 template.send(endpoint, exchange);

But How i can do this in blueprint.xml ?

I read that it should be something like that:

        <route id="timerToLog">
              <from uri="timer:foo?period=5000"/>
              <log message="Start"/>
              <to
uri="bean:com.ngt.shiro.ShiroSecurity?method=tokeninject()"/>
              <policy>..</policy>
        </route> 
    



--
View this message in context: 
http://camel.465427.n5.nabble.com/Camel-Shiro-Security-tp5775078.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to