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権限のリストは、 /scopesの Scope 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
承認コードの付与タイプ
エンドユーザーが関与している場合に使用されます。 リソースへのアクセスに使用するアクセストークンを付与する前に、ユーザーの同意が必要となります。
- ユーザーフロー
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>同意画面で[許可]をクリックします。 アプリケーションは、クライアントの作成時に指定された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日ごとに期限切れになり、その後再認証する必要があります。 セキュリティ上の理由により、クライアントが新しいアクセストークンを取得する際に問題が発生した場合、トークンも期限切れになります。
その他のリソース
関連ウェビナー
2021年10月14日: OAuth (API)
2022年3月25日: OAuth (API)への移行
2022年5月3日: NetSuite Bundleのお客様向けOAuth移行