バックエンド認証

アイデンティティ・プロバイダとの認証が必要なスキルがある場合は、デジタル・アシスタントとそのアイデンティティ・プロバイダ間の対話を有効にする認証サービスを設定できます。

たとえば、Microsoft Teamsチャネルのスキル、GoogleまたはOutlookカレンダにアクセスするスキル、または認証されたユーザーIDを使用してユーザーを識別するアプリケーション開始の会話によって起動されるスキルを構築している場合、認証サービスの設定が必要になる場合があります。

また、スキルでOAuth 2.0クライアント、OAuth 2.0アカウント・リンクまたはOAuth2トークンのリセット組込みコンポーネントを使用する場合は、認証サービスを設定する必要があります。

FusionベースのOracle Cloud Applicationsサービス(Oracle Sales AutomationやOracle Fusion Cloud Human Capital Managementなど)のサブスクリプションとペアになっているデジタル・アシスタント・インスタンスがある場合、提供されたスキルのバックエンド認証を構成するために何もする必要はありません。これは自動的に処理されています。

組込みセキュリティ・コンポーネント

Oracle Digital Assistantには、次のセキュリティ・コンポーネントがあります:

  • OAuth 2.0クライアント : OCI IAMまたはOracle Access Manager (OAM)によって保護されているクライアント・リソースにアクセスするためにカスタム・コンポーネントが使用できる、付与タイプがクライアント資格証明のOAuth2アクセス・トークンを取得します。

    (ダイアログ・フローがYAMLモードで開発されている場合は、 System.OAuth2Client を使用します。)

    スキルでこのコンポーネントを使用する前に、アイデンティティ・プロバイダ登録の説明に従ってアプリケーションを登録し、認証サービスの説明に従ってクライアントのサービスを追加するよう管理者に依頼します。FusionベースのOracle Cloud Applicationsサービス(Oracle Sales CloudやOracle Human Capital Management Cloudなど)のサブスクリプションと組み合されたデジタル・アシスタント・インスタンスがある場合、OCI IAMアイデンティティ・ドメインには登録済アプリケーションおよび認証サービスが作成済ですでにあります。

  • OAuth 2.0アカウント・リンク : 次のアイデンティティ・プロバイダのいずれかによって保護されているリソースにアクセスするためにカスタム・コンポーネントで使用できる、付与タイプ「認可コード」のOAuth2アクセス・トークンを取得します:
    • OCI IAM
    • Oracle Access Manager (OAM)
    • Microsoft IDプラットフォーム
    • Google Identity Platform

    (ダイアログ・フローがYAMLモードで開発されている場合は、 System.OAuth2AccountLink を使用します。)

    このコンポーネントのもう1つの用途は、外部アプリケーションのチャネルの作成で説明されているように、ユーザー名によってモバイル・ユーザーを特定するアプリケーション対応の会話についてユーザーを認証することです。

    スキルでこのコンポーネントを使用する前に、アイデンティティ・プロバイダ登録の説明に従ってアプリケーションを登録し、認証サービスの説明に従ってクライアントのサービスを追加するよう管理者に依頼します。FusionベースのOracle Cloud Applicationsサービス(Oracle Sales CloudやOracle Human Capital Management Cloudなど)のサブスクリプションとペアになっているデジタル・アシスタント・インスタンスがある場合、OCI IAMアイデンティティ・ドメインには登録済アプリケーションがすでに存在し、認証サービスがすでに存在します。

  • OAuth 2.0トークンのリセット : 指定した認証サービスから、ログイン・ユーザーのすべてのリフレッシュ・トークンおよびアクセス・トークンを取り消します。これは、OAuth 2.0アカウント・リンク・コンポーネントを使用するダイアログ・フロー用です。

    (ダイアログ・フローがYAMLモードで開発されている場合は、 System.OAuth2ResetTokens を使用します。)

    このコンポーネントは、RESTコールを介したアクセス・トークンの取消しをサポートしておらず、コマンドライン・インタフェースを介したアクセス・トークンの取消しのみをサポートしているため、Microsoft IDプラットフォームでは使用できません。

  • OAuthアカウント・リンク : OAuth2プロトコルをサポートするアイデンティティ・プロバイダの認可コードを取得します。カスタム・コンポーネントは、このコードをアクセス・トークンと交換する必要があります。このコンポーネントは認証サービスを使用しません。

    (ダイアログ・フローがYAMLモードで開発されている場合は、 System.OAuthAccountLink を使用します。)

