Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package voidpt.security; import javax.enterprise.context.spi.CreationalContext; import javax.enterprise.inject.spi.Bean; import javax.enterprise.inject.spi.BeanManager; import javax.enterprise.inject.spi.CDI; import javax.persistence.EntityNotFoundException; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationInfo; import org.apache.shiro.authc.AuthenticationToken; import org.apache.shiro.authc.SaltedAuthenticationInfo; import org.apache.shiro.authc.SimpleAccount; import org.apache.shiro.authc.UnknownAccountException; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.authz.AuthorizationInfo; import org.apache.shiro.realm.jdbc.JdbcRealm; import org.apache.shiro.subject.PrincipalCollection; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import voidpt.ejb.UserBean; import voidpt.entity.User; /** * * @author mcampos */ public class VoidCustomRealm extends JdbcRealm { private UserBean userbean; // Inicialization of the logger final Logger log = LoggerFactory.getLogger(this.getClass()); @Override public boolean supports(AuthenticationToken token) { return true; } protected AuthenticationInfo getInfo(String email) { if (email == null) { log.info("Empty Username"); throw new UnknownAccountException("Empty Username"); } if (this.userbean == null) { this.userbean = getUserBean(); } User user; try { user = this.userbean.getUserByEmail(email); } catch (EntityNotFoundException ex) { log.info("Not found"); throw new UnknownAccountException("Not found"); } return new VoidSaltedAuthenticationInfo(email, user.getPassword(), user.getSalt()); } @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { UsernamePasswordToken userPassToken = (UsernamePasswordToken) token; return this.getInfo(userPassToken.getUsername()); } @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { log.info("doGetAuthorizationInfo to be implemented"); throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } private UserBean getUserBean() { BeanManager beanManager = CDI.current().getBeanManager(); Bean xbean = (Bean) beanManager.getBeans(UserBean.class).iterator().next(); CreationalContext cc = beanManager.createCreationalContext(xbean); return (UserBean) beanManager.getReference(xbean, UserBean.class, cc); } }