2008-12-06 2 views

Antwort

0

Sie könnten ein vorhandenes Open-Source-Produkt, CAS, verwenden und es einfach implementieren, anstatt Ihr eigenes zu entwickeln. Auf diese Weise können Sie sich in andere Anwendungen integrieren, die dasselbe Protokoll unterstützen. Selbst wenn Sie sich dazu entschließen, Ihre eigenen zu implementieren, statt ihren Code zu verwenden, werden auf der Website viele Ideen präsentiert, die für Sie nützlich sein könnten.

0

Wenn die Anwendungen auf demselben Server gehostet werden, können Sie sie für die Verwendung von Single Sign On konfigurieren. Zum Beispiel wird dies in Tomcat mit einem Valve erreicht.

Wenn sich die Anwendungen in verschiedenen Umgebungen befinden, ist ein gesicherter Webdienst eine gute Idee. Sie könnten beispielsweise ein Paar aus öffentlichem und privatem Schlüssel erstellen und die Anwendung b (Server) zur Authentifizierung der Anwendung a (Client) auf dem Clientzertifikat verwenden. Dies bedeutet, dass die Anwendung a alle Anfragen an die Anwendung b mit dem Client-Zertifikat signiert. Mehr Details über die Architektur werden für eine vollständige Lösung benötigt.

0

Verwenden Sie einen Anwendungsserver? Was ist die Umgebung für Ihre Anwendungen?

Es gibt einen Standard für die Verbreitung von Identitäten mithilfe von Webdiensten namens Web Service Security UsernameToken Profile. Hier ist eine schnelle overview. Sie können Benutzername/Passwort oder verschiedene Token wie X.509-Zertifikat oder eine SAML-Assertion senden. Einige Anwendungsserver-Webdienststacks verarbeiten WSS UsernameToken-Profil, JBoss, Websphere und WebLogic. Andernfalls muss der Web-Service-Code damit umgehen. Dieser Ansatz ist abhängig von Ihrer Umgebung möglicherweise zu umständlich.

Es gibt einen Standard für einmaliges Anmelden, genannt SAML10. Auch dies kann für Ihren Anwendungsfall zu schwer sein.

0

In Oracle Land weiß ich, dass es das Konzept einer vertrauenswürdigen Anwendung gibt. Grundsätzlich, wenn Sie die Kontrolle über beide Anwendungen haben, können Sie es wie folgt einrichten:

Anwendung A sendet Anwendung B, 1) Benutzername und Kennwort von Anwendung A und 2) den Benutzernamen des aktuellen Benutzers. Da B Anwendung A kennt und vertraut, muss es die Anmeldeinformationen des Benutzers nicht überprüfen, da es weiß, dass Anwendung A dies bereits getan hat.

Ich nehme an, dass Sie, wenn Sie eine benutzerdefinierte Anwendung B haben, in der Lage sind, etwas wie das zu tun. Wenn Ihre SSO-Implementierung dies unterstützt, müssen Sie wahrscheinlich nicht viel tun, außer Ihre Webdienste zu entwerfen.

Good Luck

3

Unter der Annahme, diese Web-Anwendungen - Sie irgendeine Art von gemeinsamem Vertrauensmodell zwischen den Anwendungen implementieren müssen.

Unter keinen Umständen sollten Sie Ihre eigenen schreiben. Das ist zu leicht zu vermasseln und es gibt viele bestehende (sowohl offene als auch kommerzielle) zur Auswahl.

Hier sind die folgenden Optionen: 1 - Wenn alle Windows ausgeführt wird - Sie könnten nur Windows Native Authentication (aka SPNEGO) 2 - Sie könnten eine Art von SSO-System implementieren.Beliebte Systeme sind CAS, Oracle Access Manager, CA SiteMinder, Sun SSO und IBM Tivoli Access Manager. Während CAS Open-Source ist, können Sie mit den anderen auch die Autorisierung implementieren, während CAS nur die Authentifizierung durchführt.

Endlich - stellen Sie sicher, welche Option Sie auch wählen - dass es in die Authentifizierungs-Authentifizierungs-Schnittstelle Ihrer Sprache integriert ist &. In Java wäre das JAAS. In .NET wäre es das .NET Sicherheitsframework. Für PHP/Perl - Sie können Apache-Module nutzen. Der Vorteil besteht darin, dass Sie kein Sicherheitsexperte werden müssen und die Verwendung externer Systeme zur Authentifizierung vereinfacht wird, ohne Ihre App neu codieren zu müssen.

2

Sie könnten ein Authentifizierungsschema für öffentliche Schlüssel verwenden.

Erstellen Sie ein Schlüsselpaar mit einem öffentlichen und privaten Schlüssel (mit Javas Keytool, GNU GPG oder einem ähnlichen Tool). Verwenden Sie den privaten Schlüssel, um eine Information (z. B. einen Benutzernamen) auf Anwendung A zu signieren, und erstellen Sie eine Verknüpfung zu Anwendung B, auf die von Anwendung A aus zugegriffen werden kann und die signierten Daten enthält. Anwendung B kann dann den Benutzer anmelden, nachdem er mit dem öffentlichen Schlüssel verifiziert hat, dass die Anforderung tatsächlich von Anwendung A kam (die sie haben muss, wenn sie in der Lage ist, die Zeichenfolge zu entschlüsseln).

Sie können natürlich auch ein entgegengesetztes Schlüsselpaar erstellen, um auch andersherum zu navigieren, oder Sie können einfach den öffentlichen Schlüssel verwenden und ihn geheim halten (wodurch er zu einem Shared-Secret-System wird).

Wenn der Benutzer versucht, direkt auf Anwendung B zuzugreifen, können Sie ihn auch zur Anwendung A mit einem Parameter umleiten, der besagt, dass er aus Anwendung B stammt (oder eine Referrer-Prüfung durchführt). Wenn er bereits bei Anwendung A angemeldet ist, erstellen Sie den Link mit den signierten Daten und leiten Sie ihn weiter, andernfalls zeigen Sie ihm einen Anmeldebildschirm und leiten ihn nach der Anmeldung um.

Hoffe, dass hilft!