このワークフローを実行するには、以下を用意してください。
- Universal Login と カスタムドメイン が設定された Auth0 開発テナント
- Auth0 の First Party Application
- Auth0 テナントで有効になっている Identifier First Authentication
- IAM ロールと S3 バケットの作成、および CloudFront の設定を行うためのアクセス権を持つ AWS アカウント
- カスタムログイン画面を含む GitHub リポジトリ
- 画面アセットのバンドルをビルドする
- ワークフローは、どの画面がデプロイ対象として指定されているかを判断するために、config/deploy_config.yml ファイルを読み取ります。
- デプロイ対象が見つかると、ワークフローは Vite を使用して ACUL アセットをビルドし、コードを
/distディレクトリにコンパイルします。 - アセットを AWS S3 にアップロードする
- ワークフローは、OpenID Connect (OIDC) を使用して AWS に安全に認証します。
/distディレクトリの内容を S3 バケットにアップロードします。
- Auth0 テナントを設定する
- ワークフローは、M2M アプリケーションと Auth0 CLI を使用して、テナント内の画面を設定します。
- config/screen-to-prompt-mapping.js ファイルを使って、各画面を対応する Auth0 画面にマッピングします。
- CloudFront CDN 上のアセットを参照するように、Auth0 の画面カスタマイズ設定を更新します。
main ブランチに git push すると GitHub ワークフローが開始されます。
ACUL の本番デプロイワークフローの完全な例については、GitHub の ACUL GITHUB ACTIONS を参照してください。
1. Auth0 の設定
- Auth0 Dashboard > アプリケーション に移動します。
- Create Application を選択します。
- Machine to Machine Applications を選択します。
- Name に、たとえば
GitHub ACUL Deploymentのようなわかりやすい名前を入力します。 - Create を選択します。
- Authorize Machine to Machine Application で、Auth0 Management API を選択します。
- 以下の権限を選択します。
read:brandingupdate:brandingread:promptsupdate:promptsread:custom_domains
- Authorize を選択します。
- 設定 タブに移動し、次の値を控えておきます。
DomainClient IDClient Secret
2. Amazon Web Services でアセットをアップロードして配信する
- AWS S3 バケットを作成する。このバケットを非公開にするため、すべてのパブリックアクセスをブロックします。この非公開バケットにアセットを保存します。
- CloudFront ディストリビューションを設定する。この CDN がアセットを安全に配信します。Origin Access Control (OAC) を使用して、S3 バケットを
Originとして利用するように設定する必要があります。
3. GitHub Action 用の AWS IAM ロールを作成する
- この IAM ロールは Web Identity (OIDC) を使用し、
token.actions.githubusercontent.comを信頼先として設定する必要があります。 - このロールには、S3 バケットに対する
s3:PutObject、s3:DeleteObject、s3:ListBucketの権限を付与するポリシーが必要です。
4. GitHub リポジトリを設定する
- GitHub > 設定 に移動します。
- Secrets and Variables を選択し、次に Actions を選択します。
- New repository secret を選択します。
AWS_S3_ARN: 作成した IAM ロール の ARN。S3_BUCKET_NAME: S3 バケットの名前。AWS_REGION: S3 バケットが配置されているリージョン。たとえばus-east-1。S3_CDN_URL: CloudFront ディストリビューションのドメイン名です。末尾にスラッシュを追加しないでください。たとえば https://d1234abcdef.cloudfront.net。AUTH0_DOMAIN: Auth0 テナントのドメイン。AUTH0_CLIENT_ID: M2M アプリケーションの Client ID。AUTH0_CLIENT_SECRET: M2M アプリケーションの Client Secret。
5. デプロイを設定する
.github/config/ ディレクトリにある設定ファイルを編集して、どの画面をデプロイするかを指定できます。
config/deploy_config.yml: メインのコントロールパネルです。デプロイする画面はtrue、スキップする画面はfalseに設定します。config/screen-to-prompt-mapping.js: 内部で使用する画面のディレクトリ名をマッピングします。例:mfa-sms-challengeを公式の Auth0 prompt 名mfa-smsにマッピングします。config/context-configuration.js: Auth0 のコンテキストデータを定義します。例: ブランディング設定をカスタム画面で利用できるようにします。