Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi AWS Cognito Authentifizierung (https://www.delphipraxis.net/213680-aws-cognito-authentifizierung.html)

bernau 7. Sep 2023 18:23

AWS Cognito Authentifizierung
 
Hallo zusammen,


ich muss für einen Rest-Service, auf den ich zugreifen will, mich vorher über "Amazon AWS Cognito" authentifizieren. Habe ich noch nie gemacht. :-(

Ich denke dass ich mit dem AWS SDK for Delphi aus GetIt die richtige Komponente dafür gefunden habe. Aber ich kommen damit kein Stück weiter.



Hier ein kurzer Auszug, aus dem Mail des Service-Anbieters:


Zitat:

Die Authentifizierung läuft über Amazon Web Services Cognito via SRP.

Daher ist die einfachste Möglichkeit für die Umsetzung die Verwendung der AWS-Cognito-Bibliotheken. Wenn Sie im .NET-Universum unterwegs sind, dann finden Sie die entsprechende Bibliothek hier: https://www.nuget.org/packages/Amazo...uthentication/

Und die Dokumentation mit Anwendungsbeispielen im Github-Projekt hier: https://github.com/aws/aws-sdk-net-extensions-cognito. Dort den Abschnitt "Authenticating with Secure Remote Protocol (SRP)" beachten.

Damit könnte eine Anmeldung in C# so aussehen:


Code:
static async Task GetCredsAsync(string username, string password)
{
 AmazonCognitoIdentityProviderClient provider = new AmazonCognitoIdentityProviderClient(new Amazon.Runtime.AnonymousAWSCredentials());
 CognitoUserPool userPool = new CognitoUserPool("userpool_id", "client_id", provider, "client_secret");
 CognitoUser user = new CognitoUser(username, "client_id", userPool, provider, "client_secret");
 InitiateSrpAuthRequest authRequest = new InitiateSrpAuthRequest()
 {
 Password = password
 };
 AuthFlowResponse authResponse = await user.StartWithSrpAuthAsync(authRequest).ConfigureAwait(false);
 Console.WriteLine(authResponse.AuthenticationResult.IdToken);
}
Die Strings "username", "password", "userpool_id", "client_id" und "client_secret“ müssen dabei durch die entsprechenden Werte ersetzt werden. Das ID-Token muss als Bearer-Token zur Authentifizierung bei den API-Requests übergeben werden.

Sobald ich den Bearer-Token habe, sollte ich mit dem Rest keine Probleme haben.

Vielleicht kann mir jemand Tipps geben.

bernau 11. Sep 2023 12:09

AW: AWS Cognito Authentifizierung
 
push

keiner eine Idee?

jaenicke 11. Sep 2023 12:16

AW: AWS Cognito Authentifizierung
 
Ich bin dazu übergegangen in solchen Fällen auch mit C# zu arbeiten und die Funktionalität als DLL in Delphi einzubinden, wenn es dort zu viel Handarbeit wäre. Dafür verwende ich mein AppCentral Projekt, so dass ich über Interfaces direkt mit der C# DLL kommunizieren kann.

Union 11. Sep 2023 17:24

AW: AWS Cognito Authentifizierung
 
Oder du schaust Dir diese Präsentation an und hast danach einen Ansatz, jedenfalls für Javascript. Wenn Du das EMBA SDK verwenden willst, schaust Du diese

himitsu 11. Sep 2023 17:37

AW: AWS Cognito Authentifizierung
 
Wir nutzen seit langem Python (EXE) und seit 'ner Weile als Embedded. (damit auch möglich Funktionen/Klassen/Variablen des DelphiProgramms im Python zu nutzen)
Da hab ich zuletzt nun PIP zum Laufen gebracht
und durch Kapselung können wir nun auch extrem einfach an viel mehr Stellen Python im Code nutzen. (bisher für Reports, Listen und Dergleichen, sowie aktuell zur Anbindung eines externen CAD-Systems)

Für Python gibt es auch viele Komponenten, u.A. für sowas
https://medium.com/@houzier.saurav/a...n-6a2867dd02c6
Vielleicht helfen die Beschreigung auch für eine Implementation im Delphi.


Oder am Besten gleich die ScriptingAPI vom Windows, womit man dann mehrere ScriptSprachen nutzen kann (standardmäßig VBScript, JavaScript und PowerShell), sowie auch Python, wie man es im FinalBuilder bewundern kann.

mjustin 14. Sep 2023 10:00

AW: AWS Cognito Authentifizierung
 
+1 für die Lösung mittels C#.

Vorteile einer C# Lösung:

* Die bestehende, quelloffene Bibliothek von Amazon kann verwendet werden.
** Für diese existieren Code-Beispiele und Dokumentation.
** Sie wird direkt vom Hersteller gepflegt und ergänzt wenn es Erweiterungen der API gibt.
* .Net ist ohne zusätzliche Downloads verfügbar.
* Integration von C# und Delphi ist auf viele Arten möglich: dateibasiert, oder irgendeine Form der Interprozesskommunikation
* Bei Fragen und Problemen kann hier oder in anderen Foren (Stackoverflow) eine Lösung gesucht / gefunden werden.

Nachteile:
* C# Kenntnisse erforderlich.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz