SingleSignOn

Deutschsprachiges X#-Forum – German language forum

Moderator: wriedmann

Frank Müßner
Posts: 280
Joined: Sat Dec 12, 2015 2:22 pm
Location: Germany

SingleSignOn

Post by Frank Müßner »

Hallo, in die Runde :-)

Ich sitze gerade an einer SingleSignOn Schnittstelle, oder die Verwendung. Ich versuche einen Webshop anzusprechen, der mir nach erfolgreicher Anmeldung eine SSO Antwort gibt, damit ich das Frontend aufrufen kann. Als Response bekomme ich einen HTML Code einer Website. Wie kann ich diese Seite aufrufen? Als Datei speichern und lokal mit dem Browser aufrufen klappt nicht. Die Beschreibung zu der Funktion ist nur:

Description:

Code: Select all

Redirects the client to the actual xxx frontend. This call returns a cookie that temporary grants
access to the xxx and redirects the client correspondingly.
Example Response:

Code: Select all

Redirect to xxx frontend with HTTP status 303 See Other
Weitere Beschreibung:
Der Response des SSO Calls mündet direkt in der jeweiligen Homepage

Leider weiß ich nicht was ich mit dem HTML Code machen muss. Lokal in einem Browser öffnen, klappt nicht. Geht das überhaupt von einer Desktop X# Applikation?

Für jeden Tipp würde ich mich freuen.
VG Frank
ic2
Posts: 1858
Joined: Sun Feb 28, 2016 11:30 pm
Location: Holland

SingleSignOn

Post by ic2 »

Hallo Frank,

Ich denke dass diese SSO-Antwort ausgeben werden soll, mit z.B. GetDocumentByURL. Dadurch wird die vollständige HTML-Antwort (als String) zurückgegeben und kann in ein Webbrowser-Steuerelement oder in ein Internetbrowser weitergeleitet werden. Die "redirect page"/"Umleitungsseite" wird dann anzeigt.

Durch die Ausgabe der richtigen URL sollte das Zugriffs-Cookie auf dem System gesetzt worden sein, was bedeutet, dass das Anzeigen der "Umleitungsseite" den erforderlichen Zugriff gewährt.

Siehe auch für etwas mehr Code meinen Beitrag auf https://www.xsharp.eu/forum/italian/257 ... exts#18904

Dick
User avatar
wriedmann
Posts: 3755
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

SingleSignOn

Post by wriedmann »

Hallo Frank,
ich verstehe nicht ganz, was Du mit einer Desktop-Applikation machen möchtest.
Möchtest Du den Webshop innerhalb Deiner Applikation anzeigen?
Dann kannst Du das Edge Control verwenden.
Oder hat der Webshop ein API, das Du nach den SSO-Anmeldung nutzen kannst? Dann solltest Du in der Doku nachschauen oder beim Hersteller nachfragen, was in so einem Fall gemacht werden soll.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Frank Müßner
Posts: 280
Joined: Sat Dec 12, 2015 2:22 pm
Location: Germany

SingleSignOn

Post by Frank Müßner »

Hallo Dick,
ich bekomme von der SSO Funktion einen String (gekürzt):

Code: Select all

<!DOCTYPE html>
<html dir="ltr" lang="en" class="no-js">
<head>
......
<meta name="tp-csrfkey" content="_csrf">
<meta name="tp-csrfheader" content="X-CSRF-TOKEN">
<meta name="tp-csrftoken" content="cd80a3b4-e154-4e81-9ea4-bd9a36860b6b">
.......
......
</html>
Wenn ich versuche den in einem Webbrowser-Steuerelement anzuzeigen mit:

Code: Select all

webBrowser1.Navigate("about:blank");
if (webBrowser1.Document != null)
{
     webBrowser1.Document.Write(string.Empty);
}
webBrowser1.DocumentText = htmldocumentstring;
wird mir zwar nach einigen Skript Fehlern eine Seite angezeigt, die aber kein redirekt zu dem Portal hat.


Hallo Wolfgang,

die Beschreibung ist wirklich so knapp, wie ich kopiert habe, einzig ein Abschnitt für die Parameter fehlt.

Auf Nachfrage kam nur die Antwort:
Der Response des SSO Calls mündet direkt in der jeweiligen Homepage

