メインコンテンツへスキップ
最も一般的なIDプロバイダー (IdP) は、Auth0 DashboardAuth0 Marketplaceで利用できます。ただし、任意のプロバイダーを、Custom Social Connectionとして追加することもできます。
  1. Dashboard で、Authentication > Socialに移動します。
  2. Create Connectionを選択し、リストの一番下まで移動してからCreate Customを選択します。
表示されるフォームには、カスタム接続を設定するために必要な複数のフィールドがあります。
  • Connection Name: 作成する接続の論理識別子です。この名前は変更できず、先頭と末尾は英数字である必要があり、使用できるのは英数字とダッシュのみです。
  • Authorization URL: ユーザーがログインのためにリダイレクトされる URL です。
    認可 URL で OAuth 2.0 の response_mode パラメーターを設定しないでください。この接続でサポートされる response_mode はデフォルトの query のみです。
  • Token URL: 受け取った認可コードをおよび、要求された場合はと交換するための URL です。
  • Scope: 認可リクエストとともに送信する scope パラメーターです。複数のスコープはスペースで区切ります。
  • Separate scopes using a space: IdP の API を呼び出す際に connection_scope パラメーターが含まれている場合、スコープの区切り方法を決定するトグルです。デフォルトでは、スコープはコンマで区切られます。トグルを有効にすると、スコープはスペースで区切られます。詳細は、IDプロバイダー API を呼び出すためのスコープ/Permissions の追加を参照してください。
  • : 認可を要求し、認可コードを交換するためにアプリケーションとして使用される Auth0 のクライアントIDです。Client ID を取得するには、に登録する必要があります。
  • : 認可コードの交換に使用される、アプリケーションとしての Auth0 のクライアントシークレットです。Client Secret を取得するには、IDプロバイダーに登録する必要があります。
  • ユーザープロファイル取得スクリプト: 提供されたアクセストークンを使用して userinfo URL を呼び出すための Node.js スクリプトです。詳細は、ユーザープロファイル取得スクリプトを参照してください。
  • Purpose: 認証、Token Vault の Connected Accounts、またはその両方でソーシャル接続を有効にします。詳細は、ユーザー認証と Connected Accountsを参照してください。
カスタムIDプロバイダーを設定する際は、コールバックURL https://{yourDomain}/login/callback を使用してください。
カスタム接続を作成すると、Applications ビューが表示され、その接続には Auth0 のレート制限ポリシーが適用されます。ここでは、この接続を表示するアプリケーションを有効または無効にできます。

認証フローを更新する

接続を作成すると、その接続に割り当てられるデフォルトの OAuth 2.0 グラントタイプは Authorization Code Flow です。シングルページアプリケーションやネイティブアプリケーションなど、クライアントシークレットを保存できないパブリックアプリケーションの場合は、 を使用して、接続が Authorization Code Flow + PKCE を使用するよう更新できます。 の詳細については、どの OAuth 2.0 フローを使用すべきですか? を参照してください
  1. /get-connections-by-id エンドポイントに GET リクエストを送信します。レスポンスは次のようになります。
    {
      "id": "[connectionID]",
      "options": {
        "email": true,
        "scope": [
          "email",
          "profile"
        ],
        "profile": true
      },
      "strategy": "google-oauth2",
      "name": "google-oauth2",
      "is_domain_connection": false,
      "realms": [
        "google-oauth2"
      ]
    }
    
  2. options オブジェクト全体をコピーします。
  3. options オブジェクトを含めた PATCH リクエストを送信し、"pkce_enabled": true を追加します。
options オブジェクト全体を含めないと、情報が失われ、接続が機能しなくなります。

ユーザープロファイル取得スクリプト

