メインコンテンツへスキップ
IDプロバイダーにOpenID ConnectまたはOkta Workforceを使用しているエンタープライズ接続では、Proof Key for Code Exchange(PKCE)や、属性・トークンのマッピングをサポートできます。

OIDC接続のPKCEを構成する

Connect・Okta Workforce接続は、自動的にPKCEをサポートするよう構成されます。 OIDCのIDプロバイダー()がOIDC Discoveryメタデータを介してPKCEをサポートしている場合、Auth0のデフォルト設定では、使用可能なアルゴリズムのうち最強のものが使用されます。OIDC Discoveryメタデータの詳細については、OpenIDのドキュメントをご確認ください。

接続のPKCE構成を表示する

では、特定の接続のPKCE構成を表示できます。
  1. [Authentication(認証)]>[Enterprise(エンタープライズ)] に移動して、OIDCプロバイダー(OpenID ConnectまたはOkta Workforce)を選択します。
  2. [設定] タブを選択します。
  3. [General(一般)] セクションで、** [Connection Profile(接続プロファイル)]** フィールドを見つけてください。
  • Auth0 Dashboard
  • Management API
Auth0 Dashboardでは、接続のPKCE構成を管理できます。
  1. [Dashboard] > [Authenticate(認証)] > [Enterprise(エンタープライズ)] に移動して、OIDCプロバイダー(OpenID ConnectまたはOkta Workforce)を選択します。
  2. [Settings(設定)] タブを選択して、** [Connection Profile(接続プロファイル)]** フィールドを見つけてください。
  3. PKCEプロパティを、下のリストにあるサポート値の一つに設定します。
  4. [Save(保存)] を選択します。

対応されているPKCEの構成値

Auth0では、PKCEの構成に以下の値を使用できます。
説明
autoデフォルト値。最も強力なアルゴリズムを使用します。
s256SHA-256アルゴリズムを使用します。Auth0は現在、RS512トークンをサポートしていません。
plainPKCE仕様で説明されたプレーンテキストを使用します。
disabledPKCEに対するサポートを無効にします。
pkceプロパティをauto以外の値に設定すると、選択した値がIDプロバイダーでサポートされていない場合には、接続が正常に動作しないことがあります。認証問題のトラブルシューティング以外の目的で、プロパティをdisabledに設定しないでください。
Entra IDでの制限Entra IDにOpenID Connect接続を使用している場合は、接続のメタデータが使用されているハッシュアルゴリズムを公開しないため、pkces256に設定する必要があります。現在、Entra ID Enterprise接続はPKCEに対応していません。

OIDC接続のクレームをマッピングする

OpenID ConnectとOkta Workforce接続は、IDプロバイダー(IdP)から受け取ったクレームを自動的にマッピングできます。このマッピングは、Auth0提供のライブラリーテンプレートで、または、独自のテンプレートを直接入力することで構成できます。
マッピングされたクレームは、自動的にAuth0のIDトークンに追加されるわけではありません。クレームをIDトークンに追加するには、「カスタムクレームを作成する」を参照してください。

マッピングテンプレートのプロパティ

マッピングテンプレートは、以下のリストにあるoptions.attribute_mapオブジェクトプロパティをサポートしています。テンプレートは、有効なキー・値のペアを持つJSON形式でなくてはなりません。
プロパティ必須?説明
mapping_mode必須受信クレームをマッピングするために使用される方法。
userinfo_scope任意IdPのユーザー情報エンドポイントに送信するためのスコープ。
attributes必須受信クレームのマッピング詳細が含まれるオブジェクト。

モードのマッピング

mapping_modeプロパティは、IdPから受け取るクレームをどのような方法でAuth0のユーザープロファイルにマッピングするかを定義します。mapping_modeには、以下の値を使用できます。
説明
use_map提供されたテンプレートを使用してデータをマッピングする。
bind_allIdPが提供したすべてのデータ要素をコピーする。

予約済みのクレーム

