これらのドキュメントの内容は法的助言を目的としたものではなく、また、法的支援の代わりとなるものでもありません。GDPR を理解し、これを遵守する最終的な責任はお客様にありますが、Auth0 は可能な限り GDPR 要件への対応を支援します。
概要
consentGiven(true/false) は、ユーザーが同意したかどうかを示します (true は同意済み、false は未同意)consentTimestamp(Unix timestamp) は、ユーザーが同意した日時を示します
- フラグを表示し、データベース接続で動作し、
auth0.jsライブラリを使ってユーザーを作成する実装です (シングルページアプリケーションで使用) 。詳しくは、Auth0.js Reference をご覧ください。 - フラグを表示し、データベース接続で動作し、Authentication API を使ってユーザーを作成する実装です (Regular Web Apps で使用)
- フラグを表示し、ソーシャル接続で動作し、Management API を使ってユーザー情報を更新する実装です (SPA または Regular Web Apps で使用)
- 別のページにリダイレクトし、そこで利用規約やプライバシーポリシーの内容を確認したうえで、同意情報を提供できる実装です (SPA または Regular Web Apps で使用)
オプション 1: auth0.js を使用する
-
Auth0 Dashboard > アプリケーション > アプリケーションに移動し、新しいアプリケーションを作成します。タイプとして
Single Web Page Applicationsを選択します。Settingsに移動し、Allowed Callback URLsをhttp://localhost:3000に設定します。 このフィールドには、ユーザーの認証後に Auth0 がリダイレクトを許可する URL の一覧を設定します。サンプルアプリはhttp://localhost:3000で実行されるため、この値を設定します。 - Client IdとDomainの値をコピーします。これらは後ほど必要になります。
- Auth0 Dashboard > Authentication > Databaseに移動し、新しい接続を作成します。Create DB Connectionをクリックし、新しい接続名を設定してから、Saveをクリックします。接続のアプリケーションタブに移動し、新しく作成したアプリケーションが有効になっていることを確認します。
- JavaScript SPA Sample をダウンロードします。
- Client ID と Domain の値を設定します。
- Auth0 Dashboard > Branding > Universal Loginに移動します。Loginタブでトグルを有効にします。
-
Default Templatesドロップダウンで、
Custom Login Formが選択されていることを確認します。コードはあらかじめ入力されています。 -
databaseConnection変数の値を、アプリケーションで使用しているデータベース接続名に設定します。 -
consentGivenメタデータ用のフィールドを追加するには、フォームにチェックボックスを追加します。この例では、チェックボックスはデフォルトでオンにし、ユーザーがチェックを外せないよう無効化しています。必要に応じて、ビジネス要件に合わせて調整してください。 -
メタデータを設定するように signup 関数を編集します。メタデータの値には、ブール値ではなく
trueという値を持つ文字列を設定しており、数値を文字列に変換するためにtoStringを使用している点に注意してください。これは、値として文字列しか受け付けない Authentication API のSignup endpointの制約によるものです。 - ログインウィジェットがどのように表示されるか確認するには、Previewタブをクリックします。

- この設定をテストするには、アプリケーションを実行して
http://localhost:3000にアクセスします。新しいユーザーとしてサインアップします。次に、Auth0 Dashboard > User Management > Users に移動し、新しく作成したユーザーを検索します。User Details を開き、メタデータ セクションまでスクロールします。user_metadataのテキストエリアに、consentGivenメタデータがtrueに設定されていることが表示されるはずです。
オプション 2: API を使用する (データベース)
consentTimestamp リクエストパラメータの値は、ユーザーが同意を行った時点のタイムスタンプに置き換えることを忘れないでください。
メタデータの値は、ブール値ではなく、値 true を持つ文字列として設定している点に注意してください。これは、API の制限により、値として受け付けられるのは文字列のみで、ブール値は受け付けられないためです。
ブール値の設定が必要な場合は、代わりに を使用できます。この場合は、通常どおりユーザーをサインアップした後、Management API の Update User エンドポイント を呼び出して、ユーザー作成後に必要なメタデータを設定します。具体的な方法については、このまま読み進めてください。次の段落では、そのエンドポイントを使用します。
ソーシャル接続を使用している場合、そのエンドポイントはデータベース接続でしか機能しないため、Authentication API を使って Auth0 にユーザーを作成することはできません。
代わりに、ユーザーにソーシャルプロバイダーでサインアップしてもらいます (これにより Auth0 にユーザーレコードが作成されます) 。その後、Management API を使ってユーザー情報を更新します。
Management API を呼び出す前に、有効なトークンを取得する必要があります。詳しくは、Get Management API Access Tokens for Production を参照してください。
リンク先の記事では、トークンの取得に Client Credentials Flow を使用していますが、これはブラウザー上で実行されるアプリでは使用できません。代わりに使用できるのは Implicit Flow です。Client Credentials Flow の詳細については、Client Credentials Flow を参照してください。Implicit Flow の詳細については、Implicit Flow を参照してください。
リクエストパラメータを https://YOUR_DOMAIN/api/v2/ に設定し、scope パラメータを scope create:current_user_metadata に設定します。レスポンスで取得した を使って、Management API の Update User endpoint を呼び出せます。
有効なトークンを取得したら、次のスニペットを使ってユーザーのメタデータを更新します。
この呼び出しを行うには、一意のuser_idを把握しておく必要があることに注意してください。レスポンスから取得している場合は、のsubクレームからこれを取得できます。詳しくは、ID トークンをお読みください。あるいは、メールアドレスしかわからない場合は、Management API の別のエンドポイントを呼び出して Id を取得できます。詳しくは、User Search Best Practicesをお読みください。
オプション 4: 別のページにリダイレクトする
-
リダイレクト ルールを追加します。Auth0 Dashboard > Auth Pipeline > Rules に移動し、Create Rule をクリックします。Rules Templates で empty rule を選択します。デフォルトのルール名
empty ruleを、わかりやすい名前 (例:Redirect to consent form) に変更します。 -
次の JavaScript コードをスクリプトエディターに追加し、変更を Save します。
-
Auth0 Dashboard > Auth0 Pipeline > Rules に戻り、ページ下部の 設定 セクションまでスクロールします。次のようにキーと値の組を作成します。
- キー:
CONSENT_FORM_URL - 値:
your-consent-form-url.com
- キー:
設定をテストする
- アプリケーションを実行し、
https://localhost:3000にアクセスします。 - 新しいユーザーとしてサインアップします。すると、同意フォームにリダイレクトされます。
- I agree フラグにチェックを入れ、Submit をクリックします。
- Auth0 Dashboard > User Management > Users に移動し、新しいユーザーを検索します。
- User Details に移動し、メタデータ セクションまでスクロールします。
- user_metadata テキストエリアに、
consentGivenメタデータがtrueに設定され、consentTimestampにはユーザーが同意した時点の Unix タイムスタンプが設定されているはずです。