ユーザープロファイル取得スクリプトは、ユーザーが OAuth2 プロバイダーを使用してログインした後に呼び出されます。Auth0 はこのスクリプトを実行して OAuth2 プロバイダーの API を呼び出し、ユーザープロファイルを取得します。
function fetchUserProfile(accessToken, context, callback) {
  request.get(
    {
      url: 'https://auth.example.com/userinfo',
      headers: {
        'Authorization': 'Bearer ' + accessToken,
      }
    },
    (err, resp, body) => {
      if (err) {
        return callback(err);
      }
      if (resp.statusCode !== 200) {
        return callback(new Error(body));
      }
      let bodyParsed;
      try {
        bodyParsed = JSON.parse(body);
      } catch (jsonError) {
        return callback(new Error(body));
      }
      const profile = {
        user_id: bodyParsed.account.uuid,
        email: bodyParsed.account.email
      };
      callback(null, profile);
    }
  );
}
返されるユーザープロファイルでは、user_id プロパティは必須です。email プロパティは任意ですが、含めることを強く推奨します。返される属性の詳細については、User Profile Root Attributesを参照してください。 プロバイダーから返されるユーザープロファイルでは、任意の項目をフィルタリングしたり、追加したり、削除したりできます。ただし、このスクリプトはできるだけシンプルに保つことをお勧めします。ユーザー情報をより高度に操作するには、Rulesを使用できます。Rules を使用する利点の 1 つは、どの接続にも適用されることです。

カスタム接続を使用してログインする

Auth0 の標準的なメカニズムはどれでも、カスタム接続を使ったユーザーのログインに利用できます。直接リンクの例は次のとおりです。

アイコンと表示名を変更する

IDプロバイダーのログインボタンにアイコンを追加したり、ログインボタンに表示されるテキストを変更したりするには、Management API を使用して、それぞれ options オブジェクトの icon_url プロパティと display_name プロパティを設定します。
  • リクエストに display_name が含まれていない場合、このフィールドは接続の name 値で上書きされます。
  • display_nameicon_url は、Universal Login experience での接続の表示方法にのみ影響します。

プロバイダー固有のパラメーターを渡す

OAuth 2.0 プロバイダーの認可エンドポイントに、プロバイダー固有のパラメーターを渡すことができます。これらのパラメーターは、静的または動的に指定できます。

静的パラメーターを渡す

静的パラメーター (すべての認可リクエストで送信されるパラメーター) を渡すには、Management API 経由で OAuth 2.0 の接続を設定する際に、optionsauthParams 要素を使用できます。以下の呼び出しでは、すべての認可リクエストに対して、custom_param という静的パラメーターが custom.param.value に設定されます。

動的パラメーターを渡す

状況によっては、OAuth 2.0 のIDプロバイダーに動的な値を渡したいことがあります。この場合は、optionsauthParamsMap 要素を使用して、Auth0 の /authorize エンドポイント で受け付けられる既存の追加パラメーターの 1 つと、IDプロバイダーで受け付けられるパラメーターとのマッピングを指定できます。 前述の例をそのまま使うと、認可エンドポイントに custom_param パラメーターを渡したい一方で、実際のパラメーター値は Auth0 の /authorize エンドポイントを呼び出す際に指定したいとします。 この場合は、/authorize エンドポイントで受け付けられる既存の追加パラメーター (access_type など) を 1 つ使用し、それを custom_param パラメーターにマッピングできます。 これで、/authorize エンドポイントの呼び出し時に、access_type パラメーターでアクセス種別を渡せるようになり、その値は custom_param パラメーターを介して認可エンドポイントに渡されます。

追加ヘッダーを渡す

状況によっては、OAuth 2.0 プロバイダーのに追加ヘッダーを渡す必要があります。追加ヘッダーを設定するには、接続の設定を開き、Custom Headers フィールドで、カスタムヘッダーをキーと値のペアとして含む JSON オブジェクトを指定します。
{
    "Header1" : "Value",
    "Header2" : "Value"
}
IDプロバイダーから、Basic 認証 の認証情報を含む Authorization ヘッダーを渡すよう求められるケースを例に見てみましょう。このシナリオでは、Custom Headers フィールドに次の JSON オブジェクトを指定できます。
{
  "Authorization": "Basic [your credentials]"
}
ここで、[your credentials] は IDプロバイダーに実際に送信する認証情報です。

詳しく見る