OAuth 2.0認可コードを使用する

OAuth 2.0は、リソースセット(リモートAPIやユーザーデータなど)へのアクセス権を付与する認証プロトコルです。

OAuth 2.0認証サーバーは追加のセキュリティレイヤーとして機能し、アクセストークンと交換される認証コードをクライアントに返すことができます。

OAuth 2.0の詳細については、OAuth 2.0とは何か?を参照してください。

始める前に

OAuth 2.0認証を使用するには、まず接続先のリモートサービスを使ってOAuthアプリを作成する必要があります。

このタスクを開始する

認証コード付与タイプを使ってOAuth 2.0認証を追加する手順は次のとおりです。

  1. 概要(Overview)タブをクリックします。

  2. 認証方法が存在しない場合は、認証設定(Set up authentication)をクリックします。存在する場合は、認証を追加(Add Authentication)をクリックします。

  3. 認証(Authentication)ダイアログで、ディスプレイ名を入力し、認証タイプ(Auth Type)ドロップダウンリストからOAuth 2.0を選択します。

  4. 付与タイプ(Grant Type)ドロップダウンメニューでは、Authorization Codeを選択します。

  5. 次のフィールドに値を追加します。

フィールド 定義

パス(Paths)

認可パス(Authorize Path)

コネクターがサービスのアクセストークンを取得できる場所たとえばhttps://account.example.com/api/oauth2/authorizeです。

トークンパス(Token Path)

フローがアクセスおよびリフレッシュトークンの認証コードを交換する場所たとえばhttps://api.example.com/oauth2/tokenです。

リフレッシュトークンパス(任意)(Refresh Token Path (Optional))

コネクターがアクセストークンの期限切れ後に新しいアクセストークンを取得できる場所。

リフレッシュトークンパスは、多くの場合はアクセストークンパスと同じです。サービスがアクセストークンの更新に個別のエンドポイントを使用する場合は、ここに入力します。たとえばhttps://account.example.com/api/oauth2/reauthorizeです。

資格情報(Credentials)

リダイレクトURI(Redirect URI)

新しいアプリの登録時は、通常はアプリ名やWebサイトなどの基本情報を登録します。さらに、認証をOkta Workflowsに戻すためのリダイレクトURLも登録する必要があります。

提供されたコネクターのリダイレクトURI(Redirect URI)を新しいOAuthアプリにコピーしてコネクターをサービスに登録します。

次のリダイレクトURLを使用して、それぞれOktaのプレビューサイト、本番サイトに接続します。

  • https://oauth.workflows.oktapreview.com/oauth/{{auth.connector_key}}/cb

  • https://oauth.workflows.okta.com/oauth/{{auth.connector_key}}/cb

コネクターのキー(Key)はコネクターの設定(Settings)ペインで確認できます。

プレビュー環境と本番環境の両方に登録する必要があります。

クライアント所有権(Client Ownership)

この設定は、OAuth 2.0アプリを管理するユーザーのタイプを決定します。オプションはDeveloperCustomerです。

  • Developer:アプリを作成し、その設定を管理するコネクタービルダー。このビルダーは、クライアントID(Client ID)フィールドとクライアントシークレット(Client Secret)フィールドの値も提供します。

  • Customer:アプリのエンドユーザーがクライアントOAuth 2.0アプリを管理します。クライアントID(Client ID)フィールドとクライアントシークレット(Client Secret)フィールドの値を提供します。このオプションを選択すると、新規接続(New Connection)ダイアログにクライアントID(Client ID)フィールドとクライアントシークレット(Client Secret)フィールドが自動的に追加されます。

クライアントID(Client ID)

サービスから提供される、公開される文字列です。OAuth 2.0アプリを識別して認可URLを構築するために使用されます。

クライアントシークレット(Client Secret)

サービスから提供されるプライベート値。この値は、サービスに対してアプリIDを認証するために使用されます。

スコープ(任意)(Scopes (Optional))

名前(Name)

