You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2005/01/31 04:26:06 UTC

svn commit: r149208 - in incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos: exception/ exception/KdcErrorNameExpiry.java exception/KerberosException.java kdc/KerberosException.java sam/ sam/SamException.java sam/SamVerifier.java

Author: akarasulu
Date: Sun Jan 30 19:26:04 2005
New Revision: 149208

URL: http://svn.apache.org/viewcvs?view=rev&rev=149208
Log:
changes ...

 o put note to e-man about KerberosException hierarchy
 o added couple examples to demo the hierarchy to keep if you think its cool
 o added SAM exception and interface


Added:
    incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/exception/
    incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/exception/KdcErrorNameExpiry.java
    incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/exception/KerberosException.java
    incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/sam/
    incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/sam/SamException.java
    incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/sam/SamVerifier.java
Modified:
    incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/kdc/KerberosException.java

Added: incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/exception/KdcErrorNameExpiry.java
URL: http://svn.apache.org/viewcvs/incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/exception/KdcErrorNameExpiry.java?view=auto&rev=149208
==============================================================================
--- incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/exception/KdcErrorNameExpiry.java (added)
+++ incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/exception/KdcErrorNameExpiry.java Sun Jan 30 19:26:04 2005
@@ -0,0 +1,44 @@
+/*
+ *   Copyright 2004 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+package org.apache.kerberos.exception;
+
+
+/**
+ * A Kerberos exception representing the expiration of a client entry within the
+ * user store (database).
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class KdcErrorNameExpiry extends KerberosException
+{
+    /** the code associated with this protocol error */
+    public static final int CODE = 1;
+
+    /** the standard message associated with this protocol error */
+    public static final String MSG = "Client's entry in database expired";
+
+
+    /**
+     * Creates an exception representing the expiration of a client entry within
+     * the database.
+     */
+    public KdcErrorNameExpiry()
+    {
+        super( 1, MSG );
+    }
+}

Added: incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/exception/KerberosException.java
URL: http://svn.apache.org/viewcvs/incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/exception/KerberosException.java?view=auto&rev=149208
==============================================================================
--- incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/exception/KerberosException.java (added)
+++ incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/exception/KerberosException.java Sun Jan 30 19:26:04 2005
@@ -0,0 +1,76 @@
+/*
+ *   Copyright 2004 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+package org.apache.kerberos.exception;
+
+
+/**
+ * The root of the Kerberos exception hierarchy.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class KerberosException extends Exception
+{
+    /** The Kerberos error code associated with this exception */
+    private final int errCode;
+
+
+    // ------------------------------------------------------------------------
+    // C O N S T R U C T O R S
+    // ------------------------------------------------------------------------
+
+
+    /**
+     * Creates a KerberosException with an error code and a message.
+     *
+     * @param errCode the error code associated with this KerberosException
+     * @param msg the standard Kerberos error message for this KerberosException
+     */
+    public KerberosException( int errCode, String msg )
+    {
+        super( msg );
+
+        this.errCode = errCode;
+    }
+
+
+    /**
+     * Creates a KerberosException with an error code, a message and an
+     * underlying throwable that caused this fault.
+     *
+     * @param errCode the error code associated with this KerberosException
+     * @param msg the standard Kerberos error message for this KerberosException
+     * @param cause the underlying failure if any
+     */
+    public KerberosException( int errCode, String msg, Throwable cause )
+    {
+        super( msg, cause );
+
+        this.errCode = errCode;
+    }
+
+
+    /**
+     * Gets the protocol error code associated with this KerberosException.
+     *
+     * @return the error code associated with this KerberosException
+     */
+    public int getErrorCode()
+    {
+        return this.errCode;
+    }
+}

Modified: incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/kdc/KerberosException.java
URL: http://svn.apache.org/viewcvs/incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/kdc/KerberosException.java?view=diff&r1=149207&r2=149208
==============================================================================
--- incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/kdc/KerberosException.java (original)
+++ incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/kdc/KerberosException.java Sun Jan 30 19:26:04 2005
@@ -16,7 +16,44 @@
  */
 package org.apache.kerberos.kdc;
 
