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:28 UTC
svn commit: rev 6666 - incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/realm
Author: vtence
Date: Sun Feb 15 14:41:28 2004
New Revision: 6666
Added:
incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/realm/
incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/realm/GroupAlreadyExistsException.java
incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/realm/GroupSupport.java
incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/realm/MutableRealm.java
incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/realm/PrincipalAlreadyExistsException.java
incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/realm/Realm.java
Log:
Initial import
Added: incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/realm/GroupAlreadyExistsException.java
==============================================================================
--- (empty file)
+++ incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/realm/GroupAlreadyExistsException.java Sun Feb 15 14:41:28 2004
@@ -0,0 +1,34 @@
+/*
+ * 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.realm;
+
+import java.security.Principal;
+
+/**
+ * An exception thrown when attempting to add a duplicate group
+ * to a realm.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ */
+public class GroupAlreadyExistsException
+ extends PrincipalAlreadyExistsException
+{
+ public GroupAlreadyExistsException( String s, Principal group )
+ {
+ super( s, group );
+ }
+}
Added: incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/realm/GroupSupport.java
==============================================================================
--- (empty file)
+++ incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/realm/GroupSupport.java Sun Feb 15 14:41:28 2004
@@ -0,0 +1,38 @@
+/*
+ * 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.realm;
+
+import java.security.Principal;
+import java.util.Set;
+
+/**
+ * Realms that want to provide support for groups of principals
+ * implement the GroupSupport interface.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ */
+public interface GroupSupport
+{
+ /**
+ * This method is used to acquire the set of group names associated with the
+ * given principal name.
+ *
+ * @param principal Principal for which the groups should be returned
+ * @return The set of groups associated with the given principal.
+ */
+ Set getGroupsForPrincipal( Principal principal );
+}
Added: incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/realm/MutableRealm.java
==============================================================================
--- (empty file)
+++ incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/realm/MutableRealm.java Sun Feb 15 14:41:28 2004
@@ -0,0 +1,89 @@
+/*
+ * 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.realm;
+
+import org.apache.janus.authentication.Credential;
+
+import java.security.Principal;
+import java.util.Set;
+
+/**
+ * This interface defines operation to make changes on realms.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ */
+public interface MutableRealm extends Realm
+{
+ /**
+ * Gets the subset of principals of this realm that matches the
+ * specified type.
+ *
+ * @param c The class of principals to filter
+ * @return The principals of this realm instance of the specified class
+ * as a Set.
+ */
+ Set getPrincipals( Class c );
+
+ /**
+ * This method is used to acquire the set of principals associated with a
+ * given group.
+ *
+ * @param group The principal of the group
+ * @return the set of principals members of the given group.
+ * @throws UnsupportedOperationException if this realm does not implement GroupSupport
+ */
+ Set getPrincipalsForGroup( Principal group );
+
+ /**
+ * Adds a new principal to the realm.
+ *
+ * @throws PrincipalAlreadyExistsException
+ * if the specified principal is already in this realm
+ */
+ Principal addPrincipal( String principalName )
+ throws PrincipalAlreadyExistsException;
+
+ /**
+ * Adds a new group to the realm.
+ *
+ * @throws GroupAlreadyExistsException
+ * if the specified group already exists
+ * in this realm
+ * @throws UnsupportedOperationException if this realm does not implement GroupSupport
+ */
+ Principal addGroup( String groupName ) throws GroupAlreadyExistsException;
+
+ /**
+ * Adds a credential object to a Principal set of credentials.
+ * <p/>
+ * If an equivalent credential object exists in the set of
+ * credentials associated to the specified Principal,
+ * this method has no effect.
+ *
+ * @return true If the credential object was added to the set
+ * of credentials of the principal, false otherwise
+ * @throws IllegalArgumentException if the specified principal does not
+ * belong to this realm
+ */
+ boolean addCredentialToPrincipal( Principal principal,
+ Credential credential );
+
+ /**
+ * @throws UnsupportedOperationException if this realm does not implement GroupSupport
+ */
+ boolean addPrincipalToGroup( Principal group, Principal principal );
+}
\ No newline at end of file
Added: incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/realm/PrincipalAlreadyExistsException.java
==============================================================================
--- (empty file)
+++ incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/realm/PrincipalAlreadyExistsException.java Sun Feb 15 14:41:28 2004
@@ -0,0 +1,41 @@
+/*
+ * 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.realm;
+
+import java.security.Principal;
+
+/**
+ * An exception thrown when attempting to add a duplicate principal
+ * to a realm.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ */
+public class PrincipalAlreadyExistsException extends Exception
+{
+ private final Principal m_principal;
+
+ public PrincipalAlreadyExistsException( String s, Principal principal )
+ {
+ super( s );
+ m_principal = principal;
+ }
+
+ public Principal getPrincipal()
+ {
+ return m_principal;
+ }
+}
Added: incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/realm/Realm.java
==============================================================================
--- (empty file)
+++ incubator/directory/janus/trunk/authentication/api/src/java/org/apache/janus/authentication/realm/Realm.java Sun Feb 15 14:41:28 2004
@@ -0,0 +1,53 @@
+/*
+ * 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.realm;
+
+import org.apache.janus.authentication.CredentialCollection;
+
+import java.security.Principal;
+
+/**
+ * The Realm interface allows for the abstraction of disparate
+ * user registries.
+ * <p/>
+ * A realm must adhere to the following rules:
+ * <ul>
+ * <li> Single authentication method
+ * <li> Single type of principals (excepting groups)
+ * <li> A credential collection uniquely identifies a single principal
+ * </ul>
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ */
+public interface Realm
+{
+ /**
+ * Validates the login information provided via
+ * the <code>CredentialCollection</code>.
+ *
+ * @param credentials a CredentialCollection containing a set
+ * of Credential objects representing the users
+ * set of proof of identity.
+ * @return the Principal identified by the credential collections
+ * provided or null if no match could be found.
+ * @throws UnsupportedOperationException if the authentication type of the credentials
+ * is not supported by the implementing realm
+ * @throws IllegalArgumentException if the credential collection provided does not
+ * adhere to the rules of the realm.
+ */
+ Principal validateCredentials( CredentialCollection credentials );
+}