各スコープは、サービスからの接続リクエストの詳細なアクセスレベルを定義します。接続にOAuthスコープを追加する方法は次のとおりです。

  1. スコープを追加(Add Scope)をクリックして、この接続用に要求する一意のスコープをサービスに追加します。

  2. スコープ名を入力します。(例:openidoffline_access)。

    トグルを使ってスコープが必須(Required)であるかどうかを指定します。スコープを必須(Required)としてマークするには、事前にスコープのカスタマイズをユーザーに許可(Allow users to customize scopes)オプションを有効化しておく必要があります。

    必須としてマークされたスコープは常に要求されます。通常は、コネクターが正しく機能するために必要なスコープです。また、APIのすべてのエンドポイントを呼び出すCAPIAカードでは、通常は接続によってすべてのスコープが有効化されている必要があります。

    追加する各スコープは、新規接続(Permissions)プレビューの権限(New Connection)タブに表示されます。

  3. ユーザーがスコープリストを変更できるようにするには、スコープのカスタマイズをユーザーに許可(Allow users to customize scopes)オプションを選択します。

    このオプションでは、サービスから要求されるスコープを定義するための2つの選択肢を提供するセレクターが権限(Permissions)タブに追加されます。

    • デフォルトスコープを使用(Use default scopes):定義済みのすべてのスコープを要求します。

    • スコープをカスタマイズ(Customize scopes):ユーザーは、元のリストから必須以外のスコープを削除できます。必須スコープは消去できません。

  4. ユーザーがコネクターを通じて追加のスコープリクエストを追加できるようにするには、追加スコープの要求をユーザーに許可(Allow users to request additional scopes)オプションを選択します。

    スコープはスコープを手動で追加(Manually add scopes)フィールドに入力できます。この入力フィールドの文字数制限は500です。スコープは個別に追加することも、スペースまたはカンマ区切りのスコープリストとして追加することもできます。区切り文字は、スコープ区切り文字(Scopes Delimiter)フィールドの選択と一致させます。

    このオプションを選択しない場合、ユーザーは Okta Ideasのサイトを通じてコネクターへの新規スコープの追加を求めることができます。このリンクは権限(Permissions)タブの下部にあります。

    このオプションは、スコープのカスタマイズをユーザーに許可(Allow users to customize scopes)オプションを有効にした場合にのみ利用できます。

リフレッシュトークンを取得するために特別なスコープ(refresh_tokenoffline_accessなど)が必要かどうかについては、APIのドキュメントを参照してください。

スコープ区切り文字(Scopes Delimiter)

ユーザーが個々のスコープを区切って入力するための区切り文字を指定します。

選択肢はSpaceCommaです。

パラメーター(任意)(Parameters (Optional))

パラメーターを使用することで、インスタンスやサブドメインなど、認証に必要な追加情報をコネクターユーザーから収集できます。これらのフィールドは、ユーザーが接続を最初に作成する際に表示され、必須です。

ラベル(Label):コネクターのセットアップ時に新規接続(New Connection)ダイアログに表示されるパラメーターの名前。

キー(Key):サービスで使用されるキー/値ペアのテキスト値。たとえばapi_keyapplication_keyauthenticationなどです。

タイプ(Type):3つのフィールドタイプから選択できます。

  • Text:ユーザーにプレーンテキストフィールドを表示します。これは、加工なしのオープンテキストフィールドです。

  • Password:加工されたテキストフィールドを表示します。このフィールドに入力されたテキストの内容はユーザーにはわかりません。

  • Dropdown List:ユーザーが選択する値の、手動で作成されたドロップダウンリストを表示します。

構成値(任意)(Config Values (Optional))

コネクターに対してユーザーを認証する方法を定義するために、その他の構成値が必要になる場合があります。構成値を追加(Add Config Value)をクリックします。

ラベル(Label):コネクターのセットアップ時に新規接続(New Connection)ダイアログに表示される構成値の名前。

定義(Definition):このフィールドに静的な値が入力されるか、ヘルパーフローからの値が入力されるかを示します。

  • Static Valueであれば、値(Value)フィールドに値を入力します。

  • Value from Helper Flowであれば、フローの選択(Choose Flow)ダイアログでフローを選択します。

タイプ(Type):2つのフィールドタイプから選択できます。

  • Text:ユーザーにプレーンテキストフィールドを表示します。これは、加工なしのオープンテキストフィールドです。

  • Password:加工されたテキストフィールドを表示します。このフィールドに入力されたテキストの内容はユーザーにはわかりません。

可視性(Visible)トグルは、コネクターの認証ダイアログに構成値を表示するかどうかを決定します。

次の手順

この認証方式を作成したら、認証方式を通じて呼び出しを管理するhttpHelperフローを作成する必要があります。httpHelperフローを構築するを参照してください。