OpenID接続クライアント

OpenID Connect (OIDC)を使用し、従来のAPIキーを超えたセキュリティ層を追加しましょう。

OIDCは、クライアントがCoupaに接続する際のOAuth 2.0を使用したクライアント認証方法です。 詳細はOpenID Connectをご参照ください。

OAuth 2.0クライアント

新しいOpen Connectクライアントを作成すると、スコープによって定義された製品の特定の領域に対する特定のアプリケーションまたはユーザークライアントへの権限が付与されます。 Coupaでクライアントを作成したら、アプリケーションまたはクライアントを使用して、指定した付与タイプに基づいてアクセストークンをリクエストします。

OpenIDConnect Clientsテーブルから個々のクライアントを作成、アクティブ化、または非アクティブ化するには、 Setup > Integrations > Oauth 2/OpenID Connect Clients に移動します。

設定

詳細

タイプを付与

  • クライアント資格情報:ユーザーが関与していない場合に使用されます。 通常、これはシステム間の連携時に使用されます。 (最も一般的)

  • 承認コード:エンドユーザーが関与し、リソースへのアクセスに使用するアクセストークンを付与する前にユーザーの同意が必要な場合に使用されます。

  • デバイスコード:クライアントがデバイス上に存在し、ユーザーが認証され、別のデバイス上でリクエストを承認する場合に使用されます。

Name (名前)

クライアント/アプリケーションの名前

リダイレクトURI

レスポンスが送信されるリダイレクトURI。

スコープ

顧客がクライアントを登録する場合は、クライアントにスコープを割り当てる必要があります。 スコープは必須であり、クライアント/アプリケーションが実行できる事項を決定します。

スコープ

Coupaスコープは、 service.object.rightの形式で表示されます たとえば、 または です。 現在、クライアントの作成/編集ページには複数のスコープがリストされています。 スコープとその基礎となるCoupa権限のリストは、 /scopesScope management ページで確認できます。 スコープに移動すると、そのスコープに関連付けられている特定のAPI権限が表示されます。

クライアント証明書の付与タイプ

システム間の統合など、ユーザーが関与していない場合は、 クライアント資格情報 付与タイプを使用します。 トークンは自動的に受け入れられ、生成されます。

クライアント認証情報cURLリクエスト例

curl - X POST - H "Content - Type: application/x - www - form - urlencoded" - d "client_id =<CLIENT_ID>& grant_type = client_credentials&scope =<SPACE_SEPARATED_LIST_OF_SCOPES>& client_secret =<CLIENT_SECRET>" https ://<INSTANCE_DOMAIN>/oauth 2/token

承認コードの付与タイプ

エンドユーザーが関与している場合に使用されます。 リソースへのアクセスに使用するアクセストークンを付与する前に、ユーザーの同意が必要となります。

ユーザーフロー
  1. Webブラウザで、次のURLをアドレスバーに貼り付けます(括弧内の要素を正しい値に置き換えてください)。

    https ://<INSTANCE_DOMAIN>/oauth 2/authorizations/new? client_id =<CLIENT_ID>& response_type = code&scope =<SPACE_SEPARATED_LIST_OF_SCOPES>& redirect_uri =<REDIRECT_URI>
  2. 同意画面で[許可]をクリックします。 アプリケーションは、クライアントの作成時に指定されたREDIRECT_URIにリダイレクトされます。

コードを使用してアクセストークンを取得するには、HTTPS POSTリクエストを行います。 以下は、cURLを使用したリクエストの例です。

認証コードcURLリクエスト例

curl - XPOST - i https ://<INSTANCE_DOMAIN>/oauth 2/token? client_id =<CLIENT_ID>& grant_type = authorization_code&code =<CODE>& scope =<SPACE_SEPARATED_LIST_OF_SCOPES>& client_secret =<CLIENT_SECRET>& redirect_uri =<REDIRECT_URI>

デバイスコードの付与タイプ

クライアントがデバイス上に存在し、ユーザーが認証され、別のデバイス上でリクエストを承認する場合に使用されます。 デバイスは、ユーザーにコンピューターまたはスマートフォンのリンクにアクセスしてデバイスを承認するよう求めます。

デバイスコードcURLリクエスト例

curl - XPOST - i https ://<INSTANCE_DOMAIN>/oauth 2/device_authorizations? client_id =<CLIENT_ID>& scope =<SPACE_SEPARATED_LIST_OF_SCOPES>

JSON応答には、他の値の中でも verification_uri とユーザーコードが含まれています。 ブラウザの verification_uri に移動し、ユーザーコードを入力してフローを完了します。

設計上の考慮事項

  • 連携を開発する場合は、トークンを生成するタイミングと、トークンを使用してAPI呼び出しを送信するタイミングの間に、少なくとも5秒のバッファをコードに含めるようにしてください。 そうでない場合、認証トークンが生成される前に2回目の呼び出しが送信され、呼び出しが失敗する可能性があります。

  • トークンはJWT形式で提供されます。 設計上、JWTトークンの長さに制限はありません。 トークンは非常に長くなる可能性があり、トークンでサポートされているスコープの数によって部分的に異なります。

  • リフレッシュトークンは90日ごとに期限切れになり、その後再認証する必要があります。 セキュリティ上の理由により、クライアントが新しいアクセストークンを取得する際に問題が発生した場合、トークンも期限切れになります。

その他のリソース

関連ウェビナー