トークンエクスチェンジグラントタイプ(OAuth)
セキュリティトークンをIndeedのアクセストークンと交換します。
By using this API and its documentation and building an integration, you agree to the Additional API Terms and Guidelines.
Indeedのトークンエクスチェンジグラントタイプ(OAuth)を使用して、Indeedのアクセストークンを生成します。
トークンエクスチェンジグラントタイプ(OAuth)の手順
この連携を開始する場合、または質問がある場合は、indeed-ciam-integrations-support@indeed.comにお問い合わせください。
次の手順を実行します。
| # | 手順 |
|---|---|
| 1. | |
| 2. | |
| 3. |
アプリを登録する
日本のみ
- Manage app credentialsページでIndeedアカウントにサインインし、Register new applicationを選択します。
- Provide basic informationページで、アプリ名と説明を入力します。Credential typeではOAuth 2.0を選択し、Save and continueを選択します。
- Select OAuth grant typesページで、Client credentialsを選択し、Save and continueを選択します。
- Provide additional informationページで、必要に応じて詳細を追加し、Save and continueを選択します。
- Preview appページでアプリ情報を確認し、Complete registrationを選択します。
- CredentialsページでクライアントIDとシークレットを控えます。シークレットは共有しないでください。
- 登録済みのOAuthクライアントをトークンエクスチェンジの許可リストに追加できるように、クライアントIDをIndeedに共有します。
日本以外
Indeed Apply XML 連携を構築するには、Indeed Client Success team にお問い合わせください。Developer Agreement に署名すると 、Indeed がお客様の製品に Indeed API とサービスを連携するアプリをセットアップします。
Partner Console にサインインして、アプリとその Indeed Apply API token 認証情報を確認します。
- APIトークン認証情報は、クライアントIDとクライアントシークレットです。
- Indeedに投稿する各求人にAPIトークンを含めます。
Authorization Basicヘッダー値を生成する
See also Basic Authentication Scheme in RFC 2617: HTTP Authentication: Basic and Digest Access Authentication.
To generate the Authorization Basic header value:
-
Concatenate the
client_idandclient_secretwith a colon (:) as a separator.base64.encode("<client_id>:<client_secret>"); -
Apply the Base64-encoding algorithm to the string:
base64.encode("5e175cbb7f88e2048bd95323bbc9ca2fcec32ad60f95f7ee66ab53e099abe6f3:pJ4qRe2sdXRP0Whr3bwz9D37exFuuOtqJDRHMmmlLWV7J25rH7oItrPNCKzhaQf2"); -
Pass the Base64-encoded string as a basic HTTP
Authorizationheader:Authorization: Basic NWUxNzVjYmI3Zjg4ZTIwNDhiZDk1MzIzYmJjOWNhMmZjZWMzMmFkNjBmOTVmN2VlNjZhYjUzZTA5OWFiZTZmMzpwSjRxUmUyc2RYUlAwV2hyM2J3ejlEMzdleEZ1dU90cUpEUkhNbW1sTFdWN0oyNXJIN29JdHJQTkNLemhhUWYy
アクセストークンを取得する
トークンエクスチェンジグラントタイプを使用してアクセストークンを取得するには、次のHTTPリクエストヘッダーを指定して、https://apis.indeed.com/oauth/v2/tokensエンドポイントにPOSTリクエストを送信します。
POST https://apis.indeed.com/oauth/v2/tokensContent-Type: application/jsonAuthorization: Basic czZCaGRSa3F0Mzo3RmpmcDBaQnIxS3REUmJuZlZkbUl3
grant_type=urn:ietf:params:oauth:grant-type:token-exchange&subject_token=xxxxx.yyyyy.zzzzz&subject_token_type=urn:ietf:params:oauth:token-type:id_tokenアクセストークンを取得するには、Authorization: Bearer <access_token>およびContent-Typeリクエストヘッダーと、リクエストボディパラメーターを指定して、https://apis.indeed.com/oauth/v2/tokensエンドポイントにPOSTリクエストを送信します。
このcurlの例は、アクセストークンを取得します。
curl -L 'https://apis.indeed.com/oauth/v2/tokens' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -H 'Authorization: Bearer <access_token>' \ -d 'grant_type=urn:ietf:params:oauth:grant-type:token-exchange' \ -d 'client_id=<client_id>' \ -d 'client_secret=<client_secret>' \ -d 'subject_token_type=urn:ietf:params:oauth:token-type:id_token' \ -d 'scope=email offline_access' \ -d 'subject_token=xxxxx.yyyyy.zzzzz'リクエストヘッダーは次のとおりです。
oauth/v2/tokensのリクエストボディパラメーターは次のとおりです。
| リクエストボディパラメーター | 必須 | 値 |
|---|---|---|
grant_type | ✔ |
Type: string |
scope | 任意 | 発行されるIndeedトークンに付与されるスコープです。 Scopesをご覧ください。 例:
|
subject_token | ✔ | リクエストの代行対象となる当事者の身元を表すトークンです。トークン発行者は、Indeedがそのトークンを検証できる方法を提供する必要があります。 IndeedはIDトークンのみをサポートします。 例:
|
subject_token_type | ✔ |
例:
|
成功したJSONレスポンスは次のとおりです。
HTTP/1.1 200 OKContent-Type: application/json
{ "access_token": "<access_token>", "scope": "" "issued_token_type": "urn:ietf:params:oauth:token-type:access_token", "token_type": "Bearer", "expires_in": 1419356238}失敗したJSONレスポンスは次のとおりです。
HTTP/1.1 400 Bad RequestContent-Type: application/json
{ "error": "invalid_request"}レスポンスフィールドは次のとおりです。
| レスポンスフィールド | Type | 説明 |
|---|---|---|
access_token | String | お客様のアクセストークンです。 例:
|
error | String | エラータイプです。 例:
|
error_description | String | エラーの説明です。 例:
|
expires_in | Integer | トークンは1時間(3600秒)有効です。 例:
|
issued_token_type | String | 発行されたトークンのタイプです。 例:
|
scope | String | アプリに実際に付与された権限です。たとえば、 例:
Scopesをご覧ください。 |
token_type | String | 値は常に 例:
|
IDトークン
Indeedは、指定されたIDトークン内のこれらのクレームを検査します。
OpenID Connect Core 1.0 incorporating errata set 2 – Standard Claimsで必須とされるフィールドに加え、IndeedのIdentity systemは、利用可能な場合にこれらのフィールドを検査します。
IDトークンは、JSON Web Token (JWT)です。次の表は、JWT本文でサポートされるフィールドと必須フィールドを定義しています。
OpenID Connect Core 1.0 incorporating errata set 2 – Standard Claimsでは、auth_ipを除くすべてのフィールドが定義されています。
OpenID Connect Core 1.0 incorporating errata set 2 – Standard Claimsもご覧ください。
| フィールド | 必須 | 説明 |
|---|---|---|
Type: | IDトークンの想定される受信者です。トークンエクスチェンジフローでは、このフィールドにはトークンを受け取った外部アプリケーションのク ライアントIDが含まれます。外部アプリケーションがこのトークンを交換のために提示する場合、この値は元のオーディエンスを識別します。 例: | |
Type: | ユーザーがサインインしたときの、正しい形式のIPv4アドレスです。RFC 1918をご覧ください。 例: | |
Type: JSON number | ユーザーが最後に認証された時刻です。 例: | |
Type: JSON number | Indeedは有効期限後のトークンを拒否します。発行されるアクセストークンは、 例: | |
Type: JSON number | ✔ すべての連携で必須 | JWTが発行された時刻です。 例: |
Type: | JWTを発行したエンティティの一意のIDです。発行システムのURIです。 例: | |
Type: | ✔ すべての連携で必須 | アイデンティティプロバイダー内のユーザーIDです。 SCIMの 例: |
Type: | エンドユーザーの氏名です。ロケールと設定に基づいて表示用に書式設定されます。 例: | |
Type: | ✔ すべての連携で必須 | ユーザーの優先メールアドレスです。RFC 5322のAddr-Spec Specificationに従う必要があります。 例: |
Type: | この値を省略すると、Indeedはパートナーがユーザーのメールアドレスを検証していないと見なします。 例: | |
Type: | ✔ 一部の連携で必須 | ユーザーの姓です。文化によっては、姓が複数ある場合があ ります。複数の姓はスペースで区切ります。 例: |
Type: | ユーザーの名です。文化によっては、名が複数ある場合があります。複数の名はスペースで区切ります。 例: | |
Type: | ユーザーのロケールです。BCP47(RFC 5646)言語タグです。通常は、小文字のISO 639 Alpha-2 ISO639言語コードと大文字のISO 3166-1 Alpha-2 ISO3166‑1国コードをダッシュで区切ります。 例: | |
Type: | ユーザーの電話番号です。E164形式に従う必要があります。 例: | |
Type: | 電話番号が検証済みかどうかです。電話番号を含めても 例: | |
Type: JSON number | エンドユーザーの情報が最後に更新された時刻です。OpenID Connect仕様で定義されています。 例: |
RFC
- RFC 1918: Address Allocation for Private Internets
- RFC 5322: Internet Message Format
- RFC 5646: Tags for Identifying Languages
- RFC 8693: OAuth 2.0 Token Exchange