[aerogear-dev] [aerogear-controller] Handling SecurityProvider Exceptions/Events
Bruno Oliveira
bruno at abstractj.org
Fri Nov 2 13:04:18 EDT 2012
Hi my friend! First at all, great gist! And answering your question:
* Should it really be AeroGear-Controller that determines if a response should be returned to the caller, or if it should forward to a view?
IMO it should be forward to a view.
Few comments about that gist. If we bring SecurityResult to aerogear-controller we're bringing concepts which do not belong to aerogear-controller, concepts like unauthorized, forbidden and etc, that is my concern.
My suggestion is a little bit simple https://gist.github.com/c635dc2e5e82ba666ca3, the provider chooses how to implement that and uses http status responses by convention.
Wdyt? Makes sense?
--
"The measure of a man is what he does with power" - Plato
-
@abstractj
-
Volenti Nihil Difficile
On Friday, November 2, 2012 at 12:54 PM, Daniel Bevenius wrote:
> I've pushed a suggestion and tried to explain it here:
> https://gist.github.com/4001775
>
> Let me know what you think.
>
> Thanks,
>
>
> On 2 November 2012 08:45, Daniel Bevenius <daniel.bevenius at gmail.com (mailto:daniel.bevenius at gmail.com)> wrote:
> > That makes sense for sure. How about a SecurityDecision or
> > SecurityResult class that a SecurityProvider can return.
> >
> > public class SecurityDecision {
> > public boolean allowed() {
> > return allowed;
> > }
> >
> > public Response response() {
> > return response;
> > }
> >
> > }
> > Response would contain the statusCode and statusMessage to be returned
> > to the caller.
> >
> >
> > On 2 November 2012 07:58, Bruno Oliveira <bruno at abstractj.org (mailto:bruno at abstractj.org)> wrote:
> > > Great gist my friend! I was wondering about another alternative more simple.
> > > Currently AeroGear security implements HttpStatusAwareException (I'll rename
> > > to HttpStatusAware and qmx is responsible for the hipster name)
> > >
> > > public class AeroGearSecurityMeh implements HttpStatusAware {
> > >
> > > @Override
> > > public int getStatus() {
> > > //something here
> > > }
> > >
> > > @Override
> > > public String getMessage() {
> > > //something here
> > > }
> > > }
> > >
> > > Then in AeroGearSecurityProvider we could change the method return and do
> > > something like this:
> > >
> > > public class AeroGearSecurityProvider implements SecurityProvider {
> > >
> > > @Inject
> > > private AeroGearPrincipal principal;
> > >
> > > @Override
> > > public AeroGearSecurityMeh isRouteAllowed(Route route) throws
> > > ServletException {
> > >
> > > if (!principal.hasRoles(route.getRoles())) {
> > > return new AeroGearSecurityMeh(1, "Geez, authentication has
> > > failed");
> > > }
> > > }
> > > }
> > >
> > > Wdyt? Makes sense?
> > >
> > > --
> > > "The measure of a man is what he does with power" - Plato
> > > -
> > > @abstractj
> > > -
> > > Volenti Nihil Difficile
> > >
> > > On Thursday, November 1, 2012 at 6:14 AM, Daniel Bevenius wrote:
> > >
> > > Hi,
> > >
> > > I'm working on AEROGEAR-581 and have put together some background
> > > information and some prototype code in this gist:
> > > https://gist.github.com/3992369
> > >
> > > If you read the conclusion section you'll see that I'm not convinced
> > > that CDI events are a good fit in this specific situation, but I'd be
> > > happy to learn otherwise :)
> > >
> > > Thanks,
> > >
> > > /Dan
> > > _______________________________________________
> > > aerogear-dev mailing list
> > > aerogear-dev at lists.jboss.org (mailto:aerogear-dev at lists.jboss.org)
> > > https://lists.jboss.org/mailman/listinfo/aerogear-dev
> > >
> > >
> > >
> > > _______________________________________________
> > > aerogear-dev mailing list
> > > aerogear-dev at lists.jboss.org (mailto:aerogear-dev at lists.jboss.org)
> > > https://lists.jboss.org/mailman/listinfo/aerogear-dev
> >
>
>
> _______________________________________________
> aerogear-dev mailing list
> aerogear-dev at lists.jboss.org (mailto:aerogear-dev at lists.jboss.org)
> https://lists.jboss.org/mailman/listinfo/aerogear-dev
More information about the aerogear-dev
mailing list