001 /*
002 * CDDL HEADER START
003 *
004 * The contents of this file are subject to the terms of the
005 * Common Development and Distribution License, Version 1.0 only
006 * (the "License"). You may not use this file except in compliance
007 * with the License.
008 *
009 * You can obtain a copy of the license at
010 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
011 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
012 * See the License for the specific language governing permissions
013 * and limitations under the License.
014 *
015 * When distributing Covered Code, include this CDDL HEADER in each
016 * file and include the License file at
017 * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
018 * add the following below this CDDL HEADER, with the fields enclosed
019 * by brackets "[]" replaced with your own identifying information:
020 * Portions Copyright [yyyy] [name of copyright owner]
021 *
022 * CDDL HEADER END
023 *
024 *
025 * Copyright 2006-2008 Sun Microsystems, Inc.
026 */
027 package org.opends.server.extensions;
028
029
030
031 import java.nio.channels.SocketChannel;
032
033 import org.opends.server.api.ClientConnection;
034 import org.opends.server.api.ConnectionSecurityProvider;
035 import org.opends.server.types.DirectoryException;
036
037
038
039
040 /**
041 * This provides an implementation of a connection security provider that is
042 * intended to be used for internal client connections. It is exactly the same
043 * as the null connection security provider in that it doesn't actually protect
044 * anything, but the <CODE>isSecure</CODE> method always returns
045 * <CODE>true</CODE> because it is inherently secure by being an internal
046 * connection.
047 */
048 public class InternalConnectionSecurityProvider
049 extends NullConnectionSecurityProvider
050 {
051
052
053
054 /**
055 * Creates a new instance of this internal connection security provider.
056 */
057 public InternalConnectionSecurityProvider()
058 {
059 super();
060 }
061
062
063
064 /**
065 * Creates a new instance of this internal connection security provider with
066 * the provided information.
067 *
068 * @param clientConnection The client connection for this security provider
069 * instance.
070 * @param socketChannel The socket channel for this security provider
071 * instance.
072 */
073 protected InternalConnectionSecurityProvider(
074 ClientConnection clientConnection, SocketChannel socketChannel)
075 {
076 super(clientConnection, socketChannel);
077 }
078
079
080
081 /**
082 * {@inheritDoc}
083 */
084 public String getSecurityMechanismName()
085 {
086 return "INTERNAL";
087 }
088
089
090
091 /**
092 * {@inheritDoc}
093 */
094 public boolean isSecure()
095 {
096 // Internal connections are inherently secure.
097 return true;
098 }
099
100
101
102 /**
103 * Creates a new instance of this connection security provider that will be
104 * used to encode and decode all communication on the provided client
105 * connection.
106 *
107 * @param clientConnection The client connection with which this security
108 * provider will be associated.
109 * @param socketChannel The socket channel that may be used to
110 * communicate with the client.
111 *
112 * @return The created connection security provider instance.
113 *
114 * @throws DirectoryException If a problem occurs while creating a new
115 * instance of this security provider for the
116 * given client connection.
117 */
118 public ConnectionSecurityProvider newInstance(ClientConnection
119 clientConnection,
120 SocketChannel socketChannel)
121 throws DirectoryException
122 {
123 return new InternalConnectionSecurityProvider(clientConnection,
124 socketChannel);
125 }
126 }
127