認可エンドポイント
■ Endpoint
GET /authorize
Request
■ Header
| Name | Required | Regex | Description |
|---|---|---|---|
| x-auth-ui-session-mode | - | ^body$ | body 指定時は 302 リダイレクトの代わりに JSON Body (redirect_url, session_id) を返す |
■ Query
| Name | Required | Regex | Description |
|---|---|---|---|
| response_type | ○ | ^code$ | 認可コードフロー固定値 |
| client_id | ○ | ^[0-9]{32}$ | クライアント識別子 |
| redirect_uri | ○ | ^(https://.+|http://(localhost|osolab-[A-Za-z0-9-]+-local)(:[0-9]+)?(/.*)?)$ | 認可結果のリダイレクト先。通常は https、検証用途の localhost または osolab-*-local のみ http を許容 |
| state | ○ | ^.{1,255}$ | CSRF対策用のクライアント状態値 |
| scope | ○ | ^[A-Za-z0-9_ ]+$ | 要求するスコープの空白区切り文字列 |
| code_challenge_method | ○ | ^S256$ | PKCE チャレンジ方式 |
| code_challenge | ○ | ^[A-Za-z0-9._~-]{43,128}$ | PKCE コードチャレンジ |
| nonce | ○ | ^.{1,255}$ | IDトークン再生対策用ノンス |
■ Body
なし
Response
■ Header
| Name | Description |
|---|---|
| Location | リダイレクトレスポンス時のみ。ログイン画面、同意画面、または redirect_uri |
| Set-Cookie | 認可セッション発行時に AuthRequestSessionId を設定(互換として session_id も設定) |
■ Query
| Name | Type | Description |
|---|---|---|
| code | String | 正常時のみ認可コードを設定 |
| state | String | 正常時のみリクエストのstateを設定 |
| error | String | エラー時のみ |
| error_description | String | エラー時のみ。エラー内容 |
■ ResponseCode
| Code | HttpStatusCode | Description |
|---|---|---|
| 00001 | 400 | リクエストの内容が異常です |
| 00002 | 400 | 不正なクライアント。client_id が未登録または無効 |
| 00005 | 400 | リダイレクトURIが不正 |
■ 処理概要
- 認可リクエストを検証する
- Auth Session が有効なら規約・scope 同意状態を確認する
- 未ログイン時は認可セッションを発行し、
Set-CookieでAuthRequestSessionId(互換でsession_id)を払い出してGET /loginに遷移させる - Portal UI 方式では認可セッションIDを URL query に付与せず、Cookieで引き継ぐ
- 同意済みなら認可コードを発行して
redirect_uriへリダイレクトする - 未同意なら規約同意画面に遷移させる
- 検証エラー時はJSON Body付きで400を返却する