OAuth API

SCIM の API は OAuth 2.0 で保護されています。
OPTiM Store より御社サービスの SCIM Server へプロビジョニングを行うために、OAuthの認可コード、アクセストークンを取得するためのAPIです。

本APIでは、クライアントID、クライアントシークレットの検証を行い、正しい場合のみアクセストークンなどを返却してください。 クライアントID、クライアントシークレットが不正な場合はエラーを返却してください。

アクセストークン新規取得リクエスト

Request

Method

  • POST

Resource URL

  • 任意のURL
    • 該当URLを、OPTiM Store 登録時にご連絡ください。
  • 本章では、https://your-service.example.com/scim/oauth/v1/token として記載致します。

Header Parameters

Content-Type: application/x-www-form-urlencoded

Query Parameters

  • なし

Request Parameters

key description
grant_type 固定値”client_credentials”が指定されます。
client_id OPTiM からプロビジョニング時に指定されたクライアントIDが指定されます。
client_secret OPTiM からプロビジョニング時に指定されたクライアントシークレットが指定されます。

Sample Request

POST /scim/oauth/v1/token
Host: your-service.example.com
Content-Type: application/x-www-form-urlencoded;charset=UTF-8

grant_type=client_credentials&client_id=s6BhdRkqt3&client_secret=7Fjfp0ZBr1KtDRbnfVdmIw

処理内容

下記の流れに従って、アクセストークンを発行してください。

  1. 送られたクライアントID(client_id)、クライアントシークレット(client_secret)が正しいか検証します。
  2. アクセストークン、有効期限を生成し、保持します。
  3. JSON形式でレスポンスを作成し、返却します。

Response

下記に従ったレスポンスを返却してください。

Response Code

200 OK

Response Parameters

key type description
access_token string アクセストークンです。
token_type string アクセストークンの種類です。固定値で”bearer”です。
expires_in integer アクセストークンの有効期間を秒で表します。

Sample Body

{
  "access_token":"2YotnFZFEjr1zCsicMWpAA",
  "token_type":"bearer",
  "expires_in":3600,
}

Error

Error Type

  • アクセストークン新規取得リクエストの主なエラー例は、下表のとおりです。
原因 エラー内容
パラメーター不正(指定がない/未知のパラメーターが指定された) HTTP 400 Bad Request と共に、レスポンスボディにエラーメッセージを含めて返却してください。
{"error":"invalid_request","error_description":"authorization header is invalid"}
パラメーター不正 HTTP 400 Bad Request と共に、レスポンスボディにエラーメッセージを含めて返却してください。
{"error":"invalid_grant","error_description":"client_id or code or redirect_uri is invalid"}}<br>以下のケースを含みます。<br>・client_id、client_secretが不正

Error Response

  • エラーが発生した場合、下記のようなレスポンスを返却してください。
HTTP/1.1 401 Unauthorized
Date: Thu, 27 Mar 2014 04:38:00 GMT
Content-Length: 69

{"error":"invalid_client","error_description":"client_id is invalid"}