You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by vt...@apache.org on 2004/02/15 23:41:50 UTC

svn commit: rev 6667 - incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication

Author: vtence
Date: Sun Feb 15 14:41:50 2004
New Revision: 6667

Added:
   incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/AuthenticationException.java
   incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/Authenticator.java
   incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/Credential.java
   incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/CredentialCollection.java
Log:
Initial import

Added: incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/AuthenticationException.java
==============================================================================
--- (empty file)
+++ incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/AuthenticationException.java	Sun Feb 15 14:41:50 2004
@@ -0,0 +1,31 @@
+/*
+ *   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.janus.authentication;
+
+/**
+ * /**
+ * Thrown if there is a problem performing authentication.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ */
+public class AuthenticationException extends Exception
+{
+    public AuthenticationException( String s )
+    {
+        super( s );
+    }
+}

Added: incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/Authenticator.java
==============================================================================
--- (empty file)
+++ incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/Authenticator.java	Sun Feb 15 14:41:50 2004
@@ -0,0 +1,46 @@
+/*
+ *   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.janus.authentication;
+
+import org.apache.janus.Subject;
+
+/**
+ * <i><strong>Warning:</strong> This is experimental. Don't know yet if authenticator
+ * may use a single realm or several realms to perform authentication. In the case of several realms,
+ * each realm will probably support a unique authentication method and the argument to <code>authenticate</code>
+ * will change to a a grouping of credential collections.</i>
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ */
+public interface Authenticator
+{
+    /**
+     * Returns a populated Subject with the principals which represent the
+     * identity of the user as well as any other principal for which permissions may be associated.
+     * <p/>
+     * If the configured realm implementation has <code>GroupSupport</code> then this
+     * authenticator may choose to add a principal for each group the user is a member of.
+     *
+     * @param credentials A collection of credential objects provided as proof of identity
+     * @return a Subject populated with appropriate principals
+     * @throws AuthenticationException
+     *          thrown if there is a problem during authentication
+     */
+    Subject authenticate( CredentialCollection credentials )
+            throws AuthenticationException;
+}
+

Added: incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/Credential.java
==============================================================================
--- (empty file)
+++ incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/Credential.java	Sun Feb 15 14:41:50 2004
@@ -0,0 +1,84 @@
+/*
+ *   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.janus.authentication;
+
+import java.io.Serializable;
+
+/**
+ * Class representing a unit of proof of identity.
+ * <p/>
+ * A credential is represented by a type and a value.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ */
+public final class Credential implements Serializable
+{
+    private final String m_type;
+    private final Object m_value;
+
+    /**
+     * Constructs a new credential object with the given type
+     * and value.
+     */
+    public Credential( String type, Object value )
+    {
+        m_type = type;
+        m_value = value;
+    }
+
+    /**
+     * Returns the type of this credential object.
+     */
+    public String getType()
+    {
+        return m_type;
+    }
+
+    /**
+     * Returns the value of this credential object.
+     */
+    public Object getValue()
+    {
+        return m_value;
+    }
+
+    public boolean equals( Object o )
+    {
+        if ( this == o ) return true;
+        if ( !(o instanceof Credential) ) return false;
+
+        final Credential credential = (Credential) o;
+
+        if ( !m_type.equals( credential.m_type ) ) return false;
+        if ( !m_value.equals( credential.m_value ) ) return false;
+
+        return true;
+    }
+
+    public int hashCode()
+    {
+        int result;
+        result = m_type.hashCode();
+        result = 29 * result + m_value.hashCode();
+        return result;
+    }
+
+    public String toString()
+    {
+        return "[Credential: type=" + m_type + ", value=" + m_value + "]";
+    }
+}

Added: incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/CredentialCollection.java
==============================================================================
--- (empty file)
+++ incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/CredentialCollection.java	Sun Feb 15 14:41:50 2004
@@ -0,0 +1,61 @@
+/*
+ *   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.janus.authentication;
+
+import java.util.Collection;
+
+/**
+ * A homogeneous collection of credentials. That is, it contains
+ * <code>Credential</code> objects to use with the same authentication method.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ */
+public interface CredentialCollection
+{
+    /**
+     * Returns a subset of the current collection
+     * of credentials composed of all credentials
+     * of the given type.
+     *
+     * @param type of credential to be returned.
+     * @return a new CredentialCollection containing all
+     *         of the Credential objects of the given type.
+     */
+    CredentialCollection get( String type );
+
+    /**
+     * Checks if this credential collection contains credentials.
+     *
+     * @return true is this collection is empty, false if it contains
+     *         at least one credential.
+     */
+    boolean isEmpty();
+
+    /**
+     * Returns a collection of all the credential objects
+     * in the current collection.
+     *
+     * @return a collection of all the Credentials.
+     */
+    Collection elements();
+
+    /**
+     * Returns the authentication method to use with this
+     * CredentialCollection.
+     */
+    String getAuthenticationMethod();
+}
\ No newline at end of file