xsharp.eu • SingleSignOn
Page 1 of 2

SingleSignOn

Posted: Tue Jan 18, 2022 6:45 pm
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

SingleSignOn

Posted: Tue Jan 18, 2022 7:32 pm
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

SingleSignOn

Posted: Wed Jan 19, 2022 5:00 am
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

SingleSignOn

Posted: Wed Jan 19, 2022 8:28 am
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

SingleSignOn

Posted: Wed Jan 19, 2022 8:41 am
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

SingleSignOn

Posted: Wed Jan 19, 2022 9:10 am
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

SingleSignOn

Posted: Wed Jan 19, 2022 9:17 am
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

SingleSignOn

Posted: Wed Jan 19, 2022 10:10 am
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

SingleSignOn

Posted: Wed Jan 19, 2022 10:47 am
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

SingleSignOn

Posted: Wed Jan 19, 2022 11:04 am
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