Wir entwickeln eine iOS-App, bei der sich der Benutzer per E-Mail + Passwort (oder Handynummer) authentifizieren muss. Unser Backend besteht aus ein paar Microservices mit Akka-Http. Es muss schnell, skalierbar und gleichzeitig sein und die Authentifizierung + Autorisierung sollte für alle unsere Dienste funktionieren. Ich versuche herauszufinden, welche Authentifizierungsmethode verwendet werden soll. Akka-HTTP bietet derzeit Basic Auth und eine teilweise Implementierung von OAuth2.
Also haben wir zuerst die Standardauthentifizierung (zu einfach und nicht genug Funktionalität), Oauth1 (zu komplex) erwogen, also sind wir zu OAuth-2.0 übergegangen, weil es eine Art Standard ist.
Dann haben wir AWS Cognito in Betracht gezogen, weil es Oauth-2.0 und OpenID Connect kombiniert, die den Authentifizierungsmechanismus liefern, den OAuth2 nicht besitzt. Ссылка
Dann haben wir festgestellt, dass OAuth2 nur für die Authentifizierung mit einem Drittanbieter dient - wenn wir tatsächlich keinen Authentifizierungsanbieter von Drittanbietern benötigen - vielleicht müssen wir es selbst tun, und die Verwendung von Cognito ist ein Overkill, der extra API erzeugen würde Anrufe außerhalb unserer Microservices ...
Ich habe also ein wenig über das Erstellen eines eigenen benutzerdefinierten Auth-Providers mit WSESE-Spezifikationen gelesen: Ссылка Und ich habe dieses Beispiel auch mit Spray gefunden, aber ich bin mir sicher, dass es sich nicht so sehr von Akka-Http unterscheidet: Ссылка Es sieht zu vereinfacht aus und hat kein Token-Ablaufdatum ...
Also meine Frage ist, vermisse ich etwas? Welche Methode soll ich wählen und wo finde ich Beispiele dafür?
Ich fühle mich wie in Kreisen, wir müssen unseren eigenen Authentifizierungsanbieter von Grund auf neu schreiben, was irgendwie keinen Sinn ergibt. Schließlich benötigt fast jeder Authentifizierung und es sollte ein Standard sein.
Ich habe kürzlich SoftwareMills akka-http-session Bibliothek verwendet und festgestellt, dass sie einfach und leicht zu integrieren ist . Es unterstützt Case-Class-basierte Sessions, JWTs, Refresh-Tokens mit Pluggable-Storage, die Verwendung von Headern und CSRF-Tokens sowie einige nette einfache Anweisungen zur Verwendung in Routen.
Tags und Links scala authentication oauth-2.0 akka-http amazon-cognito