// BasicAuthprincipal.java // $Id: BasicAuthPrincipal.java,v 1.1 1999/04/21 16:07:06 bmahe Exp $ // (c) COPYRIGHT MIT, INRIA and Keio, 1999. // Please first read the full copyright statement in file COPYRIGHT.html package org.w3c.jigsaw.acl; import java.security.Principal; import org.w3c.jigsaw.http.Request; import org.w3c.tools.codec.Base64Decoder; import org.w3c.tools.codec.Base64FormatException; import org.w3c.www.http.HttpCredential; /** * @version $Revision: 1.1 $ * @author Benoît Mahé (bmahe@w3.org) */ public class BasicAuthPrincipal implements Principal { protected String name = null; protected String password = null; protected String cookie = null; protected String getCookie() { return cookie; } public boolean equals(Object another) { if (another instanceof BasicAuthPrincipal) { return (cookie.equals(((BasicAuthPrincipal)another).getCookie())); } return false; } public String toString() { return cookie; } public int hashCode() { return cookie.hashCode(); } public String getName() { return name; } public BasicAuthPrincipal(Request request) throws InvalidAuthException { HttpCredential credential = null; credential = (request.isProxy() ? request.getProxyAuthorization() : request.getAuthorization()); if ( ! credential.getScheme().equalsIgnoreCase("Basic") ) { String msg = ("Invalid authentication scheme \"" + credential.getScheme() + " expecting \"Basic\""); throw new InvalidAuthException (msg) ; } // Decode the credentials: String decoded = null ; this.cookie = credential.getAuthParameter("cookie"); try { Base64Decoder b = new Base64Decoder (cookie) ; decoded = b.processString() ; } catch (Base64FormatException e) { String msg = "Invalid BASE64 encoding of credentials." ; throw new InvalidAuthException (msg) ; } // Get user and password: int icolon = decoded.indexOf (':') ; if ( (icolon > 0) && (icolon+1 < decoded.length()) ) { // ok, parse was find, check user: this.name = decoded.substring (0, icolon) ; this.password = decoded.substring (icolon+1) ; } else { String msg = "Invalid credentials syntax in " + decoded ; throw new InvalidAuthException (msg) ; } } }