Dateien UserRegistry.java
Die folgende Datei zeigt eine angepasste Eigenschaft, die für eine angepasste Benutzerregistry verwendet wird.
Weitere Informationen finden Sie unter "Eigenständige angepasste Registriys konfigurieren".
// 5639-D57, 5630-A36, 5630-A37, 5724-D18 // (C) COPYRIGHT International Business Machines Corp. 1997, 2005 // Alle Rechte vorbehalten. Lizenziertes Material - Eigentum der IBM. // // BESCHREIBUNG: // // Dies ist die Schnittstelle UserRegistry, die angepasste Registrys in // WebSphere Application Server implementieren, damit die // WebSphere-Sicherheit die angepasste Registry verwendet. // package com.ibm.websphere.security; import java.util.*; import java.rmi.*; import java.security.cert.X509Certificate; import com.ibm.websphere.security.cred.WSCredential; /** * Wenn Sie diese Schnittstelle implementieren, kann die Sicherheit von WebSphere Application Server * mit angepassten Registrys arbeiten. Diese Schnittstelle erweitert java.rmi.Remote, * da die Registry in einem fernen Prozess ausgeführt werden kann. * * Die Implementierung dieser Schnittstelle muss Implementierungen für * folgende Methoden bereitstellen: * * initialize(java.util.Properties) * checkPassword(String,String) * mapCertificate(X509Certificate[]) * getRealm * getUsers(String,int) * getUserDisplayName(String) * getUniqueUserId(String) * getUserSecurityName(String) * isValidUser(String) * getGroups(String,int) * getGroupDisplayName(String) * getUniqueGroupId(String) * getUniqueGroupIds(String) * getGroupSecurityName(String) * isValidGroup(String) * getGroupsForUser(String) * getUsersForGroup(String,int) * createCredential(String) **/ public interface UserRegistry extends java.rmi.Remote { /** * Initialisiert die Registry. Diese Methode wird beim Erstellen * der Registry aufgerufen. * * @param props Die Registry-spezifischen Eigenschaften, mit denen die * angepasste Registry initialisiert werden soll. * @exception CustomRegistryException beim Auftreten eines registrysspezifischen Fehlers. * @exception RemoteException bei Erweiterung von java.rmi.Remote. **/ public void initialize(java.util.Properties props) throws CustomRegistryException, RemoteException; /** * Prüft das Kennwort des Benutzers. Diese Methode wird aufgerufen, * um einen Benutzer zu authentifizieren, wenn Benutzername und * Kennwort angegeben werden. * * @param userSecurityName - Der Name des Benutzers. * @param password: Das Kennwort des Benutzers * @return: Ein gültiger Benutzername. Normalerweise ist das * der Name desselben Benutzers, dessen Kennwort zuvor geprüft wurde, * wurde, aber wenn die Implementierung einen anderen gültigen * Benutzernamen in der Registry zurückgeben möchte, ist das möglich. * @exception: CheckPasswordFailedException, falls die Kombination aus Benutzername * und Kennwort in der Registry nicht vorhanden ist. * @exception CustomRegistryException bei Auftreten eines Registry-spezifischen * Fehlers * @exception RemoteException bei Erweiterung von java.rmi.Remote **/ public String checkPassword(String userSecurityName, String password) throws PasswordCheckFailedException, CustomRegistryException, RemoteException; /** * Ordnet ein Zertifikat (X509-Format) einem gültigen Benutzer in der Registry zu. * Es wird verwendet, um den Namen im Zertifikat, der von einem Browser angegeben * wird, einem gültigen Benutzernamen in der Registry zuzuordnen. * * @param cert: die X509-Zertifikatskette * @return: der zugeordnete userSecurityName * @exception: CertificateMapNotSupportedException, wenn ein bestimmtes * Zertifikat nicht unterstützt wird. * @exception: CertificateMapFailedException, wenn die Zuordnung des Zertifikats * fehlschlägt. * @exception CustomRegistryException bei Auftreten eines Registry-spezifischen * Fehlers * @exception RemoteException bei Erweiterung von java.rmi.Remote **/ public String mapCertificate(X509Certificate[] cert) throws CertificateMapNotSupportedException, CertificateMapFailedException, CustomRegistryException, RemoteException; /** * Gibt den Realm der Registry zurück. * * @return: Der Realm. Der Bereich ist eine Registry-spezifische * Zeichenfolge, die den Bereich oder die Domäne * anzeigt, für den bzw. die diese Registry gültig * ist. Für OS400 und AIX ist * dies beispielsweise der Hostname des Systems, dessen Benutzerregistry * dieses Objekt darstellt. * Wird der Wert "null" von dieser Methode zurückgegeben, * wird für den Bereich standardmäßig der Wert "customRealm" festgelegt. * Es wird empfohlen, einen eigenen Wert für den Realm zu verwenden. * @exception CustomRegistryException bei Auftreten eines Registry-spezifischen * Fehlers * @exception RemoteException bei Erweiterung von java.rmi.Remote **/ public String getRealm() throws CustomRegistryException, RemoteException; /** * Ruft eine Liste der Benutzer ab, die einem Muster in der Registry entsprechen. * Die Maximalanzahl der zurückgegebenen Benutzer wird vom Parameter limit * definiert. * Diese Methode wird von der Administrationskonsole und Scripts (Befehlszeile aufgerufen, * um die Benutzer in der Registry so vorzubereiten, dass sie (die Benutzer) * Rollen zugeordnet werden können. * * @parameter pattern: Das Muster, mit dem eine Übereinstimmung erzielt werden * muss. (Mit a* stimmen beispielsweise alle userSecurityNames * überein, die mit a beginnen.) * @parameter limit: Die Maximalanzahl der zurückzugebenden Benutzer. * Das ist sehr nützlich in Situationen, in denen Tausende von Gruppen * in der Registry vorhanden sind und das Abrufen aller Benutzer nicht * praktikabel ist. Der Wert "0" bedeutet, dass alle Benutzer abgerufen * werden sollen und muss daher mit Vorsicht verwendet werden. * @return: Ein Result-Objekt, das die Liste der angeforderten Benutzer * und ein Flag enthält, wenn weitere Benutzer vorhanden sind. * @exception CustomRegistryException bei Auftreten eines Registry-spezifischen * Fehlers * @exception RemoteException bei Erweiterung von java.rmi.Remote **/ public Result getUsers(String pattern, int limit) throws CustomRegistryException, RemoteException; /** * Gibt den Anzeigenamen des mit userSecurityName angegebenen Benutzers zurück. * * Diese Methode wird nur aufgerufen, wenn die Benutzerdaten angezeigt * (z. B. nur zu Informationszwecken in der Administrationskonsole) und * deshalb nicht für die eigentliche Authentifizierung oder Berechtigung * verwendet werden. Falls keine Anzeigenamen in der Registry vorhanden sind, * null oder eine leere Zeichenfolge zurückgeben. * * Wenn Sie in der angepassten Registry von WebSphere Application Server 4.0 einen * Anzeigenamen für den Benutzer festgelegt haben und dieser vom Sicherheitsnamen * abgewichen ist, wurde bei der EJB-Methode getCallerPrincipal() und den Servletmethoden * getUserPrincipal() und getRemoteUser() der Anzeigename zurückgegeben. * In WebSphere Application Server Version 6.0 wird bei diesen Methoden standardmäßig der * Sicherheitsname zurückgegeben. Dies ist die empfohlene Verfahrensweise, weil der * Anzeigename nicht eindeutig ist und ansonsten Sicherheitslücken auftreten könnten. * * Nähere Informationen hierzu finden Sie in der Dokumentation. * * @parameter userSecurityName: der Name des Benutzers. * @return: Der Anzeigename des Benutzers. Der Anzeigename * ist eine Registry-spezifische Zeichenfolge, die * einen beschreibenden, nicht unbedingt eindeutigen * Namen für einen Benutzer angibt. Ist kein Anzeigename * vorhanden, wird null oder eine leere Zeichenfolge zurückgegeben. * @exception: EntryNotFoundException auslösen, wenn der Benutzername nicht vorhanden ist. * @exception CustomRegistryException bei Auftreten eines Registry-spezifischen * Fehlers * @exception RemoteException bei Erweiterung von java.rmi.Remote **/ public String getUserDisplayName(String userSecurityName) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Gibt die eindeutige ID für einen Benutzernamen zurück. Diese Methode wird * aufgerufen, wenn eine Berechtigung für einen Benutzer erstellt wird. * * @parameter userSecurityName: der Name des Benutzers. * @return: Die eindeutige ID des Benutzers. Die eindeutige * eines Benutzers ist eine Zeichenfolge, die sich * aus eindeutigen, Registry-spezifischen Daten für * die Darstellung des Benutzers zusammensetzt. In * der UNIX-Benutzerregistry kann die eindeutige ID * eines Benutzers beispielsweise die UID sein. * @exception: EntryNotFoundException auslösen, wenn der Benutzername nicht vorhanden ist. * @exception CustomRegistryException bei Auftreten eines Registry-spezifischen * Fehlers * @exception RemoteException bei Erweiterung von java.rmi.Remote **/ public String getUniqueUserId(String userSecurityName) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Gibt den Namen eines Benutzers zurück, wenn dessen eindeutige ID angegeben wurde. * * @parameter uniqueUserId: Die eindeutige ID des Benutzers. * @return: Der Name des Benutzers. * @exception: EntryNotFoundException, wenn die eindeutige Benutzer-ID nicht vorhanden ist. * @exception CustomRegistryException bei Auftreten eines Registry-spezifischen * Fehlers * @exception RemoteException bei Erweiterung von java.rmi.Remote **/ public String getUserSecurityName(String uniqueUserId) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Ermittelt, ob der Benutzername in der Registry vorhanden ist. * * @parameter userSecurityName: der Name des Benutzers * @return: Wert "true", wenn der Benutzer gültig ist. Andernfalls Wert "false". * @exception CustomRegistryException bei Auftreten eines Registry-spezifischen * Fehlers * @exception RemoteException bei Erweiterung von java.rmi.Remote **/ public boolean isValidUser(String userSecurityName) throws CustomRegistryException, RemoteException; /** * Ruft eine Liste von Gruppen ab, die mit einem Muster in der Registry übereinstimmen. * Die Maximalanzahl der zurückgegebenen Gruppen wird vom Parameter limit * definiert. * Diese Methode wird von der Administrationskonsole und Scripts (Befehlszeile * aufgerufen, um die Gruppen in der Registry so vorzubereiten, dass sie (die * Gruppen) Rollen zugeordnet werden können. * * @parameter pattern: Das Muster, mit dem eine Übereinstimmung erzielt werden * muss. (Beispiel: Mit a* werden alle groupSecurityNames gesucht, * die mit a beginnen.) * @parameter limit: Die Maximalanzahl der Gruppen, die zurückgegeben werden sollen. * Das ist sehr nützlich in Situationen, in denen Tausende von Gruppen * in der Registry vorhanden sind und das Abrufen aller Benutzer nicht * praktikabel ist. Der Wert 0 bedeutet, dass alle Gruppen abgerufen * werden sollen und muss daher mit Vorsicht verwendet werden. * @return Ein Result-Objekt, das die Liste der angeforderten Gruppen * und ein Flag enthält, das anzeigt, ob weitere Gruppen vorhanden sind. * @exception: CustomRegistryException bei Auftreten eines Registry-spezifischen * Fehlers * @exception RemoteException bei Erweiterung von java.rmi.Remote **/ public Result getGroups(String pattern, int limit) throws CustomRegistryException, RemoteException; /** * Gibt den Anzeigenamen für die durch den Gruppennamen angegebene Gruppe zurück. * * Diese Methode kann nur aufgerufen werden, wenn die Gruppeninformationen angezeigt * (z. B. in der Administrationskonsole) und daher bei der tatsächlichen Authentifizierung * bzw. Berechtigung nicht verwendet werden. Falls keine Anzeigenamen in der Registry * vorhanden sind, null oder eine leere Zeichenfolge zurückgeben. * * @parameter groupSecurityName: Der Name der Gruppe. * @return: Der Anzeigename für die Gruppe. Der Anzeigename * ist eine Registry-spezifische Zeichenfolge, die * einen beschreibenden, nicht unbedingt eindeutigen * Namen für eine Gruppe angibt. Ist kein Anzeigename * vorhanden, wird null oder eine leere Zeichenfolge zurückgegeben. * @exception: EntryNotFoundException auslösen, wenn der Gruppenname nicht vorhanden ist. * @exception CustomRegistryException bei Auftreten eines Registry-spezifischen * Fehlers * @exception RemoteException bei Erweiterung von java.rmi.Remote **/ public String getGroupDisplayName(String groupSecurityName) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Gibt die eindeutige ID für eine Gruppe zurück. * @parameter groupSecurityName: Der Name der Gruppe. * @return Die eindeutige ID der Gruppe. Die eindeutige ID für eine Gruppe ist * eine Zeichenfolge, die sich aus eindeutigen, Registry-spezifischen * Daten zur Angabe der Gruppe zusammensetzt. * In der UNIX-Benutzerregistry kann die eindeutige ID beispielsweise * die GID sein. * @exception: EntryNotFoundException auslösen, wenn der Gruppenname nicht vorhanden ist. * @exception CustomRegistryException bei Auftreten eines Registry-spezifischen * Fehlers * @exception RemoteException bei Erweiterung von java.rmi.Remote **/ public String getUniqueGroupId(String groupSecurityName) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Gibt die eindeutigen IDs aller Gruppen zurück, die die eindeutige ID eines * Benutzers enthalten. Wird bei der Erstellung einer Benutzerberechtigung * aufgerufen. * * @parameter uniqueUserId: Die eindeutige ID des Benutzers. * @return Eine Liste alle eindeutigen Gruppen-IDs, zu denen die eindeutige * Benutzer-ID gehört. Die eindeutige ID eines Eintrags ist * eine Zeichenfolge, die sich aus eindeutigen, Registry-spezifischen Daten * für die Darstellung des Eintrags zusammensetzt. Für die UNIX-Benutzerregistry * kann die eindeutige ID für eine Gruppe beispielsweise die GID und die eindeutige * ID für den Benutzer die UID sein. * @exception: EntryNotFoundException auslösen, wenn die eindeutige ID des Benutzers nicht vorhanden ist. * @exception CustomRegistryException bei Auftreten eines Registry-spezifischen * Fehlers * @exception RemoteException bei Erweiterung von java.rmi.Remote **/ public List getUniqueGroupIds(String uniqueUserId) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Gibt den Namen einer Gruppe zurück, wenn deren eindeutige ID angegeben wurde. * * @parameter: Die eindeutige ID der Gruppe. * @return: Der Name der Gruppe. * @exception: EntryNotFoundException, wenn die eindeutige Gruppen-ID nicht vorhanden ist. * @exception: CustomRegistryException bei Auftreten eines Registry-spezifischen * Fehlers * @exception RemoteException bei Erweiterung von java.rmi.Remote **/ public String getGroupSecurityName(String uniqueGroupId) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Ermittelt, ob der Gruppenname in der Registry vorhanden ist. * * @parameter groupSecurityName: der Name der Gruppe. * @return: Wert "true", wenn die Gruppe vorhanden ist, andernfalls Wert "false". * @exception CustomRegistryException bei Auftreten eines Registry-spezifischen * Fehlers * @exception RemoteException bei Erweiterung von java.rmi.Remote **/ public boolean isValidGroup(String groupSecurityName) throws CustomRegistryException, RemoteException; /** * Gibt die securityNames aller Gruppen zurück, die den Benutzer enthalten. * * Diese Methode wird von der Administrationskonsole und Scripts (Befehlszeile) * aufgerufen, um sicherzustellen, dass der Benutzer, der für die * RunAsRole-Zuordnung eingegeben wurde, zu der angegebenen Rolle * gehört. Am Anfang wird die Prüfung durchgeführt, um festzustellen, ob * die Rolle den Benutzer enthält. Wenn die Rolle den Benutzer nicht explizit * enthält, wird diese Methode aufgerufen, um die Gruppen, zu denen dieser Benutzer * gehört, abzurufen. Auf diese Weise können die Gruppen geprüft werden, die die * Rolle enthält. * * @parameter userSecurityName: der Name des Benutzers * @return: Eine Liste mit den Namen aller Gruppen, zu denen der Benutzer * gehört. * @exception: EntryNotFoundException auslösen, wenn der Benutzer nicht vorhanden ist. * @exception CustomRegistryException bei Auftreten eines Registry-spezifischen * Fehlers * @exception RemoteException bei Erweiterung von java.rmi.Remote **/ public List getGroupsForUser(String userSecurityName) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Ruft eine Liste der Benutzer in einer Gruppe ab. * * Die Maximalanzahl der zurückgegebenen Benutzer wird vom Parameter limit * definiert. * * Diese Methode wird von WebSphere Business Integration * Server Foundation Process Choreographer verwendet, wenn Staff-Zuordnungen * mit Gruppen modelliert werden. * * Wenn Sie in seltenen Fällen mit einer Registry arbeiten, bei der sich das * Abrufen aller Benutzer aus einer Ihrer Gruppen nicht empfiehlt (z. B. * bei einer großen Anzahl von Benutzern), können Sie die Ausnahme * NotImplementedException für diese bestimmte Gruppe auslösen. Vergewissern * Sie sich, dass die Staff-Zuordnungen nicht mit diesen Gruppen modelliert * werden, wenn WebSphere Business Integration Server Foundation Process * Choreographer installiert ist. Sollten keine Bedenken hinsichtlich * der Rückgabe der Benutzer aus Gruppen in der Registry bestehen, * wird empfohlen, diese Methode zu implementieren, ohne die Ausnahme * NotImplemented auzulösen. * * @parameter groupSecurityName: Der Name der Gruppe. * @parameter limit: Die Maximalanzahl der zurückzugebenden Benutzer. * Die Verwendung dieses Parameters empfiehlt sich, wenn eine * große Anzahl von Benutzern in der Registry vorhanden sind * und das Abrufen aller Benutzer nicht sinnvoll ist. Der * Wert 0 bedeutet, dass alle Benutzer abgerufen werden sollen, * und muss daher mit Vorsicht verwendet werden. * @return: Ein Result-Objekt, das die Liste der angeforderten Benutzer * enthält. Ein Flag zeigt an, ob weitere Benutzer vorhanden sind. * @deprecated: Diese Methode wird in Zukunft nicht mehr unterstützt. * @exception: NotImplementedException. Diese Ausnahme nur auslösen, * wenn es sich nicht empfiehlt, die Informationen für * eine dieser Gruppen aus der Registry abzurufen. * @exception: EntryNotFoundException auslösen, wenn die Gruppe nicht in der Registry * vorhanden ist. * @exception CustomRegistryException beim Auftreten eines Registry-spezifischen Fehlers * @exception: RemoteException bei Erweiterung von java.rmi.Remote **/ public Result getUsersForGroup(String groupSecurityName, int limit) throws NotImplementedException, EntryNotFoundException, CustomRegistryException, RemoteException; /** * Diese Methode wird in diesem Release intern vom WebSphere-Code implementiert. * Sie wird in diesem Release nicht für Implementierungen der angepassten * Registry aufgerufen. In der Implementierung einen Nullwert zurückgeben. * * Da diese Methode nicht aufgerufen wird, kann auch eine NotImplementedException * zurückgegeben werden, wie in der vorherigen Dokumentation erläutert wurde. * **/ public com.ibm.websphere.security.cred.WSCredential createCredential(String userSecurityName) throws NotImplementedException, EntryNotFoundException, CustomRegistryException, RemoteException; }