アイデンティティ・プロバイダ登録

スキルでOAuth2ClientOAuth2AccountLinkまたはOAuthAccountLinkコンポーネントを使用する前に、管理者がアプリケーション(OAuthクライアントとも呼ばれる)をアイデンティティ・プロバイダ(IDP)に登録する必要があります。

OCI IAMまたはOAMへのアプリケーションの登録

スキルでOAuth2ClientOAuth2AccountLinkまたはOAuthAccountLinkコンポーネントを使用するには、事前に管理者が機密アプリケーション(OAuthクライアントとも呼ばれる)をOCI IAMまたはOAMに登録する必要があります。

ノート

FusionベースのOracle Cloud Applicationsサービス(Oracle Sales CloudやOracle Human Capital Management Cloudなど)のサブスクリプションと組み合されたデジタル・アシスタント・インスタンスがある場合、OCI IAMアイデンティティ・ドメインには、そのサービスの登録済アプリケーションがすでに存在します。

OCI IAMへのアプリケーションの登録方法を学習するには、Oracle Cloud Infrastructureドキュメントの機密アプリケーションの追加を参照してください。OAMへのアプリケーションの登録の詳細は、『Oracle Access Managementの管理』OAuthサービスの構成を参照してください。

OCI IAMまたはOAMにアプリケーション(クライアント)を登録する際に、次の情報を指定する必要があります:

  • 許可される権限付与タイプ: アプリケーションは、認可コード権限付与タイプまたはクライアント資格証明権限付与タイプのいずれかを使用する必要があります。

  • スコープまたはロール: カスタム・コンポーネントがアクセスする必要があるリソースを含めます。リフレッシュ・トークン権限を付与する場合は、対応するスコープ(OCI IAMの場合はoffline_access)も追加する必要があります。

  • リダイレクトまたはコールバックURL: IDPが認可コードの返信に使用するURLを指定する必要があります。一部のアイデンティティ・プロバイダでは、これはリダイレクトURLまたはコールバックURIと呼ばれます。リダイレクトURLに何を使用するかを調べるには、「チャネル」ページに移動して、FacebookまたはWebフック・チャネルを開きます(どちらもない場合は、架空のものを作成します)。チャネルのWebフックURL (たとえば、https://<domain>:<port>/connectors/v2/tenants/<tenantId>/listeners/facebook/channels/<channelId>)のドメインとポートを使用してリダイレクトURLを作成します。これは、https://<domain>:<port>/connectors/v2/callbackのフォーマットである必要があります。たとえば、https://example.com:443/connectors/v2/callbackです。

    インスタンスがOracle Cloud Platformにプロビジョニングされている場合(バージョン19.4.1のすべてのインスタンスと同様に)、v2ではなくv1を使用します。

IDPでの認証にOAuth2ClientまたはOAuth2AccountLinkを使用する場合は、アプリケーション(OAuthクライアント)の作成後、クライアント資格証明、IDPトークンおよび認可URLを書き留めます。この情報は、認証サービスの説明に従って認証サービスを作成するときに必要になります。

Microsoft IDプラットフォームへのアプリケーションの登録

Microsoft IDプラットフォームにアプリケーションを登録するには、『Quickstart: Register an application with the Microsoft identity platform』のMicrosoft社の説明に従います。

アプリケーション・タイプを「Web」に設定します。

認可コードを送り返すためにプラットフォームで使用されるURLを指定する必要があります。URLに何を使用するかを調べるには、デジタル・アシスタントの「チャネル」ページに移動して、FacebookまたはWebフック・チャネルを開きます(どちらもない場合は、架空のものを作成します)。チャネルのWebフックURL (たとえば、https://<domain>:<port>/connectors/v2/tenants/<tenantId>/listeners/facebook/channels/<channelId>)のドメインとポートを使用してリダイレクトURLを作成します。これは、https://<domain>:<port>/connectors/v2/callbackのフォーマットである必要があります。たとえば、https://example.com:443/connectors/v2/callbackです。

アプリケーションを登録したら、Microsoftトピック『Create a new application secret』の説明に従ってクライアント・シークレットを作成する必要があります。このシークレットは、アプリケーションの認証サービスを作成するときに使用します。

Google OAuth2 Authorizationへのアプリケーションの登録

Google OAuth2にアプリケーションを登録するには、Googleトピック『Enable APIs for your project』に示すように、プロジェクトを作成し、必要なAPIを有効にします。カレンダ・コンポーネントを使用する予定がある場合は、Google Calendar APIとCalDAV APIの両方を有効にしてください。

次に、Googleトピック『Create authorization credentials』の説明に従って、アプリケーションのクライアントIDおよびシークレットを取得します。

OAuth承認画面で、アプリケーションがアクセス権限を必要とするスコープを指定します。詳細は、Googleトピック『Identify access scopes』を参照してください。

認証サービス

OAuth 2.0クライアントおよびOAuth 2.0 AccountLinkセキュリティ・コンポーネントを使用するには、管理者が最初に「認証サービス」ページでIDPのサービスを追加する必要があります。認可コードおよびクライアント資格証明権限付与タイプのサービスを作成できます。認証サービスは、OCI IAMおよびOAM R2PS3アイデンティティ・プロバイダをサポートします。

ノート

FusionベースのOracle Cloud Applicationsサービス(Oracle Sales CloudやOracle Human Capital Management Cloudなど)のサブスクリプションと組み合されたデジタル・アシスタント・インスタンスがある場合、デジタル・アシスタント・インスタンスに関連付けられたOCI IAMアイデンティティ・ドメインに対して認証サービスがすでに作成されています。

サービスを作成する前に、サービスの追加に必要な情報を提供するようIDP管理者に依頼する必要があります。

認可コード・サービスの追加

OCI IAM、OAM、Microsoft IDプラットフォームおよびGoogle Identity Platformの「認可コード」権限付与タイプの認証サービスを作成する方法を次に示します。この権限付与タイプは、ユーザー名およびパスワードに対して認証します。

  1. サイド・メニューを開き、「設定」→「認証サービス」をクリックします。
  2. 「+サービス」をクリックします。
  3. 「認可コード」権限付与タイプを選択します。
  4. 次の値を入力します:
    • アイデンティティ・プロバイダ: 使用するアイデンティティ・プロバイダ(IDP)のタイプ。

    • 名前: 認証サービスを識別するための名前。

    • トークン・エンドポイントURL: アクセス・トークンをリクエストするためのIDPのURL。

      • OCI IAM: https://<IAM-Service-Instance>.identity.oraclecloud.com/oauth2/v1/tokenを使用します。

      • OAM: http://<Managed-Server-Host>:<Managed-Server-Port>/oauth2/rest/tokenを使用します。

      • Microsoft IDプラットフォーム: https://login.microsoftonline.com/<Azure-Active-Directory-TenantID>/oauth2/v2.0/tokenを使用します。

      • Google Identity Platform: https://www.googleapis.com/oauth2/v4/tokenを使用します。

    • 認可エンドポイント: ユーザーがユーザー名とパスワードを入力して認証するページのIDPのURL。

      • OCI IAM: https://<IAM-Service-Instance>.identity.oraclecloud.com/oauth2/v1/authorizeを使用します。

      • OAM: http://<host>:<port>/oauth2/rest/authzを使用します。

      • Microsoft IDプラットフォーム: https://login.microsoftonline.com/<Azure-Active-Directory-TenantID>/oauth2/v2.0/authorizeを使用します。

      • Google Identity Platform: https://accounts.google.com/o/oauth2/v2/authを使用します。

    • 短縮認可コード・リクエストURL: (オプション)認可URLの短縮バージョンであり、URL短縮サービス(問合せパラメータを送信できるサービス)から取得できます。これは、生成された認可コード・リクエストURLがSMSおよび古いスマートフォンには長すぎる可能性があるため、必要になることがあります。

      デフォルトでは、各プラットフォームの認可コード・リクエストURLは次のとおりです:

      • OCI IAMおよびOAM:

        {Authorization Endpoint URL}?client_id={clientId}&response_type=code&scope={scope}&redirect_uri={redirectUri}&state={state}
      • Microsoft IDプラットフォーム:

        {Authorization Endpoint URL}?client_id={clientId}&response_type=code&scope={scope}&redirect_uri={redirectUri}&response_mode=query&state={state}
      • Google Identity Platform:

        {Authorization Endpoint URL}?client_id={clientId}&response_type=code&scope={scope}&redirect_uri={redirectUri}&access_type=offline&prompt=consent&state={state}

      テキスト・メッセージに表示されるURLの例を次に示します:

      long-url.pngの説明が続きます
      図long-url.pngの説明

      たとえば、このURLの短縮バージョンを取得できます:

      {Authorization Endpoint
            URL}?client_id={clientId}&response_type=code&scope={scope}&redirect_uri={redirectUri}&state={state}

      「短縮認可コード・リクエストURL」を使用すると、Oracle Digital Assistantによって次のような認可コード・リクエストURLが作成されます:

      {Short Authorization Code Request URL}?state={state}
    • トークン取消エンドポイントURL: (オプション)ダイアログ・フローからログイン・ユーザーのすべてのリフレッシュ・トークンおよびアクセス・トークンを取り消す場合、IDPのリフレッシュ・トークン取消URLが必要です。このURLを指定した場合は、OAuth 2.0トークンのリセット・コンポーネントを使用して、このサービスに対するユーザーのトークンを取り消すことができます。

      • OCI IAM: https://<IAM-Service-Instance>.identity.oraclecloud.com/oauth2/v1/revokeを使用します。

      • OAM: https://<host>:<port>/ms_oauth/oauth2/endpoints/<OAuth-Service-Name>/tokensを使用します。

      • Microsoft IDプラットフォーム: サポートされていません。

      • Google Identity Platform: https://oauth2.googleapis.com/revokeを使用します。

    • 「クライアントID」および「クライアント・シークレット」: アイデンティティ・プロバイダ登録での説明に従って登録された、IDPアプリケーション(OAuthクライアント)のクライアントIDおよびシークレット。Microsoft IDプラットフォームでは、アプリケーションIDおよびシークレットを使用します。

    • スコープ: デジタル・アシスタントがプロバイダからのアクセス・トークンをリクエストする際に含める必要があるスコープのスペース区切りリスト。リソースへのアクセスに必要なすべてのスコープを含めます。リフレッシュ・トークンが有効になっている場合は、リフレッシュ・トークンを取得するために必要なスコープを含めます(通常はoffline_access)。

      • OCI IAM:使用可能なスコープがすべて含まれるアクセス・トークンを取得する必要がある場合は、urn:opc:idm:__myscopes__スコープを使用します。特定のロールの適用可能なスコープが含まれるアクセス・トークンを取得する必要がある場合は、urn:opc:idm:role.<roll-name>スコープ(たとえば、urn:opc:idm:role.User%20Administrator)を使用します。

      • Microsoft IDプラットフォーム: openid email profile offline_accessを含める必要があります。カレンダ・コンポーネントを使用する予定がある場合は、https://graph.microsoft.com/Calendars.ReadWriteを含める必要があります。その他の権限の場合は、https://graph.microsoft.com/<permission>のフォーマットを使用します。<permission>を、『Microsoft Graph permissions reference』の有効な権限名に置き換えます。

      • Google Identity Platform: https://www.googleapis.com/auth/userinfo.emailを含める必要があり、これはユーザーのログインIDの取得に使用されます。カレンダ・コンポーネントを使用する予定がある場合は、 https://www.googleapis.com/auth/calendarを含める必要があります。他のスコープについては、『OAuth 2.0 Scopes for Google APIs』を参照してください。

    • サブジェクト要求: ユーザーの識別に使用するアクセス・トークン・プロファイル要求。

      • OCI IAMおよびOAM:通常、これはsub (サブジェクト)要求です。ただし、sub要求に内部ユーザーIDが含まれている場合、デジタル・アシスタントでは役に立ちません。これらの場合は、デジタル・アシスタントがユーザーを識別するために役立つプロファイル要求(emailnameなど)を指定します。
      • Microsoft IDプラットフォーム: preferred_usernameを使用します。

      • Google Identity Platform: emailを使用します。

    • リフレッシュ・トークンの保持期間: デジタル・アシスタントのキャッシュにリフレッシュ・トークンを保持する日数。空白のままにすると、デフォルトで7に設定されます。
    auth-service-ac.pngの説明が続きます
    図auth-service-ac.pngの説明
  5. 「作成」をクリックします。

ヒント:

OCI IAMの場合、ユーザーがOAuth 2アカウント・リンク・コンポーネント(Visual Flow Designer)またはSystem.OAuth2AccountLinkコンポーネント(YAMLモード)を使用してサインインすると、セッション中にIAMユーザーのプロファイル情報を自動的に格納できます。Store User Profile for the Duration of the Sessionを参照してください。

クライアント資格証明サービスの追加

権限付与タイプが資格証明の認証サービスを作成する方法を次に示します。この権限付与タイプは、クライアントIDおよびクライアント・シークレットに対して認証します。

  1. サイド・メニューを開き、「設定」→「認証サービス」をクリックします。
  2. 「+サービス」をクリックします。
  3. 「クライアント資格証明」権限付与タイプを選択します。
  4. 次の値を入力します:
    • アイデンティティ・プロバイダ: 使用するアイデンティティ・プロバイダ(IDP)のタイプ。

    • 名前: 認証サービスを識別するための名前。

    • トークン・エンドポイントURL: アクセス・トークンをリクエストするためのIDPのURL。

    • 「クライアントID」および「クライアント・シークレット」: アイデンティティ・プロバイダ登録での説明に従って登録された、IDPアプリケーション(OAuthクライアント)のクライアントIDおよびシークレット。

    • スコープ: デジタル・アシスタントがプロバイダからのアクセス・トークンをリクエストする際に含める必要があるスコープ。リソースへのアクセスに必要なすべてのスコープを含めます。



  5. 「作成」をクリックします。

デジタル・アシスタントのユーザー・アイデンティティ

Oracle Digital Assistantには、特定のスキルのユーザーのアイデンティティを管理するための2つの主なオプションがあります:

  • デジタル・アシスタントは、ユーザーのチャネルおよび任意のユーザー詳細(ある場合)に基づいて、そのチャネルのプロバイダによって提供される一時的で暫定的なユーザー・プロファイルを組み立てます。このような場合、異なるチャネルを介して同じスキルにアクセスする個人は、チャネルごとに異なるプロファイルを持ちます。このプロファイルの詳細は14日間保存されます。これはデフォルトの動作です。
  • 複数のチャネルで認識され、より長い(または短い)期間保持できるユーザーごとに統合ユーザー・アイデンティティを作成します。このモードでは、統合ユーザー・アイデンティティを使用してアイデンティティ詳細のリンクに同意またはオプトアウトするオプションをユーザーに付与できます。このアプローチは、Twilio、SlackおよびMS Teamsチャネルで使用できます。
ノート

統合ユーザーとの関連付けは、プッシュ通知にも役立ちます。通知サービスにより、通知を受信できるユーザーのチャネルのうちどれが通知サービスによって決定され、そのチャネルにメッセージが転送されます。

統合ユーザー・アイデンティティの構成

次の一般的なステップを使用して、統合ユーザーIDのスキルを構成できます。

  1. デジタル・アシスタント・インスタンスでチャネル・アカウント・リンクを有効化します。
  2. デジタル・アシスタント・インスタンスに認可コード・サービスを追加します。
  3. スキルのダイアログ・フローで、OAuth 2.0アカウント・リンク・コンポーネント(ビジュアル・ダイアログ・モードの場合)またはSystem.OAuth2AccountLink (YAMLモードの場合)を追加します。
  4. コンポーネントで、統合ユーザー・アイデンティティ・データを格納するためのユーザー同意の処理を構成します。

特定のユーザーの統合ユーザーIDは、ユーザーがデジタル・アシスタントに初めてアクセスし、OAuth 2.0コンポーネントを使用して認可で認証されるときに設定されます。つまり、最初に認証されたアイデンティティが「真実の点」になります。同じOAuth 2.0認証済ユーザーのチャネル・アカウントIDはすべて、統合ユーザーIDに関連付けられます。

チャネル・アカウント・リンクの有効化

チャネル・アカウント・リンクを有効にして、スキルの複数のチャネルでユーザー・アイデンティティを認識できるようにします。たとえば、あるチャネルで会話を開始し、レスポンスを待機している場合、そのレスポンスの通知を他のチャネルで受信することもできます。

チャネル・リンクを有効にするには:

  1. サイド・メニューを開くアイコンをクリックしてサイド・メニューを開き、「設定」→「統合アイデンティティ・サービス」を選択します。
  2. 「チャネル・アカウント・リンク」スイッチを「オン」に設定します。
ノート

22.12リリースより前のリリースでは、スキルにOAuth 2.0アカウント・リンク・コンポーネントを含め、そのassociateWithUnifiedUserプロパティをtrueに設定することで、個々のスキルのチャネル・アカウント・リンクを有効にできました。22.12以降、このプロパティは非推奨になり、コンポーネントのYAMLに残っていても効果はありません。

エンド・ユーザー・プライバシ: ユーザー承諾オプション

チャネル・アカウント・リンクをアクティブ化したら、スキルのOAuth 2.0アカウント・リンク・コンポーネントのrequiresAssociationConsentプロパティを使用して、各スキルのユーザー同意を個別に処理する方法を構成できます。オプションは次のとおりです。

  • Yes: チャネル・アカウント・データを統合ユーザーIDに関連付けるための次の同意選択肢をユーザーに提示します。
    • アカウントの関連付け。ユーザーが現在のチャネル・アイデンティティと一元化された統合ユーザーIDのリンクを承認したことを確認します。
    • このアカウントをリンクしない。この特定のチャネル・アカウントを統合ユーザーIDに関連付けないことを示します。ユーザーは今後このアカウントをリンクするかどうかを尋ねられません(ただし、ユーザーは後でその決定を取り消すことができます)。
    • この時点では実行しません。現在のセッションのアカウントをリンクしませんが、後続のセッションでユーザーが承認を要求されるのを防ぐことはできません。同意プロンプトは、ユーザーがこのオプションを選択すると一時的に抑制されますが、ユーザーが24時間以上後に再度認証されると再表示される場合があります。
  • No .ユーザー・チャネル・アカウントは、ユーザーが同意を求められることなく、統合ユーザーIDに自動的にリンクされます。
  • Notify.ユーザー・チャネル・アカウントは統合ユーザーIDに自動的にリンクされ、その事実がユーザーに通知されます。

このプロパティのデフォルト値はYesです。

ユーザー同意プロンプトおよびメッセージのカスタマイズ

チャネル・アカウント・アイデンティティ情報が統合ユーザー・アイデンティティにリンクされていることをユーザーに通知したとき、または同意オプションが与えられている場合に、会話に表示されるプロンプトとメッセージのセットがあります。スキルのリソース・バンドルのメッセージでこれらのプロンプトのフレーズを調整できます。

リソース・バンドル内のこれらの特定のプロンプトとメッセージにアクセスするには:

  1. スキルで、「リソース・バンドル」アイコンをクリックしてリソース・バンドルを開きます。
  2. 「構成」タブを選択します。
  3. 「フィルタ」フィールドにOAuthAccount2Link - consentと入力して、同意関連のバンドル・エントリを表示します。

統合ユーザー・データの保持

統合ユーザー・アイデンティティ・データが格納される時間の長さは、インスタンス・レベルで設定されます。

そのようなデータが格納される時間を構成するには:

  1. サイド・メニューを開くアイコンをクリックしてサイド・メニューを開き、「設定」→「統合アイデンティティ・サービス」を選択します。
  2. 「指定した保存期間後にユーザーのチャネル・アカウント・データを削除」スイッチを「オン」に設定します。

    オンにしないと、ユーザーのチャネル・アカウント・データは無期限に保持されます。

  3. チャネル・アカウント・ユーザー・データの保持期間(日数)に、データを格納する日数を入力します。

    最小値は7、最大値は1100です。

    ノート

    データをパージするジョブは、24時間から48時間ごとに1回のみ実行されます。そのため、ジョブの時間によっては、指定した保存期間より最大48時間長くデータが保持される場合があります。
ノート

指定された保持期間後にユーザーのチャネル・アカウント・データを削除は、統合ユーザー・アイデンティティの一部として格納されているチャネル関連データにのみ影響します。チャネル・アカウント・リンクが有効になっていない場合、チャネルからのユーザーのプロファイル・データは14日間保持されます。

チャネル・リンクがサポートされていないチャネルでは、チャネル・アカウント・リンクがグローバルに有効化されている場合でも、14日間の期間が適用されます。