2017-08-27 3 views
3

Ich habe mehrere Spring 4-Back-End-Webanwendungen geschrieben, die RESTful-APIs unterstützen. Ich habe es sogar geschafft, diese mit Spring Web Security zu sichern.Spring Security mit AWS IAM oder Cognito

In einem Fall haben wir unsere eigene Instanz von OpenAm installiert. Ein Benutzer, der zur Benutzeroberfläche des Clients wechselt, kann sich bei OpenAM anmelden, und die Client-Webanwendung ruft ein Token in einem Cookie ab. Wir übergeben dieses Token innerhalb eines Headers an das Back-End, und Spring Security verwendet dann einen CustomeUserDetailsService, um dieses Token auf OpenAM zu überprüfen, um festzustellen, ob es gültig ist. Wenn dies der Fall ist, erstellen wir im Spring Security-Kontext einen Benutzer, weisen Rollen zu und sehen dann, ob diese Rollen für die API gültig sind. Wenn dies der Fall ist, wird die API ausgeführt, andernfalls erhält der Benutzer einen 401-Sicherheitsfehler. Ich glaube, das ist OAuth2.

Wir haben es mit Okta auch genau so gemacht. Wir haben unsere eigene Client-Weboberfläche mit einer eigenen Anmeldeseite. Die Benutzeroberfläche ruft Okta an und erhält zwei (2) Token zurück. Wir verketten diese Tokens und übergeben sie an das Back-End, das den oben beschriebenen Prozess ausführt. Ich denke auch, das ist Oauth2.

Ich arbeite jetzt an einem neuen Projekt, und dieses Mal möchte ich meine Webanwendung mit AWS IAM sichern, da das Frontend und das Back auf einer AWS EC2 Instanz gehostet werden.

Ich habe das Web durchforstet, um genau herauszufinden, wie man das macht. Es gibt ein AWS IAM SDK und es gibt AWS Cognito. Mein erster Blick in IAM zeigte nicht ganz Oauth2, ich sah OpenID und SAML. Ich weiß, dass ich OpenID vs. Oauth2 vs. SAML nicht kenne.

So, ich bin auf der Suche nach Links zu Code-Basen oder Beispielcode oder Dokumentation, die mir helfen, meine Back-End-API mit Spring Security mit AWS IAM und/oder Cognito zu sichern. Übrigens möchte ich das Spring API Gateway nicht verwenden, da Spring Web Security dies bereits für mich erledigt.

Vielen Dank im Voraus für jede Hilfe!

Antwort

1

Ok, ich habe einige meiner eigenen Forschung auf diesem und von der AWS-Website habe ich dies:

AWS Identity and Access Management (IAM) können Sie sicher steuern den Zugriff auf AWS-Dienste und Ressourcen für Ihre Benutzer. Mit IAM, können Sie erstellen und verwalten AWS Benutzer und Gruppen, und Berechtigungen verwenden, um ihren Zugang zu dem AWS-Ressourcen

Aber ich für diese Suche bin nicht zulassen und verweigern. Ich habe eine Web-Anwendung, und ich könnte auch eine mobile Seite haben. Ich möchte einfach keine Benutzerverwaltung schreiben oder meine eigenen Anmeldesitzungen und Autorisierungen usw. bearbeiten. Also denke ich in diesem Fall:

Mit Amazon Cognito können Sie ganz einfach Benutzeranmeldungen und Signaturen hinzufügen. in Ihre Mobile- und Web-Apps. Mit Amazon Cognito haben Sie außerdem die Optionen , um Benutzer über soziale Identitätsanbieter wie Facebook, Twitter oder Amazon mit SAML-Identitätslösungen zu authentifizieren, oder indem Sie Ihr eigenes Identitätssystem verwenden. Darüber hinaus können Sie mit Amazon Cognito die Daten lokal auf den Geräten der Benutzer speichern, sodass Ihre Anwendungen auch dann funktionieren, wenn die Geräte offline sind. Sie können dann Daten zwischen Benutzern Geräte synchronisieren, so dass ihre App-Erfahrung konsistent bleibt, unabhängig von das Gerät, das sie verwenden.Mit Amazon Cognito können Sie sich darauf konzentrieren, großartige App-Erlebnisse zu erstellen , anstatt sich Gedanken über die Erstellung, Sicherung und Skalierung einer Lösung zu machen, um die Benutzerverwaltung, Authentifizierung und Synchronisierung von Geräten zu verwalten.

So AWS Cognito ist es ...

+1

Sie vielleicht einen Blick auf https://github.com/kdgregory/example-cognito-java und http nehmen wollen: //blog.kdgregory. com/2016/12/serverseitige Authentifizierung-mit-amazon.html. Der Autor hat eine Analyse von Cognito für eine grundlegende serverseitige App in Java geschrieben. – sdbol

+0

Großartig! Ich werde mir diese Dokumentation ansehen. Vielen Dank! – tjholmes66