Alfresco Share Authentifizierung externe Anwendung

cancel
Showing results for 
Search instead for 
Did you mean: 
martinn
Member II

Alfresco Share Authentifizierung externe Anwendung

Hallo,
als Beginner mit Alfresco habe ich eine Frage:
Ich möchte Alfresco u.U. in einer Anwendung als Dokumentenablage nutzen. Hierzu habe ich bereits erste Schritte gemacht.
In meiner .net-Anwendung habe ich dann ein Fenter mit einem Treeview im linken Bereich und rechts würde ich gern die Dokumente anzeigen und zwar in der Form wie es auch in share sie anzeigt.
Im Prinzip klappt das auch. Ein Problem stellt jedoch die Authentifizierung dar. In der Anwendung habe ich zwar mit  'AuthenticationUtils.startSession("admin", "admin")' eine Anmeldung durchgeführt und auch beim Aufruf der einzelnen Dokumente z.B. mit 'http://ServerSmiley Tongueort/share/page/document-details?nodeRef=workspace://MyStore/a14e43……&ticket=TICKET_f3ec8c69021506fec93…218' das Ticket mitgesendet. Dennoch erscheint die gewünschte Seite erst nach erneuter Eingabe von Namen und PW im Fenster. Dies allerdings nur für die erste Seite, weitere Seiten werden dann in dieser Sitzung ohne diese Abfrage angezeigt. Irgendwie muss es doch möglich sein, auch diese erste Abfrage zu vermeiden. Weiß jemand Rat?
4 Replies
athoomi
Member II

Re: Alfresco Share Authentifizierung externe Anwendung

Hallo,

ich stehe vor einer ähnlichen Fragestellung.

Würde mich über Anregungen, Tipps,… freuen.
afaust
Master

Re: Alfresco Share Authentifizierung externe Anwendung

Hallo zusammen,

das Ticket kann so erst mal nur gegen den Alfresco Web Client angewendet werden - bei Share lässt sich das so nicht out-of-the-box verwenden. Mit einem neuen Filter in Share und ggf. Connector zw. Share und Repository lässt sich der Ticket Parameter bei einem Aufruf von Share an das Repository weiterleiten und damit eine automatische Anmeldung durchführen.
Eine Variante, die dagegen out-of-the-box schon funktioniert, wäre, das Ticket mit einem bestimmten Parameter/Cookie-Header mitzugegeben. Header werden bei Anfragen an das Repository weitergegeben und wenn es ein "bekannter" Header ist, der schon geprüft wird, funktioniert die Anmeldung transparent.

Gruß
Axel Faust
martinn
Member II

Re: Alfresco Share Authentifizierung externe Anwendung

Eine Variante, die dagegen out-of-the-box schon funktioniert, wäre, das Ticket mit einem bestimmten Parameter/Cookie-Header mitzugegeben. Header werden bei Anfragen an das Repository weitergegeben und wenn es ein "bekannter" Header ist, der schon geprüft wird, funktioniert die Anmeldung transparent.

Vielen Dank für die Antwort. Leider habe ich erst heute Zeit gefunden mich wieder mit diesem Thema zu befassen.
Gibt es da irgend eine Seite/Wiki oder Beispiel in dem so eine Technik bereits versucht wurde und die funktionierte? Denn so aus der Beschreibung oben heraus kann ich mir nur sehr vage vorstellen, wie ich so etwas umsetzen könnte. Zumal ich ja auch noch "sehr neu" bin mit Alfresco.
Alternativ wäre auch ein API-Aufruf ähnlich den AuthenticationUtils willkommen, über den man sich authentifizieren könnte. Aber so etwas habe ich noch nicht gefunden und bin nicht sicher, ob es so etwas überhaupt gibt.
afaust
Master

Re: Alfresco Share Authentifizierung externe Anwendung

Hallo,

der DefaultRemoteUserMapper (Teil des out-of-the-box external Authentication Subsystems http://wiki.alfresco.com/wiki/Alfresco_Authentication_Subsystems#External)ist ein einfaches Beispiel, welches demonstiert, wie Header aus einer HTTP Anfrage ausgewertet werden können. Ähnlich diesem Mapper könnte man eine kleine Komponente schreiben, welche das Ticket aus den HTTP Header auslesen kann. Wenn dann ein Request mit dem Ticket im Header an Share geht, leitet dieses das zwecks Authentifizierung weiter an das Repository, der Mapper greift, authentifiziert basierend auf dem Ticket und zwischen Share und Repository baut sich eine Session auf, die fortan die Credentials hält - das Ticket wird nur für die initiale Anmeldung benötigt, die damit für den Anwender transparent erfolgt.

Eine praktische Anleitung für eine solche Anpassung ist mir nicht bekannt - wenn es diese gäbe, wäre es aufgrund des beschränkten Problemumfangs schon 3/4 einer Lösung.

Was ist grob zu machen?
    Eigene Mapper Komponente wie oben beschrieben (Java Klasse mit ca. 5 Zeilen Code neben dem üblichen Boilerplate)
    Spring Context-XML für eigene Komponente vgl. mit external Subsystem (die neue Komponente wäre quasi ein eigenes Subsystem)
    Konfiguration in alfresco-global.properties Authentication Chain
Gruß
Axel