Das Ziel dieses Projekts besteht darin, Benutzern unter AWS S3-Buckets (gemeinsam genutzte S3-Buckets mit einem „Ordner“ für jeden Benutzer) einen Bereich mit einer Weboberfläche zum Hochladen, Durchsuchen, Herunterladen und Entfernen von Dateien bereitzustellen.
Dieser PoC wurde zwischen asamo7 und davidayalas durchgeführt.
Merkmale:
Es ist möglich, „Benutzer“ und „Administratoren“ einzurichten.
Ein Benutzer fügt seinen Benutzernamen (E-Mail aus der SAML-Antwort) zu jedem Schlüssel hinzu (Hochladen, Durchsuchen, Löschen ...). Ein Administrator kann alles unter einem Bucket oder Ordner sehen. Siehe „permissions.csv“.
Ein Benutzer kann Ordner hochladen (Drag & Drop) und die Struktur wird in S3 neu erstellt
Dateien können heruntergeladen werden (keine Verzeichnisse)
Ordner können gelöscht werden (nicht leer enthalten)
Ein Benutzer kann einen Ordner erstellen
Installieren Sie das serverlose Framework: https://www.serverless.com/framework/docs/getting-started/
Richten Sie AWS-Anmeldeinformationen ein: https://www.serverless.com/framework/docs/providers/aws/cli-reference/config-credentials/
Aktualisieren Sie „serviceName“ mit Ihrem eigenen in setup.demo.json
Führen Sie first-deploy.sh aus (erteilen Sie ihm ausführbare Berechtigungen).
$ chmod +x first-deploy.sh && sh first-deploy.sh
Es werden einige Dateien geändert, damit alles funktioniert. Gehen Sie zu https://samltest.id/upload.php und laden Sie docs/sp-metadata.xml manuell hoch.
Starten Sie Ihren Server und versuchen Sie es
$ npm run serve --prefix=frontend
Installieren Sie alle Abhängigkeiten
$ npm install serverless-s3-sync
$ npm --prefix ./backend/custom-auth install ./backend/custom-auth
$ npm --prefix ./backend/login install ./backend/login
$ npm --prefix ./frontend install ./frontend
Aktualisieren Sie „serviceName“ mit Ihrem eigenen in setup.demo.json
Grundlegende Umgebungsvariablen für SAML (Ihre eigenen, da die Demo eingerichtet ist):
Generieren Sie eine Frontend-Verteilung
$ cd frontend
$ npm run build
Demo bereitstellen
$ sls deploy
$ sls info | grep GET -m 1 | awk -F[/:] '{printf "const endpoint={get(){return '''https://"$4"/demo/''';}};export default endpoint;"}' > frontend/src/assets/js/endpoint.js
$ sls s3sync
Aktualisieren Sie Ihre sp-metadata.xml mit:
Laden Sie diese Datei auf https://samltest.id/upload.php hoch
Hochladen: Dieses Lambda generiert die Signatur für gültige Uploads.
Durchsuchen: Dieses Lambda ruft die Objekte in einem Pfad ab
Löschen: Dieses Lambda löscht rekursiv alle Objekte in einem Pfad
Herunterladen: Dieses Lambda generiert vorsignierte URLs für Objekte, die sicher heruntergeladen werden können
Anmeldung: in diesem Fall SAML-basiert, um ein JWT-Token zu generieren.
Das Standard-Setup verweist auf samltest.id. Metadaten für samltest.id werden mit https://www.samltool.com/sp_metadata.php generiert:
Unter „Attribute Consume Service Endpoint (HTTP-POST)“ müssen Sie Ihren API-Endpunkt angeben:
https://${api gateway id}.execute-api.${region}.amazonaws.com/${stage}/login/callback
Aktualisieren Sie in „entityID“ Ihren Aussteller (dasselbe gilt für die Umgebungsvariable für den Login-Handler in serverless.yml).
Benutzerdefinierter Autorisierer: Validiert das JWT-Token und fügt zusätzliche Berechtigungen aus CSV hinzu
Neues Frontend basiert auf Vue. Befolgen Sie dann die Anleitung „Erste Schritte“.
Erstellen Sie die Datei „frontend/src/assets/js/endpoint.js“ mit dem folgenden Inhalt und ersetzen Sie die Werte durch entsprechende Werte
const endpoint = {
get ( ) {
return 'https://${your api id}/${your stage}/' ;
}
} ;
export default endpoint ;
Oder Sie können es aus der SLS-Info-Ausgabe generieren:
$ sls info | grep GET -m 1 | awk -F[/:] '{printf "const endpoint={get(){return '''https://"$4"/demo/''';}};export default endpoint;"}' > frontend/src/assets/js/endpoint.js