@Bean public Config config() {
final CasClient casClient = new CasClient(); // casClient.setGateway(true); casClient.setCasLoginUrl(environment.getProperty("cas.login.page")); casClient.setCasProtocol(CasClient.CasProtocol.CAS20); casClient.setLogoutHandler(new CasSingleSignOutHandler()); casClient.addAuthorizationGenerator(new RolesAuthorizationGenerator());
final Clients clients = new Clients(environment.getProperty("pac4j.application.callback"), casClient);
final Config config = new Config(clients); config.addAuthorizer("admin", new RequireAnyRoleAuthorizer("ROLE_ADMIN")); config.addAuthorizer("user", new RequireAnyRoleAuthorizer("ROLE_USER", "ROLE_ADMIN")); config.addAuthorizer("custom", new CustomAuthorizer());
return config; } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new RequiresAuthenticationInterceptor(config, "CasClient", "user")).addPathPatterns("/cas/*"); registry.addInterceptor(new RequiresAuthenticationInterceptor(config, "CasClient", "admin")).addPathPatterns("/admin/*"); } @RequestMapping("/admin/index.html") public String protectAdmin(HttpServletRequest request, HttpServletResponse response, Map<String, Object> map) { return "admin"; }@Controller public class ErrorController extends BasicErrorController {
public ErrorController() { super(new DefaultErrorAttributes()); }
@RequestMapping( value = {"${error.path:/error}"}, produces = {"text/html"} ) public ModelAndView errorHtml(HttpServletRequest request) {
final HttpStatus status = getStatus(request); if (status == HttpStatus.UNAUTHORIZED) { return new ModelAndView("error401"); } else if (status == HttpStatus.FORBIDDEN) { return new ModelAndView("error403"); } else { return new ModelAndView("error500"); } }
private HttpStatus getStatus(HttpServletRequest request) { Integer statusCode = (Integer)request.getAttribute("javax.servlet.error.status_code"); if(statusCode != null) { try { return HttpStatus.valueOf(statusCode.intValue()); } catch (Exception e) { } } return HttpStatus.INTERNAL_SERVER_ERROR; } }profile : | id: mateusz | attributes: {roles=ROLE_USER, id=3, username=mateusz} | roles: [ROLE_USER] | permissions: [] | isRemembered: false |
SPRING WEB PAC4J DEMO 13:09:29.081 [http-nio-8443-exec-153] DEBUG o.p.s.w.RequiresAuthenticationInterceptor - authorizerName: admininternal error
Home
@Configurationpublic class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override protected void configure(HttpSecurity http) throws Exception {
http .exceptionHandling() .accessDeniedPage("/error"); }}--
You received this message because you are subscribed to the Google Groups "pac4j-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pac4j-users...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.