package org.mobicents.ipbx.session.security; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import javax.servlet.sip.*; import org.mobicents.ipbx.entity.User; public class BasicAuthentication { public SipServletResponse getAuthResponse(SipServletRequest request, String realm) { if(authenticate(request)) return null; SipServletResponse response = request.createResponse(401); response.setHeader("WWW-Authenticate", " Basic realm=\"" + realm + "\""); return response; } public boolean authenticate(SipServletRequest request) { String auth = request.getHeader("Authorization"); if(auth != null) { String base = auth.replace("Basic", "").trim(); String decodedBase = new String(Base64.decode(base)); String[] tokens = decodedBase.split(":"); String user = tokens[0]; String pass = tokens[1]; EntityManagerFactory factory = Persistence.createEntityManagerFactory("anpbx"); EntityManager manager = factory.createEntityManager(); manager.getTransaction().begin(); User u = (User) manager.createQuery("select user from User user where user.name=:uname") .setParameter("uname", user).getSingleResult(); manager.getTransaction().commit(); if(pass.equals(u.getPassword())) return true; } return false; } }