|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Programmiert wird gegen die Interfaces KerberosServerSocket,
KerberosSocketFactory und
KerberosSocket.
Das Interface KerberosSocket funktioniert im Prinzip wie ein normaler Socket,
nur eben verschlüsselt und authentifiziert über Kerberos. Erzeugt wird ein KerberosSocket
auf der Client-Seite von einer
KerberosClientSocketFactory, mit der Methode
connect(String, int String).
Die KerberosClientSocketFactory sorgt für die Authentifizierung gegenüber dem KDC.
Im KerberosSocket werden allerdings keine Streams zur Verfügung gestellt,
sondern die entsprechenden print- und read-Methoden sind direkt im Socket enthalten. Durchs Netz werden immer
Byte-Arrays übertragen. Wenn die Methode print(String) aufgerufen wird, dann werden die einzelnen Bytes des Strings
durchs Netz geschickt. Es ist auf der Empfangsseite egal, ob eine Nachricht als Sring oder Byte-Array gelesen
wird.
Auf der Serverseite arbeitet der KerberosServerSocket wie ein normaler java.net.ServerSocket.
Als konkrete Implementationen stehen die Klassen KerberosServerSocketImpl, KerberosClientSocketFactoryImpl zu Verfügung, welche die KerberosSockets erzeugen. Zum Erzeugung von KerberosClientsSocketFactory und KerberosServerSocket steht die KerberosFactory zur Verfügung.
Damit die LDAP-Leute schon praktisch gegen die Interfaces arbeiten können, stehen Testklassen zur Verfügung.
Dieses Interfaces dient für eine konkrete Verbindung zu einem Client. Diese ist dann schon aufgebaut und steht erfolgreich.
KerberosFactory
,
KerberosServerSocket
,
KerberosServerSocketImpl
,
KerberosSocketC
,
KerberosSocketS
,
KerberosClientSocketFactory
,
KerberosClientSocketFactoryImpl
Method Summary | |
void |
close()
Beendet die Verbindung. |
java.net.InetAddress |
getInetAddress()
Gibt die IP-Adresse zurück, zu dem der Socket verbunden ist. |
int |
getMaxArrayLength()
Gibt die maximal erlaubte Länge für zu empfangende Arrays zurück. |
int |
getPort()
Gibt den port zurück, zu dem der Socket verbunden ist. |
java.lang.String |
getUsername()
Diese Methode gibt den Namen des Benutzers zurück, der sich eingeloggt hat. |
boolean |
isClosed()
|
void |
print(byte[] zeichen)
Schickt ein Byte-Array (oder einen String) sofort verschlüsselt durchs Netz. |
void |
print(java.lang.String zeichen)
Schickt einen String durchs Netz |
byte[] |
printRead(byte[] zeichen)
Jetzt die synchrone Variante ... |
java.lang.String |
printRead(java.lang.String zeichen)
|
byte[] |
read()
Liest die nächsten Daten aus und gibt sie als Byte-Array bzw. als String zurück. |
java.lang.String |
readString()
Liest einen String aus dem Netz. |
void |
setMaxArrayLength(int i)
Setzt die maximal erlaubte Länge für zu empfangende Nachrichten |
Method Detail |
public void print(byte[] zeichen) throws java.io.IOException, PasswortFalschException, ClientnameFalschException, UnerwarteteNachrichtException, NonceFalschException, ErstEmpfangenException
zeichen
- byte-Array (oder String), das/der verschickt werden soll.
java.io.IOException
- Wenn es Netzwerk-Probleme gab.
PasswortFalschException
- Wenn eine Nachricht nicht entschlüsselt werden konnte, weil jemand ungültige
Nachrichten eingespeißt hat
KerberosException
- Alle hier geworfenen Exceptions außer die IOException erben von der Klasse
KerberosException. Weiter Informationen in den jeweiligen Exception-Klassen.
ClientnameFalschException
UnerwarteteNachrichtException
NonceFalschException
ErstEmpfangenException
read()
public void print(java.lang.String zeichen) throws java.io.IOException, PasswortFalschException, ClientnameFalschException, UnerwarteteNachrichtException, NonceFalschException, ErstEmpfangenException
java.io.IOException
PasswortFalschException
ClientnameFalschException
UnerwarteteNachrichtException
NonceFalschException
ErstEmpfangenException
print(byte[])
,
readString()
public byte[] printRead(byte[] zeichen) throws SendeArrayZuLangException, java.io.IOException, PasswortFalschException, ClientnameFalschException, TicketUngueltigException, UnerwarteteNachrichtException, NonceFalschException, ErstEmpfangenException
Jetzt die synchrone Variante ...
Sendet das übergebenen Byte-Array (bzw. den String) verschlüsselt ab und wartet
auf die Antwort vom Zieldienst.
Liest die nächsten Daten aus und gibt sie als Byte-Array (bzw. als String) zurück. Es ist egal,
ob die Daten von der gegenüberliegenden Seite als String oder als Byte-Array gesendet wurden.
Die Methode blockiert, wenn nicht genug Daten von der Gegenseite zur Verfügung stehen.
zeichen
-
java.io.IOException
KerberosException
- Alle hier geworfenen Exceptions außer IOException und ConnectionResetException
erben von der Klasse KerberosException. Weiter Informationen in den jeweiligen Exception-Klassen.
SendeArrayZuLangException
- Wird geworfen, wenn das gesendete Array zu lang war.
PasswortFalschException
ClientnameFalschException
TicketUngueltigException
UnerwarteteNachrichtException
NonceFalschException
ErstEmpfangenException
print(byte[])
,
print(String)
,
read()
,
readString()
public java.lang.String printRead(java.lang.String zeichen) throws SendeArrayZuLangException, java.io.IOException, PasswortFalschException, ClientnameFalschException, TicketUngueltigException, UnerwarteteNachrichtException, NonceFalschException, ErstEmpfangenException
SendeArrayZuLangException
java.io.IOException
PasswortFalschException
ClientnameFalschException
TicketUngueltigException
UnerwarteteNachrichtException
NonceFalschException
ErstEmpfangenException
printRead(byte[])
public byte[] read() throws SendeArrayZuLangException, java.io.IOException, PasswortFalschException, ClientnameFalschException, NonceFalschException, UnerwarteteNachrichtException, TicketUngueltigException, ErstSendenException
java.io.IOException
- Wenn es Netzwerkprobleme gab
KerberosException
- Alle hier geworfenen Exceptions außer die IOException erben von der Klasse
KerberosException. Weiter Informationen in den jeweiligen Exception-Klassen.
SendeArrayZuLangException
- Wird geworfen, wenn das letzte gesendete Array zu lang war. Der Entwickeler
muss überlegen, ob er programmiert bekommt, dass er die Nachricht nochmal sendet oder die Verbindung beendet.
In der Methode printRead(..) ist dies sicher einfacher.
PasswortFalschException
ClientnameFalschException
NonceFalschException
UnerwarteteNachrichtException
TicketUngueltigException
ErstSendenException
printRead(byte[])
,
NonceFalschException
,
PasswortFalschException
,
ClientnameFalschException
,
UnerwarteteNachrichtException
,
ErstEmpfangenException
public java.lang.String readString() throws SendeArrayZuLangException, java.io.IOException, PasswortFalschException, ClientnameFalschException, NonceFalschException, UnerwarteteNachrichtException, ErstSendenException, TicketUngueltigException, ErstSendenException
SendeArrayZuLangException
java.io.IOException
PasswortFalschException
ClientnameFalschException
NonceFalschException
UnerwarteteNachrichtException
ErstSendenException
TicketUngueltigException
read()
public void close() throws java.io.IOException
java.io.IOException
Socket.close()
public boolean isClosed()
public java.lang.String getUsername()
public int getMaxArrayLength()
public void setMaxArrayLength(int i) throws ZahlNichtPositivException
ZahlNichtPositivException
getMaxArrayLength()
public java.net.InetAddress getInetAddress()
Socket.getInetAddress()
public int getPort()
Socket.getPort()
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |