Skip to content

oauth errors

Asa edited this page Aug 23, 2025 · 8 revisions

OAuth ใงๅ‡บใ‚‹ใ‚จใƒฉใƒผใซใคใ„ใฆ

Server Error ใ‚„ 405 Method Not Allowed ใฏ้™คใ„ใฆใ„ใพใ™

Authorization Endpoint

Tip

Bad Request ็ณปใฎใ‚จใƒฉใƒผใฏ OAuth Client ๅดใซใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใ•ใ‚Œใพใ›ใ‚“ใ€‚ OAuth Resource Owner (OAuth ใงใ€ŒๅŒๆ„ใ™ใ‚‹ใ€ใ€Œๆ‹’ๅฆใ™ใ‚‹ใ€ใ‚’้ธใถใƒฆใƒผใ‚ถใƒผ) ๅดใงใ“ใฎใ‚จใƒฉใƒผใŒ่กจ็คบใ•ใ‚Œใพใ™ใ€‚

ใใ‚Œไปฅๅค–ใฎใ‚จใƒฉใƒผใฏใ€ใ‚ฏใ‚จใƒชใƒ‘ใƒฉใƒกใƒผใ‚ฟใงๆŒ‡ๅฎš ใพใŸใฏ IdP ใ‚ทใ‚นใƒ†ใƒ ใซ็™ป้Œฒ ใ•ใ‚ŒใŸ redirect_uri ใซๅฏพใ—ใฆใ€ใ‚ฏใ‚จใƒชใƒ‘ใƒฉใƒกใƒผใ‚ฟใซ error, error_description, error_uri, state ใŒไป˜ไธŽใ•ใ‚Œใฆใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใ•ใ‚Œใพใ™ใ€‚

Owner ใŒใ€ŒๅŒๆ„ใ™ใ‚‹ใ€ใ€Œๆ‹’ๅฆใ™ใ‚‹ใ€ใ‚’้ธใถๅ‰ใซๅ‡บใ‚‹ใ‚จใƒฉใƒผ

Bad Request: invalid client_id

client_id ใŒใ‚ฏใ‚จใƒชใƒ‘ใƒฉใƒกใƒผใ‚ฟใซๅญ˜ๅœจใ—ใชใ„ใ‹ใ€่ค‡ๆ•ฐๅญ˜ๅœจใ—ใฆใ„ใ‚‹ใ‚ˆใ†ใงใ™ใ€‚ ใ‚ฏใ‚จใƒชใƒ‘ใƒฉใƒกใƒผใ‚ฟใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚

Bad Request: client_id not registered

client_id ใŒ IdP ใ‚ทใ‚นใƒ†ใƒ ใง็™ป้Œฒใ•ใ‚Œใฆใ„ใพใ›ใ‚“ใ€‚ https://id.maximum.vc/oauth-apps ใซ็™ป้Œฒใ•ใ‚Œใฆใ„ใ‚‹ใ‹็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚

Bad Request: invalid redirect_uri

redirect_uri ใŒใ‚ฏใ‚จใƒชใƒ‘ใƒฉใƒกใƒผใ‚ฟใซ่ค‡ๆ•ฐๅญ˜ๅœจใ—ใฆใ„ใ‚‹ใ‚ˆใ†ใงใ™ใ€‚ ใ‚ฏใ‚จใƒชใƒ‘ใƒฉใƒกใƒผใ‚ฟใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚

Bad Request: redirect_uri not registered

redirect_uri ใŒใ‚ฏใ‚จใƒชใƒ‘ใƒฉใƒกใƒผใ‚ฟใงๆธกใ•ใ‚Œใฆใ„ใชใ„ใ†ใˆใ€ IdP ใ‚ทใ‚นใƒ†ใƒ ไธŠใงใ‚‚็™ป้Œฒใ•ใ‚Œใฆใ„ใพใ›ใ‚“ใ€‚ ใ‚ฏใ‚จใƒชใƒ‘ใƒฉใƒกใƒผใ‚ฟใซ redirect_uri ใ‚’ไป˜ไธŽใ™ใ‚‹ใ‹ใ€ IdP ใ‚ทใ‚นใƒ†ใƒ ไธŠใง็™ป้Œฒใ—ใฆใใ ใ•ใ„ใ€‚

Bad Request: ambiguous redirect_uri