-public class KerberosException extends Exception {
+
+public class KerberosException extends Exception
+{
+
+/*
+ * Not a good idea to create constant exceptions that are thrown in different
+ * places at different times by different threads.  This will be a problem when
+ * they have different stack traces from different worker threads.  You're asking
+ * for a race condition here where one stack trace will overwrite another if
+ * the same exception is thrown in two places.  Try just creating constants for
+ * various messages and their codes like (String) KDC_ERR_NONE_MSG and (int)
+ * KDC_ERR_NONE_CODE.  This may become unmanageable though.
+ *
+ * Another alternative would be to just create a KerberosException hierarchy
+ * and hardcode the messages and type values into the subclasses.  You should
+ * always create and throw a new exception rather than trying to reuse them as
+ * constants.
+ *
+ * Don't bother thinking about wasting an object creation everytime.  This is
+ * how it should happen.  Secondly exceptions are not common pathways within
+ * processing.  So they should not be occurring frequently.  It will not slow
+ * you down to create the exception from scratch.  As an example I started off
+ * the hierarchy within the new exception package so it does not conflict with
+ * this class.
+ *
+ * However I do have the feeling that you probably want a type safe enum here
+ * rather than exception codes only because things like KDC_ERR_NONE represent
+ * the absense of an error.  It seems like a protocol response code.  So I'd
+ * separate that out into its own type safe enum but use that enum within
+ * subclasses of the KerberosException.  This infact is exactly what I have
+ * done in the LDAP side and it works well.  When I bubble up an exception from
+ * deep down I catch it and return a PDU with the error code (LdapResultCode) I
+ * get from the exception.  Works out rather nicely athough initial setup costs
+ * some typing.
+ *
+ * Cheers,
+ * -aok
+ */
 
 	public static final KerberosException KDC_ERR_NONE = new KerberosException(0,
 			"No error");

Added: incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/sam/SamException.java
URL: http://svn.apache.org/viewcvs/incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/sam/SamException.java?view=auto&rev=149208
==============================================================================
--- incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/sam/SamException.java (added)
+++ incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/sam/SamException.java Sun Jan 30 19:26:04 2005
@@ -0,0 +1,51 @@
+/*
+ *   Copyright 2004 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+package org.apache.kerberos.sam;
+
+
+/**
+ * Base class for all SAM subsystem errors.
+ *
+ * @warning this should extend from KerberosException in o.a.k.exception.
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class SamException extends Exception
+{
+    public SamException()
+    {
+        super();
+    }
+
+
+    public SamException( String message )
+    {
+        super( message );
+    }
+
+
+    public SamException( Throwable cause )
+    {
+        super( cause );
+    }
+
+
+    public SamException( String message, Throwable cause )
+    {
+        super( message, cause );
+    }
+}

Added: incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/sam/SamVerifier.java
URL: http://svn.apache.org/viewcvs/incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/sam/SamVerifier.java?view=auto&rev=149208
==============================================================================
--- incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/sam/SamVerifier.java (added)
+++ incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/sam/SamVerifier.java Sun Jan 30 19:26:04 2005
@@ -0,0 +1,44 @@
+/*
+ *   Copyright 2004 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+package org.apache.kerberos.sam;
+
+
+/**
+ * Single-use Authentication Mechanism verifier (subsystem) interface.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public interface SamVerifier
+{
+    /**
+     * Verifies the single use password supplied.
+     *
+     * @param uid the unique id of the user within an authentication domain
+     * @param domain the authentication domain of the user
+     * @param sup the value of the single use password
+     * @return true if the single-use password is verified a correct, false otherwise
+     */
+    boolean verify( String uid, String domain, String sup ) throws SamException;
+
+    /**
+     * Gets the registered SAM algorithm type implemented by this SamVerifier.
+     *
+     * @return the type value for the SAM algorithm used to verify the SUP.
+     */
+    int getSamType();
+}