kerberos.net
Class KerberosClientSocketFactoryImpl

java.lang.Object
  extended bykerberos.net.KerberosClientSocketFactoryImpl
All Implemented Interfaces:
KerberosClientSocketFactory

public class KerberosClientSocketFactoryImpl
extends java.lang.Object
implements KerberosClientSocketFactory

Diese Klasse dient auf der Clientseite dazu, die KerberosSockets zu erzeugen. Die Factory speichert auch das Ticket-Granting-Ticket.

Author:
Stephan Koops

Field Summary
static int ARRAY_MAX_LAENGE
          Speichert die Standard-Maximallänge für zu empfangende Arrays für die ClientSocketFactory
static boolean debug
           
static int kdcAuthPort
           
static int STANDARD_SOCKET_ARRAY_MAX_LAENGE
          Speichert die Standard-Maximal-Array-Länge für die erzeugten KerberosSockets
 
Constructor Summary
KerberosClientSocketFactoryImpl(java.lang.String username, Passwort passwort, java.lang.String kdcHostnameOrIP)
          Dieser Konstruktor erzeugt eine Factory, mit deren Hilfe (mit der Methode connect(...)
 
Method Summary
 KerberosSocket connect(java.lang.String hostname, int port, java.lang.String zieldienst)
          Baut eine Verbindung zum Ziel-Server auf.
 void destroy()
          Zerstört die Tickets, so dass diese garantiert aus dem RAM gelöscht werden.
 void finalize()
           
 Logger getLogger()
          Gibt den aktuell verwendeten Logger zurück
 int getMaxArrayLength()
          Gibt die maximal erlaubte Länge für zu empfangende Nachrichten der erzeugten KerberosSockets zurück.
 void setLogger(Logger logger)
          Setzt den Logger, der ab sofort für die neu erstellten KerberosSockets verwendet wird.
 void setMaxArrayLength(int maximaleLänge)
          Setzt die maximal erlaubte Länge für zu empfangende Nachrichten
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

ARRAY_MAX_LAENGE

public static final int ARRAY_MAX_LAENGE
Speichert die Standard-Maximallänge für zu empfangende Arrays für die ClientSocketFactory

See Also:
Constant Field Values

STANDARD_SOCKET_ARRAY_MAX_LAENGE

public static final int STANDARD_SOCKET_ARRAY_MAX_LAENGE
Speichert die Standard-Maximal-Array-Länge für die erzeugten KerberosSockets

See Also:
Constant Field Values

kdcAuthPort

public static final int kdcAuthPort
See Also:
Constant Field Values

debug

public static final boolean debug
See Also:
Constant Field Values
Constructor Detail

KerberosClientSocketFactoryImpl

public KerberosClientSocketFactoryImpl(java.lang.String username,
                                       Passwort passwort,
                                       java.lang.String kdcHostnameOrIP)
                                throws UnerwarteteNachrichtException,
                                       NonceFalschException,
                                       PasswortDestroyedException,
                                       UnbekannterParticipalException,
                                       TicketUngueltigException,
                                       sun.net.ConnectionResetException,
                                       PasswortFalschException,
                                       ClientnameFalschException,
                                       UngültigerMessageTypException,
                                       ArrayZuLangException,
                                       java.io.IOException
Dieser Konstruktor erzeugt eine Factory, mit deren Hilfe (mit der Methode connect(...) ) Verbindungen zu beliebig vielen Ziel-Servern aufgebaut werden können.
Der Konstruktor sorgt für die Authentifizierung beim KDC und speichert auch das TGS-Ticket.

Parameters:
username -
passwort - Passwort des Benutzers. Das Passwort wird während der Verarbeitung zerstört.
kdcHostnameOrIP -
Throws:
java.io.IOException - wenn es beim Socket erzeugen oder bei der Anmeldung beim KDC Netzwerk-Probleme gab.
PasswortFalschException - Wenn das angegebene Passwort falsch ist.
KerberosException - Wenn es ein Authentifizierungsproblem o.ä. gab. Wird auch geworfen, wenn es ein Problem beim Erzeugen des internen Paketes gab.
UnerwarteteNachrichtException - Wird geworfen, wenn vom Server eine Nachricht kommt, mit dem die KerberosClientSocketFactory nichts anfangen kann. Wenn der KDC korrekt arbeitet, kommt dies aber nicht vor
java.lang.RuntimeException - Wird geworfen, wenn es Problem beim Schreiben auf einen ByteArrayOutputStream gab.
NonceFalschException
PasswortDestroyedException
UnbekannterParticipalException
TicketUngueltigException
sun.net.ConnectionResetException
ClientnameFalschException
UngültigerMessageTypException
ArrayZuLangException
Method Detail

connect

public KerberosSocket connect(java.lang.String hostname,
                              int port,
                              java.lang.String zieldienst)
                       throws UnbekannterParticipalException,
                              sun.net.ConnectionResetException,
                              FactoryDestroyedException,
                              UnerwarteteNachrichtException,
                              NonceFalschException,
                              TicketUngueltigException,
                              ServerdienstNichtVorhandenException,
                              PasswortFalschException,
                              ClientnameFalschException,
                              UngültigerMessageTypException,
                              ArrayZuLangException,
                              java.io.IOException
Baut eine Verbindung zum Ziel-Server auf.

Specified by:
connect in interface KerberosClientSocketFactory
Parameters:
hostname - Hostname des Ziel-Servers
port - Ziel-Port
zieldienst - Name des Ziel-Dienstes im KDC
Returns:
Gibt einen IKerberosSocket zurück, mit dessen Hilfe mit dem Server fast wie mit einem normalen Socket kommuniziert werden kann.
Throws:
java.io.IOException - wenn es beim Socket erzeugen oder bei der Anmeldung beim KDC Netzwerk-Probleme gab.
java.lang.RuntimeException - Kann geworfen werden, wenn es ein Problem beim Schreiben auf einen ByteOutputStream gab. Dieser Fehler sollte eigentlich nicht auftreten
UnbekannterParticipalException
sun.net.ConnectionResetException
FactoryDestroyedException
UnerwarteteNachrichtException
NonceFalschException
TicketUngueltigException
ServerdienstNichtVorhandenException
PasswortFalschException
ClientnameFalschException
UngültigerMessageTypException
ArrayZuLangException
See Also:
KerberosClientSocketFactory.destroy()

destroy

public void destroy()
Zerstört die Tickets, so dass diese garantiert aus dem RAM gelöscht werden. Danach ist diese Socket-Factory nicht mehr nutzbar! Die Methode accept(...) wirft dann eine FactoryDestroyedException

Specified by:
destroy in interface KerberosClientSocketFactory
See Also:
FactoryDestroyedException

finalize

public void finalize()
              throws java.lang.Throwable
Throws:
java.lang.Throwable
See Also:
java.lang.Object#finalize()

toString

public java.lang.String toString()

getMaxArrayLength

public int getMaxArrayLength()
Gibt die maximal erlaubte Länge für zu empfangende Nachrichten der erzeugten KerberosSockets zurück.

Specified by:
getMaxArrayLength in interface KerberosClientSocketFactory
See Also:
OutOfMemoryError

setMaxArrayLength

public void setMaxArrayLength(int maximaleLänge)
                       throws ZahlNichtPositivException
Setzt die maximal erlaubte Länge für zu empfangende Nachrichten

Specified by:
setMaxArrayLength in interface KerberosClientSocketFactory
Throws:
ZahlNichtPositivException
See Also:
getMaxArrayLength()

getLogger

public Logger getLogger()
Description copied from interface: KerberosClientSocketFactory
Gibt den aktuell verwendeten Logger zurück

Specified by:
getLogger in interface KerberosClientSocketFactory
Returns:
Gibt den derzeit aktuellen Logger zurück
See Also:
KerberosClientSocketFactory.setLogger(Logger)

setLogger

public void setLogger(Logger logger)
Description copied from interface: KerberosClientSocketFactory
Setzt den Logger, der ab sofort für die neu erstellten KerberosSockets verwendet wird. Für schon erzeugte Sockets müsste der Logger dort explizit verändert werden. Deshalb sollte der Logger einmal beim Starten der Anwendung gesetzt werden.

Specified by:
setLogger in interface KerberosClientSocketFactory
Parameters:
logger -