一部のクレームは、Auth0用に予約されているため、ユーザープロファイルの属性キーとして使うことはできません。 mapping_modeプロパティをbind_allに設定すると、IdPが値を予約済みのクレームにマッピングしようとする場合があります。その接続でのユーザー認証が妨げられることはありませんが、予約済みクレームに関連付けられた値は、Auth0のユーザープロファイルにマッピングされません mapping_modeuse_mapに設定すれば、受け取る予約済みクレームを有効なクレームにマッピングできます。
"attribute_map": {
        "mapping_mode": "use_map",
        "attributes": {
            "amr": "{context.tokenset.amr}" // `amr` is a restricted claim and will not be mapped
            "federated_amr": "{context.tokenset.amr}" // `federated_amr` is not a restricted claim and will be mapped
        }
    }
予約済みクレームの完全なリストについては、「カスタムクレームを作成する」をご確認ください。

UserInfoのスコープ

userinfo_scopeプロパティは、要求時にAuth0がIdPへ送信するUserInfoエンドポイントのスコープを定義します。 たとえば、UserInfoエンドポイントの要求時に標準のOIDCスコープとgroupsスコープを送信したい場合には、次のようにします。
"attribute_map": {
    . . .
    "mapping_mode": "bind_all",
    "userinfo_scope": "openid email profile groups",
    . . .
}

Attributes(属性)

attributesプロパティは、マッピング情報を含むオブジェクトです。この情報に基づいてAuth0がIdPからのクレームを解釈します。マッピング情報は、キー・値のペアとして入力しなければなりません。 左側のキーは、Auth0のユーザープロファイル属性に対応します。右側の値は、IdPからのクレームで、リテラル値、動的なコンテキストオブジェクト、またはその組み合わせとして表されます。動的コンテキストオブジェクトは、おなじみの${variable}形式で作成されたテンプレート式です。
"attribute_map": {
    . . .
    "attributes": {
        "name": "${context.tokenset.name}",
        "email": "${context.tokenset.email}",
        "username": "${context.tokenset.preferred_username}"
    }
}

リテラル値

リテラル値とは、接続の全ユーザーに対して特定のプロファイル属性にマッピングされる静的な値です。 たとえば、SalesForceのOIDC接続を構成していて、すべてのユーザープロファイルに同じSFDC Community IDを割り当てたい場合は、次のようにします。
"attribute_map": {
    . . .
    "attributes": {

        "sf_community_id": "3423409219032-32"
    }
}

コンテキストオブジェクト

ユーザープロファイル属性に動的な値をマッピングするには、contextオブジェクトを使用します。全プロファイルで静的なリテラル値とは対照的に、個々のプロファイルに一意の値が保管できるようになります。 contextオブジェクトは以下のプロパティをサポートしています。
プロパティ説明
context.connection含まれるプロパティ:

  • id:接続の一意の識別子(con_4423423423432423など)。

  • strategy:接続戦略(oidcなど)。
  • context.tokenset含まれるプロパティ:

  • access_token:IdPによって送信される検証済みアクセストークン全体。

  • <claim name>:IdPによって送信される任意のIDトークン。
  • context.userinfo含まれるプロパティ:

  • <claim name>:IdPのUserInfoエンドポイントによって提供される任意の使用可能なクレーム。
  • シンプルなユーザークレームマッピング

    この例では、IDトークンからのデータを使用して一般的なユーザークレームをAuth0のユーザープロファイルにマッピングしています。
    "attribute_map": {
        . . .
        "attributes": {
            "name": "${context.tokenset.name}",
            "email": "${context.tokenset.email}",
            "username": "${context.tokenset.preferred_username}"
        }
    }
    

    グループクレームマッピング

    この例では、受信IdPからグループをAuth0のユーザープロファイルにマッピングしています。
    "attribute_map": {
        . . .
        "attributes": {
            "federated_groups": "${context.userinfo.groups}",
            "federated_locale": "${context.userinfo.locale}",
            "federated_zoneinfo": "${context.userinfo.zoneinfo}"
        }
    }
    

    リテラル値とコンテキストオブジェクトの組み合わせ

    この例では、リテラル値と動的テンプレート式を組み合わせて、複雑な値をAuth0のユーザープロファイル属性にマッピングしています。
    "attribute_map":{
        . . .
        "attributes": {
            "alt_id": "user_email|${context.tokenset.email}",
            . . .
        }
    }
    
    I