認証・認可 (1.0.0)

Download OpenAPI specification:Download

はじめに

本文書では、インフォマート API における OAuth2.0 認証の手続き、及び利用手順を示す。

インフォマート API の呼び出しには、OAuth2.0 による認証を受ける必要がある。

OAuth2.0を使用することで、インフォマートプラットフォームIDやパスワードを保存・処理することなく
BtoBプラットフォームサービスを利用可能。

OAuth2.0の概要

OAuth とは、サードパーティーアプリケーションによるHTTP サービスへのアクセスを可能にする認可フレームワークを指す。
サードパーティーアプリケーションでは、インフォマートの提供するOAuth2.0 を利用することで、インフォマートの認可情報を利用して、APIの呼び出しが可能。

OAuth2.0

認証方式の種類

1. 認可コードフロー(Authorization Code Grant)

認可コードの発行を行い、アクセストークンを発行する方式

Code_Grant_flow

手順

  1. インフォマートプラットフォーム ID(以下、PFID)認証を行うための画面に遷移
  2. 認証ページにて、PFID のユーザ ID とパスワードを入力
  3. 認証が成功すると、予めインフォマートAPI 利用申込時に指定したコールバック URL ページへリダイレクトして認可情報を返却
  4. 認可情報を基にアクセストークンを発行

2. リソースオーナー・パスワード・クレデンシャルズフロー(Resource Owner Password Credentials)

画面を通して認証を行わない方式

Code_Grant_flow

手順

  1. HTTP の POST メソッドを利用してユーザ情報をリクエストし、アクセストークンを返却

認証

認証ページ

概要

インフォマートプラットフォームID(以下、PFID)の認証を行うためのページ。

インフォマートAPIを利用するユーザのブラウザに表示させる。
ユーザはこの認証ページにて、PFIDのユーザIDとパスワードを入力する。
認証が成功すると、利用システムが用意しているコールバックURLのページへリダイレクトする。

詳細

  1. 認証ページリクエスト
    1. 利用システムより認証サーバへ認証ページのリクエストを行う
  2. リクエストチェック
    1. 認証サーバにて利用システムからのリクエストをチェックする
    2. 不備があった場合、リクエストエラーとなる
  3. 認証ページ表示
    1. 認証サーバは利用システムからのリクエストを元に利用ユーザーのブラウザに認証ページを表示する
  4. ユーザー入力
    1. 利用ユーザが認証ページにてユーザIDとパスワードを入力する
  5. 認証チェック
    1. 認証サーバは入力されたユーザとパスワードで認証チェックを行う
    2. 認証に失敗した場合、認証エラーとなる
  6. コールバックURLリダイレクト
    1. 認証サーバがリクエストのコールバックURLで指定されたページへリダイレクトを行う
query Parameters
realm
required
string
Example: realm=/api

/api:固定値

client_id
required
string
Example: client_id=sample_client_id

サービスの申請時に発行されたクライアントID

redirect_uri
required
string
Example: redirect_uri=https%3a%2f%2fxxxx%2fcallback

PFIDの認証後、リダイレクトされるページのURL
サービスの申請時に指定したURLと一致する必要がある

response_type
required
string
Example: response_type=code

code:固定値(許可コードのリクエスト)

state
string
Example: state=string

任意の文字列を指定

scope
required
string
Example: scope=openid%20profile%20email%20qualified

openid profile email qualified:固定値(インフォマートAPIを利用)

access_type
required
string
Example: access_type=offline

offline:固定値(リフレッシュトークンを取得)

Callbacks

Request samples

https://auth.infomart.co.jp/openam/oauth2/authorize?realm=/api
&client_id=sample_client_id
&redirect_uri=https%3a%2f%2fxxxx%2fcallback
&response_type=code
&state=sample_state_code
&scope=openid%20profile%20email%20qualified
&access_type=offline

アクセストークン(認可コードフロー)

発行・再発行

概要

API を利用するシステムにログイン画面を表示させて認証を行う方式。

APIを利用するためのアクセストークンとリフレッシュトークンを発行する。
利用システムは取得したアクセストークンとリフレッシュトークンを保存して再利用することで、継続的にAPIを利用することができる。

