Tujuan dari proyek ini adalah untuk menyediakan ruang bagi pengguna di bawah bucket AWS S3 (bucket S3 bersama dengan "folder" untuk setiap pengguna), dengan antarmuka web untuk mengunggah, menelusuri, mengunduh, dan menghapus file.
PoC ini telah dilakukan antara asamo7 dan davidayalas.
Fitur:
Dimungkinkan untuk mengatur "pengguna" dan "admin".
Seorang pengguna menambahkan nama penggunanya (email dari respons saml) ke setiap kunci (mengunggah, menjelajah, menghapus...). Admin dapat melihat semuanya di bawah ember atau folder. Lihat izin.csv.
Pengguna dapat mengunggah folder (seret dan lepas) dan strukturnya dibuat ulang di S3
File dapat diunduh (bukan direktori)
Folder dapat dihapus (disertakan tidak kosong)
Seorang pengguna dapat membuat folder
Instal kerangka kerja tanpa server: https://www.serverless.com/framework/docs/getting-started/
Siapkan kredensial AWS: https://www.serverless.com/framework/docs/providers/aws/cli-reference/config-credentials/
Perbarui "serviceName" dengan milik Anda sendiri di setup.demo.json
Jalankan first-deploy.sh (berikan izin yang dapat dieksekusi)
$ chmod +x first-deploy.sh && sh first-deploy.sh
Ini akan memodifikasi beberapa file agar semuanya berfungsi. Buka https://samltest.id/upload.php dan unggah secara manual docs/sp-metadata.xml.
Jalankan server Anda dan coba
$ npm run serve --prefix=frontend
Instal semua dependensi
$ 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
Perbarui "serviceName" dengan milik Anda sendiri di setup.demo.json
Variabel env dasar untuk SAML (milik Anda sendiri, karena demo sudah disiapkan):
Hasilkan distribusi frontend
$ cd frontend
$ npm run build
Terapkan demo
$ 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
Perbarui sp-metadata.xml Anda dengan:
Unggah file ini ke https://samltest.id/upload.php
Unggah: lambda ini menghasilkan tanda tangan untuk unggahan yang valid.
Penjelajahan: lambda ini mengambil objek di suatu jalur
Hapus: lambda ini menghapus secara rekursif semua objek di suatu jalur
Unduh: lambda ini menghasilkan url yang telah ditentukan sebelumnya agar objek dapat diunduh dengan aman
Login: dalam hal ini berbasis SAML untuk menghasilkan token JWT.
Pengaturan default mengarah ke samltest.id. Metadata untuk samltest.id dihasilkan dengan https://www.samltool.com/sp_metadata.php:
Di "Titik Akhir Layanan Konsumsi Atribut (HTTP-POST)" Anda harus meletakkan titik akhir api Anda:
https://${api gateway id}.execute-api.${region}.amazonaws.com/${stage}/login/callback
Di "entityID" perbarui penerbit Anda (sama dengan variabel lingkungan untuk pengendali login di serverless.yml)
Otorisasi khusus: memvalidasi token JWT dan menambahkan izin tambahan dari CSV
Frontend baru berbasis Vue. Kemudian ikuti Memulai
Buat file "frontend/src/assets/js/endpoint.js" dengan konten berikut menggantikan nilai dengan yang sesuai
const endpoint = {
get ( ) {
return 'https://${your api id}/${your stage}/' ;
}
} ;
export default endpoint ;
Atau Anda dapat membuatnya dari keluaran info sls:
$ 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