OpenID Connect Authorization Request

ユーザー様をログインするために、御社サービスから OPTiM Store へ認可リクエストを送信するAPIです。

Request

ユーザー様をログインさせるタイミングで、御社サービスから OPTiM Store の認可エンドポイント (Authorization Endpoint) へユーザー様をリダイレクトさせてください。

Method

  • GET

Resource URL

  • URLは、OPTiM Store との契約時にご連絡いたします。
  • 本章では、https://store-xyz-federation.optim.co.jp/connect/authorization として記載致します。

Header Parameters

  • なし

Query Parameters

Key Value
client_id 事前登録時に取得した Client ID
scope openid 固定
response_type code 固定
redirect_uri 事前登録した御社サービス側の OpenID Connect Callback URL
state 御社サービス側のセッションに紐付いた任意の文字列。redirect_uri への Callback 時にそのままの値が返されるので、CSRF 対策に利用してください。
nonce 御社サービス側のセッションに紐付いた任意の文字列。後述の ID Token にそのままの値が含まれて返されるので、Code 置換攻撃対策に利用してください。
prompt OPTiM Store 側でユーザー様にパスワード入力を強制 (強制ログイン) する場合には login という値を指定してください。それ以外の場合にはこのパラメータは不要です。

Request Parameters

  • なし

Sample Body

  • なし

Concept Code

以下に Ruby での Authorization Request 送信のコンセプトコードを記載します。(実際の利用時には OpenID Connect ライブラリ等の利用を推奨します)

params = {
  client_id: '<your-client-id-for-the-tenant>',
  scope: 'openid',
  response_type: 'code',
  redirect_uri: 'https://your-service.example.com/optim-store/callback',
  state: '<session-binded-opaque-value>',
  nonce: '<session-binded-opaque-value>',
}
authorization_endpoint = 'https://store-xyz-federation.optim.co.jp/connect/authorization'

authorization_endpoint_with_request_params = [authorization_endpoint, params.to_query].join('?')
# https://store-xyz-federation.optim.co.jp/connect/authorization?
#   client_id=%3Cyour-client-id-for-the-tenant%3E&
#   redirect_uri=https%3A%2F%2Fyour-service.example.com%2Foptim-store%2Fcallback&
#   response_type=code&scope=openid&state=xxx&nonce=yyy

redirect_to authorization_endpoint_with_request_params

これにより、ユーザー様は、自身の端末上のブラウザで、OPTiM Store のログインページにアクセスすることになります。

Response

正しく Authorization Request が送信された場合、ユーザー様には OPTiM Store へのログイン画面が表示されます(既にOPTiM Storeヘログインしている場合は、スキップされます)。
ユーザー様のログインが完了しましたら、下記の仕様に基いて御社サービス側の Callback URLにリダイレクトにてアクセスいたします。

リクエストに問題がない場合は、 御社サービスより Token Request へのアクセスを行い、処理の続きを行ってください。

Resource URL

  • 任意のURL
  • 本章では、https://your-service.example.com/optim-store/callback として記載致します。

Header Parameters

  • なし

Query Parameters

https://your-service.example.com/optim-store/callback?code=<onetime-token>&state=<exact-value-you-sent>
Key Value
code OpenID Connect における認可コードです。Token Request で利用します。
state Authorization Request で送付されたstateと同じ値です。

code は次のセッションで認証結果を取得する際に必要になります。
なお、state がリクエスト送信時のブラウザセッションと紐付いていない場合は CSRF 攻撃の可能性があるため、その Callback リクエストはエラーとして受け付けないようにしてください。

Error Request

code が付与されていない場合は、ユーザーのログイン失敗等によるエラーレスポンスです。その場合は error というパラメータが付与されています。

以下にエラー時のリダイレクト URL の例を記載します。

https://your-service.example.com/optim-store/callback?error=access_denied&state=<exact-value-you-sent>

Request Parameters

  • なし

Sample Body

  • なし