Durch Verwenden der einmaligen EGL-Anmeldung können Sie folgende Aspekte der Sicherheit zu einem einzigen Schritt verbinden: Authentifizierung für Ihre Anwendung (geschützt durch angepasste Sicherheit) und Authentifizierung für den EGL Rich UI-Proxy (geschützt durch JEE-Sicherheit). Sie können auch die Authentifizierung für Web-Services einschließen.
Zwar müssen die Benutzerregistrys, die Sie für die Authentifizierung für die Anwendung, den EGL Rich UI-Proxy und Web-Services verwenden, nicht gleich sein; die bei der einmaligen EGL-Anmeldung verwendete Benutzer-ID und das zugehörige Kennwort müssen jedoch in allen relevanten Benutzerregistrys vorhanden sein, um einen Authentifizierungsfehler zu vermeiden.
useridLabel TextLabel { text = "User ID:", width = 80 };
useridField TextField { width = 100 };
useridBox Box { children = [ useridLabel,
useridField ], margin = 3 };
passwordLabel TextLabel { text = "Password:", width = 80 };
passwordField PasswordTextField { width = 100 };
passwordBox Box { children = [ passwordLabel,
passwordField ], margin = 3};
button Button { text = "Log in", onClick ::= authenticate };
ui Box { background = "blue",
children = [ useridBox, passwordBox, button ],
columns = 1, width = 200 };
Bei jedem Aufrufen eines Web-Service, wird eine Anforderung an den EGL Rich UI-Proxy gesendet. Da der Proxy mithilfe der JEE-Basisauthentifizierung geschützt ist, muss ein Benutzer sich anmelden, bevor er auf den Proxy zugreifen kann. Falls der Benutzer noch nicht angemeldet ist, wird beim ersten Aufrufen eines Web-Services eine vom Browser bereitgestellte Anmeldeanzeige angezeigt, die dem Beispiel in 'Basisauthentifizierung zum Schützen des EGL Rich UI-Proxys verwenden' ähnelt.
Wenn sich der Benutzer mithilfe der oben erwähnten benutzerdefinierten Anmeldeanzeige für die Rich UI-Anwendung authentifiziert, übergibt EGL bei der einmaligen EGL-Anmeldung die Berechtigungsnachweise (Benutzer-ID und Kennwort) an die JEE-Sicherheit, sodass diese Berechtigungsnachweise auch für die Authentifizierung für den Proxy verwendet werden können. Die Authentifizierung für die Anwendung wird mit der Authentifizierung für den Proxy zu einem Schritt kombiniert. Damit die einmalige EGL-Anmeldung funktioniert, müssen Sie die Rich UI-Anmeldung so entwerfen, dass der Web-Service für die Authentifizierung bei der Anwendung aufgerufen wird, bevor ein beliebiger anderer Web-Service aufgerufen wird. Dadurch wird der vom Browser bereitgestellte Anmeldedialog umgangen.
function authenticate( e Event in )
ServiceLib.setProxyBasicAuthentication(useridField.text,passwordField.text );
srvc LDAPLoginService{ @bindService };
call srvc.login( useridField.text, passwordField.text )
returning to loginCallback onException loginException;
end
function withdraw( e Event in )
ServiceLib.setHTTPBasicAuthentication(srvc, useridField.text,
passwordField.text );
srvc BankingService{ @bindService };
call srvc.withdraw( useridField.text, passwordField.text )
returning to withdrawCallback onException withdrawException;
end
Wenn Sie die einmalige EGL-Anmeldung verwenden, um eine Authentifizierung für Ihre Anwendung und den EGL Rich UI-Proxy durchzuführen, tritt die Authentifizierung für den Proxy vor der Authentifizierung für Ihre Anwendung auf. Da der EGL Rich UI-Proxy mithilfe der JEE-Basisauthentifizierung geschützt ist, handhabt der Web-Container und nicht die Anwendung die Anmeldefehler. Da der Web-Container dazugekommen ist, können Sie sich nicht mehr in einem einzigen Schritt authentifizieren. An diesem Punkt muss sich der Benutzer zuerst für den EGL Rich UI-Proxy authentifizieren und sich danach bei der Anwendung und/oder den Web-Services anmelden.
Wenn Benutzer in dieser Anmeldeanzeige ein ungültiges Kennwort für die Authentifizierung für den EGL Rich UI-Proxy eingeben, wird ein vom Browser bereitgestellter Dialog angezeigt, sodass der Anmeldeversuch wiederholt werden kann. Bei der JEE-Basisauthentifizierung fordert der Web-Container den Browser auf, die Anzeige des Dialogs solange zu wiederholen, bis der Benutzer sich erfolgreich angemeldet hat. Die Anwendung kann nicht auf das Kennwort zugreifen, das ein Benutzer in diesen Dialog eingibt.
Nachdem Benutzer gültige Berechtigungsnachweise für den EGL Rich UI-Proxy eingegeben haben, müssen sie sich für die Anwendung und/oder die Web-Services authentifizieren. Die Anwendung sollte Benutzer anweisen, die gültige Benutzer-ID und das zugehörige Kennwort erneut in die benutzerdefinierte Anmeldeanzeige einzugeben und erneut auf die Schaltfläche 'Anmelden' zu klicken.
Falls ein Fehler auftritt, wenn Benutzer sich für einen durch die HTTP-Basisauthentifizierung geschützten Web-Service authentifizieren, wird die Steuerung an den Ausnahmebedingungshandler übergeben, der für die Aufrufanweisung angegeben ist. Ihre Rich UI-Anwendung muss diesen Fehler erkennen und entsprechende Anweisungen bereitstellen, sodass sich der Benutzer erneut authentifizieren kann. Das folgende Beispiel zeigt die Besonderheiten dieser Fehlerart:
Wenn die Authentifizierung sowohl für den EGL Rich UI-Proxy als auch für den Web-Service erfolgreich ist, aber ein Fehler auftritt, wenn Sie versuchen, sich für die Anwendung zu authentifizieren, muss Ihre Rich UI-Anwendung den Fehler handhaben. Wenn der Web-Service eine Antwort zurückgibt, wird die Steuerung an die 'Callback-' bzw. 'Rückruffunktion' übergeben, die für Ihre Aufrufanweisung angegeben ist.