アクセストークンの有効期限が切れた場合、アクセストークンと同時に取得したリフレッシュトークンを用いて、
アクセストークンとリフレッシュトークンの再発行を行う。

詳細

発行

  1. アクセストークン発行リクエスト
    1. 利用システムより認証サーバへアクセストークンの発行リクエストを行う
  2. リクエストチェック
    1. 認証サーバにて利用システムからのリクエストをチェックする
    2. 不備があった場合、HTTPステータスコード「400 Bad Request」を返却する
  3. アクセストークン・リフレッシュトークン発行
    1. 認証サーバにてアクセストークンとリフレッシュトークンを発行し、レスポンスとして返却する

再発行

  1. 期限切れアクセストークン再発行リクエスト
    1. 利用システムより認証サーバへ期限切れになったアクセストークンの再発行リクエストを行う
  2. リクエストチェック
    1. 認証サーバにて利用システムからのリクエストをチェックする
    2. 不備があった場合、HTTPステータスコード「400 Bad Request」を返却する
  3. アクセストークン・リフレッシュトークン発行
    1. 認証サーバにてアクセストークンとリフレッシュトークンを再発行し、レスポンスとして返却する
query Parameters
realm
required
string
Example: realm=/api

/api:固定値

Request Body schema: application/x-www-form-urlencoded
One of
grant_type
required
string (権限種別)

authorization_code:固定値(認証コード)

code
required
string (許可コード)

コールバックURLで取得した許可コード

redirect_uri
required
string (コールバックURL)

コールバックURL

client_id
required
string (クライアントID)

サービス利用申請時に発行されたクライアントID

client_secret
required
string (クライアントシークレットID)

サービス利用申請時に発行されたクライアントシークレットID

Responses

Request samples

POST https://auth.infomart.co.jp/openam/oauth2/access_token?realm=/api HTTP/1.1
Host: auth.infomart.co.jp
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
code=e1a82b2b-c612-4c2c-8a15-a2afc8e7b743
redirect_uri=https%3a%2f%2fxxxx%2fcallback
client_id=sample_client_id
client_secret=sample_secret

Response samples

Content type
application/json
{
  • "scope": "openid profile email qualified",
  • "exires_in": 300,
  • "token_type": "Bearer",
  • "access_token": "db36aeb3-021e-4a51-aaa6-b94c0da4542e",
  • "refresh_token": "f21b49b0-31b0-4441-8cc9-0ef7e14ae738"
}

アクセストークン(クレデンシャルズフロー)

発行

概要

バッチ形式でアクセストークンを取得する認証方式。

APIを利用するためのアクセストークンとリフレッシュトークンを発行する。
利用システムは取得したアクセストークンとリフレッシュトークンを保存して再利用することで、継続的にAPIを利用することができる。

アクセストークンの有効期限が切れた場合、アクセストークンと同時に取得したリフレッシュトークンを用いて、
アクセストークンとリフレッシュトークンの再発行を行う。

再発行は認可コードフローと共通のためそちらをご参照ください。

Request Body schema: application/x-www-form-urlencoded
user_id
required
string (ユーザ ID)

BtoB プラットフォームのログイン ID

user_password
required
string (ユーザパスワード)

BtoB プラットフォームのログインパスワード

client_id
required
string (クライアント ID)

API 利用の申請時に発行されたクライアントID

client_secret
required
string (クライアントシークレットID)

API 利用の申請時に発行されたクライアントシークレット ID

realm
string (レルム)

指定されたレルムで検証する。
※指定されなかった場合は/api レルムで検証する。

response_type
string (レスポンスタイプ)

レスポンス形式。 "json" または "xml" を指定。
※指定されなかった場合は"json"として扱う。

Responses

Request samples

POST https://auth.infomart.co.jp/api/credentials/access_token
Host: auth.infomart.co.jp
Content-Type: application/x-www-form-urlencoded

user_id=testid001@infomart.co.jp
user_password=sample_pwd
client_id= sample_client_id
client_secret= sample_secret

Response samples

Content type
application/json
{
  • "scope": "openid profile email qualified",
  • "exires_in": 300,
  • "token_type": "Bearer",
  • "access_token": "db36aeb3-021e-4a51-aaa6-b94c0da4542e",
  • "refresh_token": "f21b49b0-31b0-4441-8cc9-0ef7e14ae738"
}