[ https://issues.apache.org/activemq/browse/CAMEL-2796?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Willem Jiang updated CAMEL-2796: -------------------------------- Description: While it is possible to set up different policies to enforce authorization rules on Camel routes with the new camel-spring-security plugin, there is currently no way to tell which policy was being enforced when a org.springframework.security.SpringSecurityException is thrown. It would be very helpful to have a reference to the policy ID in the CamelAuthorizationException or in the headers so we can use it in the onException handlers. For example, let's say you have two policies: {code} <authorizationPolicy id="user" access="ROLE_USER" authenticationManager="authenticationManager" accessDecisionManager="accessDecisionManager" xmlns="http://camel.apache.org/schema/spring-security" /> <authorizationPolicy id="admin" access="ROLE_ADMIN" authenticationManager="authenticationManager" accessDecisionManager="accessDecisionManager" xmlns="http://camel.apache.org/schema/spring-security" /> {code} You also have two routes which use these policies: {code} <camelContext id="myCamelContext" xmlns="http://camel.apache.org/schema/spring"> <onException useOriginalMessage="true"> <exception>org.springframework.security.BadCredentialsException</exception> <handled><constant>true</constant></handled> <to uri="log:auth_error" /> </onException> <route> <from uri="direct:adminStart"/> <policy ref="admin"> <to uri="mock:end"/> </policy> </route> <route> <from uri="direct:userStart"/> <policy ref="admin"> <to uri="mock:end"/> </policy> </route> </camelContext> {code} Both of these routes will fail with an AccessDeniedException if the user doesn't have the proper role, but it would be desirable to handle exceptions for the ROLE_ADMIN failure differently than the ROLE_USER failure, maybe by using a <choice> element in the <onException> element. I know we have the CamelFailureEndpoint header, but this isn't very useful when more than one route uses the same authorization policy. was: While it is possible to set up different policies to enforce authorization rules on Camel routes with the new camel-spring-security plugin, there is currently no way to tell which policy was being enforced when a org.springframework.security.SpringSecurityException is thrown. It would be very helpful to have a reference to the policy ID in the CamelAuthorizationException or in the headers so we can use it in the onException handlers. For example, let's say you have two policies: <authorizationPolicy id="user" access="ROLE_USER" authenticationManager="authenticationManager" accessDecisionManager="accessDecisionManager" xmlns="http://camel.apache.org/schema/spring-security" /> <authorizationPolicy id="admin" access="ROLE_ADMIN" authenticationManager="authenticationManager" accessDecisionManager="accessDecisionManager" xmlns="http://camel.apache.org/schema/spring-security" /> You also have two routes which use these policies: <camelContext id="myCamelContext" xmlns="http://camel.apache.org/schema/spring"> <onException useOriginalMessage="true"> <exception>org.springframework.security.BadCredentialsException</exception> <handled><constant>true</constant></handled> <to uri="log:auth_error" /> </onException> <route> <from uri="direct:adminStart"/> <policy ref="admin"> <to uri="mock:end"/> </policy> </route> <route> <from uri="direct:userStart"/> <policy ref="admin"> <to uri="mock:end"/> </policy> </route> </camelContext> Both of these routes will fail with an AccessDeniedException if the user doesn't have the proper role, but it would be desirable to handle exceptions for the ROLE_ADMIN failure differently than the ROLE_USER failure, maybe by using a <choice> element in the <onException> element. I know we have the CamelFailureEndpoint header, but this isn't very useful when more than one route uses the same authorization policy. > camel-spring-security: provide reference to the policy when authorization > fails > ------------------------------------------------------------------------------- > > Key: CAMEL-2796 > URL: https://issues.apache.org/activemq/browse/CAMEL-2796 > Project: Apache Camel > Issue Type: Improvement > Affects Versions: 2.3.0 > Reporter: Paul Mietz Egli > Assignee: Willem Jiang > > While it is possible to set up different policies to enforce authorization > rules on Camel routes with the new camel-spring-security plugin, there is > currently no way to tell which policy was being enforced when a > org.springframework.security.SpringSecurityException is thrown. It would be > very helpful to have a reference to the policy ID in the > CamelAuthorizationException or in the headers so we can use it in the > onException handlers. > For example, let's say you have two policies: > {code} > <authorizationPolicy id="user" access="ROLE_USER" > authenticationManager="authenticationManager" > accessDecisionManager="accessDecisionManager" > xmlns="http://camel.apache.org/schema/spring-security" /> > <authorizationPolicy id="admin" access="ROLE_ADMIN" > authenticationManager="authenticationManager" > accessDecisionManager="accessDecisionManager" > xmlns="http://camel.apache.org/schema/spring-security" /> > {code} > You also have two routes which use these policies: > {code} > <camelContext id="myCamelContext" > xmlns="http://camel.apache.org/schema/spring"> > <onException useOriginalMessage="true"> > > <exception>org.springframework.security.BadCredentialsException</exception> > <handled><constant>true</constant></handled> > <to uri="log:auth_error" /> > </onException> > <route> > <from uri="direct:adminStart"/> > <policy ref="admin"> > <to uri="mock:end"/> > </policy> > </route> > <route> > <from uri="direct:userStart"/> > <policy ref="admin"> > <to uri="mock:end"/> > </policy> > </route> > </camelContext> > {code} > Both of these routes will fail with an AccessDeniedException if the user > doesn't have the proper role, but it would be desirable to handle exceptions > for the ROLE_ADMIN failure differently than the ROLE_USER failure, maybe by > using a <choice> element in the <onException> element. > I know we have the CamelFailureEndpoint header, but this isn't very useful > when more than one route uses the same authorization policy. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.