الهدف من هذا المشروع هو توفير مساحة للمستخدمين ضمن مجموعات AWS S3 (حاويات S3 المشتركة مع "مجلد" لكل مستخدم)، مع واجهة ويب لتحميل الملفات وتصفحها وتنزيلها وإزالتها.
تم إجراء إثبات المفهوم هذا بين 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:
في "نقطة نهاية خدمة استهلاك السمة (HTTP-POST)" يجب عليك وضع نقطة نهاية واجهة برمجة التطبيقات الخاصة بك:
https://${api gateway id}.execute-api.${region}.amazonaws.com/${stage}/login/callback
في "entityID"، قم بتحديث جهة الإصدار الخاصة بك (نفس الشيء في متغير البيئة لمعالج تسجيل الدخول في serverless.yml)
المصرح المخصص: يتحقق من صحة رمز JWT ويضيف أذونات إضافية من ملف CSV
الواجهة الجديدة تعتمد على Vue. ثم اتبع الشروع في العمل
قم بإنشاء ملف "frontend/src/assets/js/endpoint.js" بالمحتوى التالي مع استبدال القيم بالقيم المناسبة
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