เป้าหมายของโปรเจ็กต์นี้คือการจัดหาพื้นที่สำหรับผู้ใช้ภายใต้บัคเก็ต AWS S3 (บัคเก็ต S3 ที่ใช้ร่วมกันพร้อม "โฟลเดอร์" สำหรับผู้ใช้ทุกคน) พร้อมด้วยอินเทอร์เฟซเว็บสำหรับอัปโหลด เรียกดู ดาวน์โหลด และลบไฟล์
PoC นี้ทำระหว่าง asamo7 และ davidayalas
คุณสมบัติ:
สามารถตั้งค่า "ผู้ใช้" และ "ผู้ดูแลระบบ" ได้
ผู้ใช้ เพิ่มชื่อผู้ใช้ (อีเมลจากการตอบกลับ saml) ลงในแต่ละคีย์ (การอัปโหลด การเรียกดู การลบ...) ผู้ดูแลระบบ สามารถเห็นทุกสิ่งภายใต้บัคเก็ตหรือโฟลเดอร์ ดูการอนุญาต.csv
ผู้ใช้สามารถอัปโหลดโฟลเดอร์ (ลากและวาง) และโครงสร้างจะถูกสร้างขึ้นใหม่ใน S3
สามารถดาวน์โหลดไฟล์ได้ (ไม่ใช่ไดเร็กทอรี)
โฟลเดอร์สามารถลบได้ (รวมไม่ว่างเปล่า)
ผู้ใช้สามารถสร้างโฟลเดอร์ได้
ติดตั้งเฟรมเวิร์กไร้เซิร์ฟเวอร์: https://www.serverless.com/framework/docs/getting-started/
ตั้งค่าข้อมูลรับรอง AWS: https://www.serverless.com/framework/docs/providers/aws/cli-reference/config-credentials/
อัปเดต "serviceName" ด้วยตัวคุณเองใน setup.demo.json
ดำเนินการ first-deploy.sh (ให้สิทธิ์ในการปฏิบัติการ)
$ chmod +x first-deploy.sh && sh first-deploy.sh
มันจะแก้ไขไฟล์บางไฟล์เพื่อให้ทำงานได้ทั้งหมด ไปที่ https://samltest.id/upload.php และอัปโหลด docs/sp-metadata.xml ด้วยตนเอง
เรียกใช้เซิร์ฟเวอร์ของคุณและลอง
$ npm run serve --prefix=frontend
ติดตั้งการพึ่งพาทั้งหมด
$ 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
อัปเดต "serviceName" ด้วยตัวคุณเองใน setup.demo.json
ตัวแปร env พื้นฐานสำหรับ SAML (ของคุณเอง เนื่องจากมีการตั้งค่าการสาธิต):
สร้างการกระจายส่วนหน้า
$ cd frontend
$ npm run build
ปรับใช้การสาธิต
$ 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
อัปเดต sp-metadata.xml ของคุณด้วย:
อัปโหลดไฟล์นี้ไปที่ https://samltest.id/upload.php
อัปโหลด: แลมบ์ดานี้สร้างลายเซ็นสำหรับการอัปโหลดที่ถูกต้อง
การเรียกดู: แลมบ์ดานี้จะดึงวัตถุในเส้นทาง
ลบ: แลมบ์ดานี้จะลบวัตถุทั้งหมดในเส้นทางแบบวนซ้ำ
ดาวน์โหลด: แลมบ์ดานี้สร้าง URL ที่กำหนดไว้สำหรับวัตถุที่จะดาวน์โหลดอย่างปลอดภัย
เข้าสู่ระบบ: ในกรณีนี้ใช้ SAML เพื่อสร้างโทเค็น JWT
การตั้งค่าเริ่มต้นชี้ไปที่ samltest.id ข้อมูลเมตาสำหรับ samltest.id สร้างขึ้นด้วย https://www.samltool.com/sp_metadata.php:
ใน "Attribute Consume Service Endpoint (HTTP-POST)" คุณต้องใส่จุดสิ้นสุด API ของคุณ:
https://${api gateway id}.execute-api.${region}.amazonaws.com/${stage}/login/callback
ใน "entityID" ให้อัปเดตผู้ออกของคุณ (เหมือนกันในตัวแปรสภาพแวดล้อมสำหรับตัวจัดการการเข้าสู่ระบบใน serverless.yml)
ผู้อนุญาตที่กำหนดเอง: ตรวจสอบโทเค็น JWT และเพิ่มการอนุญาตเพิ่มเติมจาก CSV
ส่วนหน้าใหม่เป็นแบบ Vue จากนั้นปฏิบัติตามการเริ่มต้นใช้งาน
สร้างไฟล์ "frontend/src/assets/js/endpoint.js" โดยมีเนื้อหาต่อไปนี้แทนที่ค่าด้วย aproppiate
const endpoint = {
get ( ) {
return 'https://${your api id}/${your stage}/' ;
}
} ;
export default endpoint ;
หรือคุณสามารถสร้างมันได้จากเอาต์พุตข้อมูล 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