redirect_uri ใŒใ‚ฏใ‚จใƒชใƒ‘ใƒฉใƒกใƒผใ‚ฟใงๆธกใ•ใ‚Œใฆใ„ใพใ›ใ‚“ใŒใ€ IdP ใ‚ทใ‚นใƒ†ใƒ ไธŠใงใฏ่ค‡ๆ•ฐ็™ป้Œฒใ•ใ‚Œใฆใ„ใพใ™ใ€‚ ใ‚ฏใ‚จใƒชใƒ‘ใƒฉใƒกใƒผใ‚ฟใซ redirect_uri ใ‚’ไป˜ไธŽใ—ใฆใใ ใ•ใ„ใ€‚

Bad Request: invalid redirect_uri

ใ‚ฏใ‚จใƒชใƒ‘ใƒฉใƒกใƒผใ‚ฟใงๆŒ‡ๅฎšใ•ใ‚ŒใŸ redirect_uri ใฏ็ตถๅฏพ URI (https://example.com/foo/bar ใฎๅฝข) ใงใฏใชใ„ใ‚ˆใ†ใงใ™ใ€‚ ็›ธๅฏพ URL (./foo/bar ใฎๅฝข) ใซใชใฃใฆใ„ใชใ„ใ‹็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚

Bad Request: redirect_uri not registered

ใ‚ฏใ‚จใƒชใƒ‘ใƒฉใƒกใƒผใ‚ฟใงๆŒ‡ๅฎšใ•ใ‚ŒใŸ redirect_uri ใฏใ€ IdP ใ‚ทใ‚นใƒ†ใƒ ไธŠใง็™ป้Œฒใ•ใ‚Œใฆใ„ใ‚‹ใฉใฎ URI ใจใ‚‚็•ฐใชใฃใฆใ„ใพใ™ใ€‚ ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃไธŠใฎใƒชใ‚นใ‚ฏใŒใ‚ใ‚‹ใŸใ‚ใ€็ถš่กŒใ•ใ›ใ‚‹ใ‚ใ‘ใซใฏใ„ใใพใ›ใ‚“ใ€‚ IdP ใ‚ทใ‚นใƒ†ใƒ ไธŠใงใฎ URI ใซ็™ป้Œฒใ•ใ‚Œใฆใ„ใ‚‹ใ‹็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚ ใชใŠใ€ redirect_uri ๅ†…ใฎใ‚ฏใ‚จใƒชใƒ‘ใƒฉใƒกใƒผใ‚ฟ (?foo=bar) ใฏ็™ป้Œฒใ•ใ‚Œใฆใ„ใ‚‹ใ‚‚ใฎใจ็•ฐใชใฃใฆใ„ใฆใ‚‚ๅ•้กŒใ‚ใ‚Šใพใ›ใ‚“ใ€‚

Bad Request: too many state

ใ‚ฏใ‚จใƒชใƒ‘ใƒฉใƒกใƒผใ‚ฟใงๆŒ‡ๅฎšใ•ใ‚Œใฆใ„ใ‚‹ state ใŒ่ค‡ๆ•ฐๅญ˜ๅœจใ—ใฆใ„ใ‚‹ใ‚ˆใ†ใงใ™ใ€‚ ใ‚ฏใ‚จใƒชใƒ‘ใƒฉใƒกใƒผใ‚ฟใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚

invalid_request: response_type required

ใ‚ฏใ‚จใƒชใƒ‘ใƒฉใƒกใƒผใ‚ฟใง response_type ใŒๆŒ‡ๅฎšใ•ใ‚Œใฆใ„ใพใ›ใ‚“ใ€‚

unsupported_response_type: only 'code' is supported

IdP ใงใฏ response_type=code (Authorization Code Flow) ใฎใฟใŒใ‚ตใƒใƒผใƒˆใ•ใ‚Œใฆใ„ใพใ™ใ€‚ ใใ‚Œไปฅๅค–ใ‚’ไฝฟ็”จใ—ใŸใ„ๅ ดๅˆใ€ใใฎ็†็”ฑใ‚’ๆ›ธใ„ใฆ Issue ใซๆŠ•ใ’ใฆใใ ใ•ใ„ใ€‚

invalid_scope: invalid scope

scope ใฎๅฝขๅผใŒ็•ฐใชใฃใฆใ„ใพใ™ใ€‚ server/src/constants/scope.ts ใฎ SCOPES_BY_ID ใซๅฎš็พฉใ•ใ‚Œใฆใ„ใ‚‹ name ใ‚’ใ‚นใƒšใƒผใ‚นๅŒบๅˆ‡ใ‚Šใงๅˆ—ๆŒ™ใ—ใฆใใ ใ•ใ„ใ€‚

invalid_scope: there are duplicates in scopes

ใใฎใพใ‚“ใพใงใ™ใŒใ€ๆŒ‡ๅฎšใ•ใ‚Œใฆใ„ใ‚‹ scope ใซ้‡่ค‡ใŒใ‚ใ‚Šใพใ™ใ€‚ ้‡่ค‡ใ‚’ๅ–ใ‚Š้™คใ„ใฆใใ ใ•ใ„ใ€‚

invalid_scope: non-registered scope(s): foo, bar, ...

foo, bar, ... ใฏ IdP ใ‚ทใ‚นใƒ†ใƒ ไธŠใง่จญๅฎšใ•ใ‚Œใฆใ„ใ‚‹ไปฅไธŠใฎๆจฉ้™ใ‚’่ฆๆฑ‚ใ—ใฆใ„ใพใ™ใ€‚ OAuth ใ‚ขใƒ—ใƒช็ฎก็†็”ป้ขใงใ€ scope ใฎ่จญๅฎšใ‚’ๆ›ดๆ–ฐใ—ใฆใใ ใ•ใ„ใ€‚

invalid_scope: there must be at least one scope specified

ใปใผ่ตทใใชใ„ใฏใšใงใ™ใŒใ€ (IdP ใง่จญๅฎšใ•ใ‚Œใฆใ„ใ‚‹) ใ‹ใค (scope ใงๅฎš็พฉใ•ใ‚Œใฆใ„ใ‚‹) ใ‚ˆใ†ใชใ‚‚ใฎใŒๅญ˜ๅœจใ—ใชใ„ใ“ใจใ‚’่กจใ—ใพใ™ใ€‚ ใ‚ฏใ‚จใƒชใƒ‘ใƒฉใƒกใƒผใ‚ฟใ‚„ IdP ใ‚ทใ‚นใƒ†ใƒ ไธŠใงใฎ scope ่จญๅฎšใ‚’่ฆ‹็›ดใ—ใฆใใ ใ•ใ„ใ€‚

OpenID Connect ้–ข้€ฃใฎใ‚จใƒฉใƒผ

invalid_request: invalid nonce

nonce ใŒ string ใ˜ใ‚ƒใชใ„ใฟใŸใ„ใงใ™ใ€‚ ใใ‚“ใชใ“ใจใ‚ใ‚Šใพใ™ใ‹๏ผŸ

invalid_request: invalid prompt

prompt ใฏ none, login, consent, select_account ใฎใฟๅฏพๅฟœใ—ใฆใ„ใพใ™ใ€‚

invalid_request: invalid max_age

max_age ใŒๆ•ดๆ•ฐๅ€คใงใฏใชใ„ใ‚ˆใ†ใงใ™ใ€‚ ๆœ€็ต‚่ช่จผๆ™‚ๅˆปใ‹ใ‚‰ใฎ็ง’ๆ•ฐใ‚’ๆŒ‡ๅฎšใ—ใพใ—ใ‚‡ใ†ใ€‚

invalid_request: invalid response_mode

response_mode ใฏ query, fragment ใฎใฟๅฏพๅฟœใ—ใฆใ„ใพใ™ใ€‚

invalid_request: response_mode='fragment' is not allowed when response_type='code'

ใใฎใพใ‚“ใพใงใ™ใ€‚

invalid_request: redirect_uri required for OpenID Connect Implicit Flow

ใใฎใพใ‚“ใพใงใ™ใ€‚ ไป•ๆง˜ใงๅฎšใ‚ใ‚‰ใ‚Œใฆใ„ใ‚‹ใฎใงๅพ“ใฃใฆใใ ใ•ใ„ใ€‚

invalid_request: redirect_uri not registered for OpenID Connect Implicit Flow

ใใฎใพใ‚“ใพใงใ™ใ€‚ ไป•ๆง˜ใงๅฎšใ‚ใ‚‰ใ‚Œใฆใ„ใ‚‹ใฎใงๅพ“ใฃใฆใใ ใ•ใ„ใ€‚

invalid_request: redirect_uri must be https for OpenID Connect Implicit Flow

ใใฎใพใ‚“ใพใงใ™ใ€‚ ไป•ๆง˜ใงๅฎšใ‚ใ‚‰ใ‚Œใฆใ„ใ‚‹ใฎใงๅพ“ใฃใฆใใ ใ•ใ„ใ€‚

interaction_required: End-User must consent to use OpenID Connect

prompt=none ใซใ—ใฆใ„ใ‚‹ๅ ดๅˆใซ่ตทใ“ใ‚Šใพใ™ใ€‚ ๆœชๅฏพๅฟœใชใฎใงๅˆฅใฎๅ€คใ‚’ๆŒ‡ๅฎšใ—ใฆใใ ใ•ใ„ใ€‚

request_not_supported: request parameter is not supported

ใฏใ„

ใ€ŒๅŒๆ„ใ™ใ‚‹ใ€ใ€Œๆ‹’ๅฆใ™ใ‚‹ใ€ใ‚’้ธใ‚“ใ ๅพŒใซๅ‡บใ‚‹ใ‚จใƒฉใƒผ

Bad Request: invalid auth_token

Owner ใŒใƒชใ‚ฏใ‚จใ‚นใƒˆใ‚’ๆ”นๅค‰ใ—ใŸๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚

Bad Request: authorization request expired

5 ๅˆ†ไปฅๅ†…ใซใ€ŒๅŒๆ„ใ™ใ‚‹ใ€ใ€Œๆ‹’ๅฆใ™ใ‚‹ใ€ใ‚’้ธๆŠžใ•ใ‚Œใพใ›ใ‚“ใงใ—ใŸใ€‚

access_denied: The user denied the request

Resource Owner ใŒ่ชๅฏใ—ใชใ‹ใฃใŸใ“ใจใ‚’่กจใ—ใฆใ„ใพใ™ใ€‚

Access Token Endpoint

Tip

ใ‚จใƒฉใƒผใŒ่ตทใใชใ‹ใฃใŸๅ ดๅˆใ€ไปฅไธ‹ใฎๅ†…ๅฎนใŒ JSON ใงใƒฌใ‚นใƒใƒณใ‚นใจใ—ใฆ่ฟ”ใ•ใ‚Œใพใ™ใ€‚

invalid_request: Authorization header is not allowed

Authorization: foo ใŒใƒชใ‚ฏใ‚จใ‚นใƒˆใƒ˜ใƒƒใƒ€ใซไป˜ไธŽใ•ใ‚Œใฆใ„ใพใ™ใ€‚ ๅค–ใ—ใฆใใ ใ•ใ„ใ€‚

invalid_request: Invalid Parameters

ใƒ‘ใƒฉใƒกใƒผใ‚ฟใŒใŠใ‹ใ—ใ„ใฟใŸใ„ใงใ™ใ€‚

grant_type: string
code: string
redirect_uri?: URL
client_id: string
client_secret: string

ใ‚’ FormData ใง้€ใฃใฆใใ ใ•ใ„ใ€‚

invalid_grant: Invalid Code (Not Found, Expired, etc)

Code ใŒๆญฃใ—ใใชใ„ใ‚ˆใ†ใงใ™ใ€‚ Authorization Endpoint ใ‹ใ‚‰ใฎ callback ใงๅพ—ใ‚‰ใ‚ŒใŸ code ใ‚’ใใฎใพใพๅ…ฅใ‚Œใฆใใ ใ•ใ„ใ€‚ ใใฎใพใพๅ…ฅใ‚Œใฆใ„ใ‚‹ๅ ดๅˆใฏใ€ๆœŸ้™ๅˆ‡ใ‚Œใซใชใฃใฆใ„ใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚ Callback ใ‹ใ‚‰ 1 ๅˆ†ไปฅๅ†…ใซ Access Token Request ใ‚’้€ใฃใฆใใ ใ•ใ„ใ€‚

invalid_request: Redirect URI mismatch

redirect_uri ใŒ Authorization Endpoint ใงๆŒ‡ๅฎšใ•ใ‚ŒใŸใ‚‚ใฎใจ็•ฐใชใฃใฆใ„ใพใ™ใ€‚ ใ“ใกใ‚‰ใฏใ‚ฏใ‚จใƒชใƒ‘ใƒฉใƒกใƒผใ‚ฟใ‚‚ๅซใ‚ใฆไธ€่‡ดใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚

invalid_client: Invalid client_id or client_secret

client_id, client_secret ใฎ็ต„ใŒ่ฆ‹ใคใ‹ใ‚Šใพใ›ใ‚“ใงใ—ใŸใ€‚ ๆญฃใ—ใ„ใƒšใ‚ขใ‚’ๅ…ฅๅŠ›ใ—ใฆใ„ใ‚‹ใ‹็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚

unsupported_grant_type: grant_type must be authorization_code

IdP ใงใฏ grant_type=authorization_code (Authorization Code Flow) ใฎใฟใŒใ‚ตใƒใƒผใƒˆใ•ใ‚Œใฆใ„ใพใ™ใ€‚ ใใ‚Œไปฅๅค–ใ‚’ไฝฟ็”จใ—ใŸใ„ๅ ดๅˆใ€ใใฎ็†็”ฑใ‚’ๆ›ธใ„ใฆ Issue ใซๆŠ•ใ’ใฆใใ ใ•ใ„ใ€‚

invalid_grant: Invalid Code (Already Used)

Code ใฎๅ†ๅˆฉ็”จใฏใงใใพใ›ใ‚“ใ€‚

Clone this wiki locally