このワークフローを実行する前に、以下を用意していることを確認してください。
- Universal Login と custom domain が設定された 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 の画面にマッピングします。
- Auth0 の画面カスタマイズ設定を更新し、CloudFront CDN 上のアセットを参照するようにします。
main ブランチへの git push で GitHub ワークフローが開始されます。
ACUL の本番デプロイワークフローの完全な例については、GitHub の ACUL GITHUB ACTIONS を参照してください。
1. Auth0 の設定
- Auth0 Dashboard > Applications に移動します。
- 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 を選択します。
- Settings タブに移動し、次の値を控えておきます。
DomainクライアントIDクライアントシークレット
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 > Settings に移動します。
- 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 アプリケーションのクライアントID。AUTH0_CLIENT_SECRET: M2M アプリケーションのクライアントシークレット。
5. デプロイを設定する
.github/config/ ディレクトリにある設定ファイルを編集して、どの画面をデプロイするかを制御できます。
config/deploy_config.yml: メインの設定ファイルです。画面をデプロイする場合はtrue、スキップする場合はfalseを設定します。config/screen-to-prompt-mapping.js: 内部の画面ディレクトリ名の対応関係を定義します。例:mfa-sms-challengeを Auth0 の正式なプロンプト名mfa-smsに対応付けます。config/context-configuration.js: Auth0 のコンテキストデータを定義します。例: ブランディング設定をカスタム画面で利用できるようにします。