Ich möchte an liebsten im System Browser dann diesen Shop anzeigen lassen, und nicht innerhalb meiner Applikation.

Versuche nochmal beim Betreiber nachzufragen, ob es nicht irgendwelche Beispiele gibt.

Frank
User avatar
wriedmann
Posts: 3755
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

SingleSignOn

Post by wriedmann »

Hallo Frank,
die Anmelde-Daten hast Du in Deiner Applikation vorliegen?
Wenn nein: dann ruf einfach ein ShellExecute mit der Anmelde-URL auf, dann sollte der Rest alleine funktionieren.
Wenn ja: dann muss Dir der Hersteller ein Beispiel liefern, wie Du die übergeben kannst.
Ich habe beides mehrmals implementiert.
In Deinem Beispiel steht eh das Token mit drin, und mit dem solltest Du die Webseite dann aufrufen können.
Mir ist aber immer noch nicht ganz klar, was Du innerhalb Deiner Applikation machen möchtest.
Wolfgang
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Frank Müßner
Posts: 280
Joined: Sat Dec 12, 2015 2:22 pm
Location: Germany

SingleSignOn

Post by Frank Müßner »

Hallo Wolfgang,

ich habe Anmeldedaten für ein RESTful API Interface.
Diese sind andere als für das eigentliche WebPortal des Anbieters.

Über das API Interface bekomme ich ein JSON web Token (JWT) nach erfolgreicher Anmeldung. Das klappt.
Mit diesem Token kann ich über GET /sso den Html String bekommen.
Damit soll dann das Frontend gestartet werden können. In diesem Frontend werden dann Positionen in einen Warenkorb gespeichert, der anschließend wieder per API Interface und dem Token geladen wird.

Frank
User avatar
wriedmann
Posts: 3755
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

SingleSignOn

Post by wriedmann »

Hallo Frank,
ok, dann ist das klar.
Genau so was Ähnliches habe ich auch laufen.
Allerdings bekomme ich da über das API einen Base64-codierten String zurück, den ich dann per ShellExecute an den System-Browser übergeben kann.
Du bekommst ein HTML zurück, wenn ich das richtig verstanden habe.
Ich würde das HTML auf Platte speichern und dann die entsprechende Datei im Systembrowser öffnen lassen, mit ShellExecute und dem HTML-Dateinamen. Vielleicht geht das.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Frank Müßner
Posts: 280
Joined: Sat Dec 12, 2015 2:22 pm
Location: Germany

SingleSignOn

Post by Frank Müßner »

:-( Genau das war mein allererster Versuch.
Leider wird dann lokal geöffnet, und kein redirect auf eine Website.

Ich hoffe, ich bekomme noch eine bessere Antwort von den Betreibern. Das wird aber bestimmt dauern.

Frank
User avatar
wriedmann
Posts: 3755
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

SingleSignOn

Post by wriedmann »

Hallo Frank,
blöde Frage: hast Du Zugriff auf einen Webspace? Dann könntest Du das HTML dorthin laden und dann im Browser öffnen.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
ic2
Posts: 1858
Joined: Sun Feb 28, 2016 11:30 pm
Location: Holland

SingleSignOn

Post by ic2 »

Hallo Frank,
Frank Müßner wrote: Wenn ich versuche den in einem Webbrowser-Steuerelement anzuzeigen mit:

Code: Select all

webBrowser1.Navigate("about:blank");
if (webBrowser1.Document != null)
{
     webBrowser1.Document.Write(string.Empty);
}
webBrowser1.DocumentText = htmldocumentstring;
wird mir zwar nach einigen Skript Fehlern eine Seite angezeigt, die aber kein redirekt zu dem Portal hat.
Verwendet X# immer noch denselben Webbrowser wie VO? Dies ist ein alter IE-Browser, der die Skriptfehler verursacht. Was erklären könnte, dass das HTML funktioniert.; ich kann nicht sagen ob es funktionieren sollte da ich nur ein Teil sehe.

Ich habe einen Browser geschrieben in C#, der auf dem Edge Webbrowser2 basiert. Dies zeigt HTML korrekt und ohne Fehler an.

Dick
Post Reply