[์šฐ์‚ฌ๊ธฐ] OAuth 2.0 Playground๋กœ ๊ตฌ๊ธ€ ์†Œ์…œ ๋กœ๊ทธ์ธ ํ…Œ์ŠคํŠธ ํ•ด๋ณด๊ธฐ

2026. 1. 15. 14:25ยท์šฐ์‚ฌ๊ธฐ ๊ฐœ๋ฐœ์ผ์ง€ ๐Ÿฐ

 

 

ํ…Œ์ŠคํŠธ์šฉ ํ† ํฐ์„ ์–ด๋–ป๊ฒŒ ์ƒ์„ฑํ•ด์•ผ ํ• ๊นŒ?

Google ์†Œ์…œ ๋กœ๊ทธ์ธ ๋ฐฑ์—”๋“œ ์ž‘์—…์„ ๋๋ƒˆ๊ณ  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ ๋‹จ๊ณ„์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ•  ํ† ํฐ ๊ฐ’์ด ํ•„์š”ํ–ˆ๋‹ค.

FE์—์„œ ํ† ํฐ์„ ๋ฐ›์•„์˜ค๋Š” ๊ฒŒ ์ œ์ผ ์ •ํ™•ํ•˜๊ฒ ์ง€๋งŒ, ์•„์ง ๊ฐœ๋ฐœ ์ „์ด๋ผ ํ† ํฐ์„ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ ๐Ÿฅน

๊ตฌ๊ธ€๋ง๊ณผ ํด๋กœ๋“œ์˜ ๋„์›€์œผ๋กœ  OAuth 2.0 Playground์—์„œ ํ† ํฐ ์ƒ์„ฑ์„ ํ•ด์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด์•˜๋‹ค.

 

 

