Hej.
Olałem domyślny system uwierzytelniania w jee i chciałbym napisać coś własnego. Niestety jee oferuje nam dość fajny system autoryzacji z którego chciałbym skorzystać. Czy da się jakoś to połączyć?
Napisałem mały filtr który powinien zmienić uprawnienia niestety nie działa :/

import java.io.IOException;
import java.security.*;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

public class SecurityFilter implements Filter {

    @Override
    public void doFilter(final ServletRequest request, final ServletResponse response,
            final FilterChain chain)
            throws IOException, ServletException {
        // specify a subset of permission which need to be enabled
        Permissions subset = new Permissions();
        subset.add(new RuntimePermission("user-role"));
        ProtectionDomain pd = new ProtectionDomain(null, subset);
        AccessControlContext context = new AccessControlContext(new ProtectionDomain[]{pd});
        RunBody runBody = new RunBody(request, response, chain);
        try {
            AccessController.doPrivileged(runBody, context);
        } catch (PrivilegedActionException ex) {
            //Logger.getLogger(NewFilter.class.getName()).log(Level.SEVERE, null, ex);
            throw new ServletException(ex);
        }
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }

    @Override
    public void destroy() {
    }

    class RunBody implements PrivilegedExceptionAction<Object> {

        ServletRequest request;
        ServletResponse response;
        FilterChain chain;

        public RunBody(ServletRequest request, ServletResponse response, FilterChain chain) {
            this.request = request;
            this.response = response;
            this.chain = chain;
        }
        
        @Override
        public Object run() throws Exception {
                HttpServletRequest req = (HttpServletRequest) request;
                response.getWriter().write( req.isUserInRole("user-role")?"true":"false" );
                AccessController.checkPermission(new RuntimePermission("user-role"));
                chain.doFilter(request, response);
            return null;
        }
    }
}

Kod wyświetla false i rzuca wyjątkiem. Nie zabardzo wiem jak to obejść.
Ktoś wie czy można coś z tym zrobić?