このプロジェクトの目標は、ファイルをアップロード、参照、ダウンロード、削除するための Web インターフェイスを備えたスペースを 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/
setup.demo.json 内の「serviceName」を独自のものに更新します。
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
setup.demo.json 内の「serviceName」を独自のものに更新します。
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」を作成し、値を適切な値に置き換えます。
const endpoint = {
get ( ) {
return 'https://${your api id}/${your stage}/' ;
}
} ;
export default endpoint ;
または、sls info 出力から生成することもできます。
$ 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