( ๋งํฌ : https://developers.google.com/oauthplayground/ )

 

 

 

 

์ฃผ์˜์‚ฌํ•ญ 1. scopes์— `openid `๋ฅผ ํฌํ•จ์‹œ์ผœ์•ผ ๋œ๋‹ค. 

 

 

OpenID Connect(OIDC) ํ”„๋กœํ† ์ฝœ์˜ ๊ณต์‹ ์ŠคํŽ™์ƒ, id_token์„ ๋ฐœ๊ธ‰๋ฐ›๊ธฐ ์œ„ํ•ด์„œ๋Š” ์Šค์ฝ”ํ”„์— openid๋ฅผ ํฌํ•จ์‹œ์ผœ์•ผ ๋œ๋‹ค.

 -> ํ…Œ์ŠคํŠธ ํ•ด๋ณด๋‹ˆ๊นŒ email, profile๋งŒ ํฌํ•จ์‹œ์ผœ๋„ ์‘๋‹ต๊ฐ’์—  id_token ๊ฐ’์ด ํฌํ•จ๋ผ์„œ ์˜ค๊ธด ์™”๋Š”๋ฐ, ํ‘œ์ค€ ์ŠคํŒฉ ๊ธฐ์ค€์œผ๋กœ๋Š” openid๊ฐ€ ์Šค์ฝ”ํ”„์— ํฌํ•จ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ํ•จ.

 

 

์ฃผ์˜์‚ฌํ•ญ 2. ํ† ํฐ ๊ฐ’์€ `id_token` ๊ฐ’์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

access_token ๊ฐ’์„ ์•„๋ฌด๋ฆฌ ๋„˜๊ฒจ์ค˜๋„ ๊ณ„์† ์œ ํšจํ•˜์ง€ ์•Š์€ ํ† ํฐ๊ฐ’์ด๋ผ๋Š” ์˜ค๋ฅ˜๋งŒ ๋– ์„œ ํ•œ์ฐธ ์‚ฝ์งˆํ–ˆ๋Š”๋ฐ... ๐Ÿช

access_token์ด ์•„๋‹Œ id_token์„ ๋„˜๊ฒจ์ฃผ๋‹ˆ๊นŒ ์ •์ƒ์ ์œผ๋กœ ํ…Œ์ŠคํŠธ ํ†ต๊ณผํ–ˆ๋‹ค.

 

 

 

 

 

๐Ÿ”Ž id_token ๊ณผ access_token์˜ ์ฐจ์ด์  

 

id_token (์ธ์ฆ, Authentication)

- "์ด ์‚ฌ์šฉ์ž๊ฐ€ ๋ˆ„๊ตฌ์ธ๊ฐ€?"๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•จ -> ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž…์šฉ

- ์‚ฌ์šฉ์ž ์ด๋ฆ„, ์ด๋ฉ”์ผ, ํ”„๋กœํ•„ ์‚ฌ์ง„ ๋“ฑ์˜ ์ •๋ณด๊ฐ€ ์•”ํ˜ธํ™”๋œ JWT(JSON Web Token) ํ˜•์‹์œผ๋กœ ๋‹ด๊ฒจ ์žˆ์Œ

- BE๋Š” ๊ตฌ๊ธ€ ์„œ๋ฒ„์— ๋ฌผ์–ด๋ณผ ํ•„์š” ์—†์ด, ์ž์ฒด์ ์œผ๋กœ ์ˆ˜ํ•™์  ๊ฒ€์ฆ(์„œ๋ช… ํ™•์ธ)๋งŒ ์ˆ˜ํ–‰ํ•˜๊ณ , ์„œ๋ช…์ด ๋งž์œผ๋ฉด ํ† ํฐ ์•ˆ์˜ ๋‚ด์šฉ(payload)์„ ๋ฏฟ๊ณ , ๋ฐ”๋กœ ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋ฉด ๋œ๋‹ค.

 

access_token (์ธ๊ฐ€, Authorization)

- "์ด ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๊ธ€์˜ ๋ฆฌ์†Œ์Šค(์บ˜๋ฆฐ๋”, ์œ ํŠœ๋ธŒ ๋“ฑ)์— ์ ‘๊ทผํ•  ๊ถŒํ•œ์ด ์žˆ๋Š”๊ฐ€?"๋ฅผ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•จ -> API ์‚ฌ์šฉ์šฉ

- ๊ทธ ์ž์ฒด๋กœ๋Š” ์‚ฌ์šฉ์ž ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ์ง€ ์•Š์€ ๋‚œ์ˆ˜ ๋ฌธ์ž์—ด(Opaque String)์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ

- access token๋งŒ์œผ๋กœ๋Š” ์ด ํ† ํฐ์ด ์œ ํšจํ•œ์ง€, ๋ˆ„๊ตฌ์˜ ๊ฒƒ์ธ์ง€ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ๊ธ€ API๋ฅผ ํ˜ธ์ถœํ•ด์„œ ๋‹ค์‹œ ์‘๋‹ต ๊ฐ’์„ ๋ฐ›์•„์•ผ ํ•จ.

 

 

์ฃผ์˜์‚ฌํ•ญ3. playgroud ๊ฐ’์„ ์„ค์ •ํ•ด ์ค˜์•ผํ•œ๋‹ค.

    private val verifier: GoogleIdTokenVerifier =
        GoogleIdTokenVerifier
            .Builder(
                NetHttpTransport(),
                GsonFactory.getDefaultInstance(),
            ).setAudience(
                listOf(
                    googleProperties.clientId,
                ),
            ).build()

 

id_token์ด Google์—์„œ ๋ฐœ๊ธ‰ํ•ด์ค€ ํ† ํฐ์ด ๋งž๋Š”์ง€ ๊ฒ€์ฆํ•ด์ฃผ๋Š” GoogleIdTokenVerifier์„ ๊ตฌํ˜„ํ–ˆ์—ˆ๋‹ค.

์—ฌ๊ธฐ์— ios ํด๋ผ์ด์–ธํŠธ ์•„์ด๋””๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ios ์•ฑ์—์„œ ๋ฐœ๊ธ‰ ์š”์ฒญํ•œ ํ† ํฐ๋งŒ ๊ฒ€์ฆ ํ†ต๊ณผํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

 

verify() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด id_token ๋ฌธ์ž์—ด์„ ๋ฐ›์•„ GoogleIdToken ๊ฐ์ฒด๋กœ ๋งŒ๋“ค์–ด์„œ ๊ฒ€์ฆ์„ ์ง„ํ–‰ํ•œ๋‹ค.

payload ๊ฐ’์„ ๋ณด๋ฉด "aud"์™€ "azp"๋ผ๋Š” Key๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ, ๊ฐ๊ฐ "ํ† ํฐ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€์ƒ"๊ณผ "ํ† ํฐ์„ ์š”์ฒญํ•œ ํด๋ผ์ด์–ธํŠธ"๋ฅผ ์˜๋ฏธํ•œ๋‹ค. (์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ, aud์™€ azp ๊ฐ’์€ ๋™์ผํ•˜๋‹ค.)

 

 

๊ฒ€์ฆ ๊ฐ์ฒด๋Š” ์ด "aud" ๊ฐ’์ด GoogleIdTokenVerifier ์ƒ์„ฑ ์‹œ ์„ค์ •ํ–ˆ๋˜ ํด๋ผ์ด์–ธํŠธ id๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ๊ฒ€์ฆ์„ ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ,

OAuth 2.0 Playground๋กœ ๋ฐœ๊ธ‰ ๋ฐ›์€ ํ† ํฐ์€ aud ๊ฐ’์ด ๋‹ฌ๋ผ ๊ฒ€์ฆ์— ์‹คํŒจํ–ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์•„๋ž˜์™€ ๊ฐ™์ด Playground๋กœ ๊ฒ€์ฆ ๋ฐ›์€ ํ† ํฐ๋„ ํ†ต๊ณผ๋˜๋„๋ก ์„ค์ •์„ ์ถ”๊ฐ€ํ•ด์ค˜์•ผํ•œ๋‹ค.

 

*์šด์˜ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฐ˜์˜๋˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•ด์•ผํ•œ๋‹ค.

 

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'์šฐ์‚ฌ๊ธฐ ๊ฐœ๋ฐœ์ผ์ง€ ๐Ÿฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์šฐ์‚ฌ๊ธฐ] AWS Lightsail ๋ฐฐํฌ ์‹œ, GitHub Actions๋กœ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ฃผ์ž…ํ•˜๊ธฐ  (0) 2026.01.26
[์šฐ์‚ฌ๊ธฐ] Github Actions DEV ๋ฐฐํฌ์šฉ workflow ์ž‘์„ฑ  (1) 2026.01.21
[์šฐ์‚ฌ๊ธฐ] Github Actions PR ํ…Œ์ŠคํŠธ์šฉ workflow ๋ฐ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ , ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ตฌ์„ฑ  (0) 2026.01.20
'์šฐ์‚ฌ๊ธฐ ๊ฐœ๋ฐœ์ผ์ง€ ๐Ÿฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [์šฐ์‚ฌ๊ธฐ] AWS Lightsail ๋ฐฐํฌ ์‹œ, GitHub Actions๋กœ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ฃผ์ž…ํ•˜๊ธฐ
  • [์šฐ์‚ฌ๊ธฐ] Github Actions DEV ๋ฐฐํฌ์šฉ workflow ์ž‘์„ฑ
  • [์šฐ์‚ฌ๊ธฐ] Github Actions PR ํ…Œ์ŠคํŠธ์šฉ workflow ๋ฐ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ , ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ตฌ์„ฑ
ํ•ด๋‹ˆ ๐ŸŒฑ
ํ•ด๋‹ˆ ๐ŸŒฑ
๊ธฐ๋ก์ด ์ž์‚ฐ์ด๋‹ค ( •ฬ€แด—•ฬ )ูˆโœ๏ธ
  • ํ•ด๋‹ˆ ๐ŸŒฑ
    haeni.dev
    ํ•ด๋‹ˆ ๐ŸŒฑ
  • ๋งํฌ

    • github
    • velog
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (25)
      • ์šฐ์‚ฌ๊ธฐ ๊ฐœ๋ฐœ์ผ์ง€ ๐Ÿฐ (4)
      • Today I Learned ๐Ÿง (19)
      • ๋ถ„๋…ธ์˜ ํƒ€์ดํ•‘ ๋กœ๊ทธ ๐Ÿ”ฅ (2)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    IT
    ๋ฐฑ์—”๋“œ
    til
    ๊ฐœ๋ฐœ์ž
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
    AWS
    springboot
    ์ฝ”ํ…Œ
    ๊ฐœ๋ฐœ
    ci/cd
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.5
ํ•ด๋‹ˆ ๐ŸŒฑ
[์šฐ์‚ฌ๊ธฐ] OAuth 2.0 Playground๋กœ ๊ตฌ๊ธ€ ์†Œ์…œ ๋กœ๊ทธ์ธ ํ…Œ์ŠคํŠธ ํ•ด๋ณด๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”