OAuth 2.0 Client - application.yml, OAuth2ClientProperties
ํด๋ผ์ด์ธํธ ๊ถํ ๋ถ์ฌ ์์ฒญ ์์
ํด๋ผ์ด์ธํธ๊ฐ ์ธ๊ฐ ์๋ฒ๋ก ๊ถํ ๋ถ์ฌ ์์ฒญ์ ํ๊ฑฐ๋ ํ ํฐ ์์ฒญ์ ํ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ ์ ๋ณด ๋ฐ ์๋ํฌ์ธํธ ์ ๋ณด๋ฅผ ์ฐธ์กฐํด์ ์ ๋ฌํ๋ค.
application.ymlํ๊ฒฝ์ค์ ํ์ผ์ ํด๋ผ์ด์ธํธ ์ค์ ๊ณผ ์ธ๊ฐ ์๋ฒ ์๋ํฌ์ธํธ ์ค์ ์ ํ๋ค.์ด๊ธฐํ๊ฐ ์งํ๋๋ฉด
applcation.yml์ ํด๋ผ์ด์ธํธ ๋ฐ ์๋ํฌ์ธํธ ์ ๋ณด๊ฐOAuth2ClientProperties์ ๊ฐ ์์ฑ์ ๋ฐ์ธ๋ฉ ๋๋ค.OAuth2ClientProperties์ ๋ฐ์ธ๋ฉ ๋์ด ์๋ ์์ฑ์ ๊ฐ์ ์ธ๊ฐ ์๋ฒ๋ก ๊ถํ ๋ถ์ฌ ์์ฒญ์ ํ๊ธฐ ์ํ ClientRegistration ํด๋์ค์ ํ๋์ ์ ์ฅ๋๋ค.OAuth2Client๋ ClientRegistration ์ ์ฐธ์กฐํด์ ๊ถํ ๋ถ์ฌ ์์ฒญ์ ์ํ ๋งค๊ฐ๋ณ์๋ฅผ ๊ตฌ์ฑํ๊ณ ์ธ๊ฐ ์๋ฒ์ ํต์ ํ๋ค.

application.yml
spring:
security:
oauth2:
client:
registration: # ํด๋ผ์ด์ธํธ ์ค์
keycloak:
client-id: oauth2-client-app # ์๋น์ค ๊ณต๊ธ์์ ๋ฑ๋ก๋ ํด๋ผ์ด์ธํธ ์์ด๋
client-name: oauth2-client-app # ํด๋ผ์ด์ธํธ ์ด๋ฆ
client-secret: ANwKmYvCcxiQbjsi4jh1JHqUWikngjec # ์๋น์ค ๊ณต๊ธ์์ ๋ฑ๋ก๋ ํด๋ผ์ด์ธํธ ๋น๋ฐ๋ฒํธ
redirect-uri: http://localhost:8081/login/oauth2/code/keycloak # ์ธ๊ฐ ์๋ฒ์์ ๊ถํ ์ฝ๋ ๋ถ์ฌ ํ ํด๋ผ์ด์ธํธ๋ก ๋ฆฌ๋ค์ด๋ ํธ ํ๋ ์์น
# "/login/oauth2/code" ๋ ์คํ๋ง ์ํ๋ฆฌํฐ์์ ์ ํด๋์ ๊ธฐ๋ณธ๊ฐ
authorization-grant-type: authorization_code # OAuth 2.0 ๊ถํ ๋ถ์ฌ ํ์
client-authentication-method: client_secret_basic # ํด๋ผ์ด์ธํธ ์๊ฒฉ ์ฆ๋ช
์ ์ก ๋ฐฉ์
scope: # ๋ฆฌ์์ค์ ์ ๊ทผ ์ ํ ๋ฒ์
- openid
- email
- profile
provider: # ๊ณต๊ธ์ ์ค์
keycloak:
authorization-uri: http://localhost:8080/realms/oauth2/protocol/openid-connect/auth # OAuth 2.0 ๊ถํ ์ฝ๋ ๋ถ์ฌ ์๋ํฌ์ธํธ
token-uri: http://localhost:8080/realms/oauth2/protocol/openid-connect/token # OAuth 2.0 ํ ํฐ ์๋ํฌ์ธํธ
issuer-uri: http://localhost:8080/realms/oauth2 # ์๋น์ค ๊ณต๊ธ์ ์์น
user-info-uri: http://localhost:8080/realms/oauth2/protocol/openid-connect/userinfo # OAuth 2.0 UserInfo ์๋ํฌ์ธํธ
jwk-set-uri: http://localhost:8080/realms/oauth2/protocol/openid-connect/certs # OAuth 2.0 JwkSetUri ์๋ํฌ์ธํธ
user-name-attribute: preferred_username # OAuth 2.0 ์ฌ์ฉ์๋ช
์ ์ถ์ถํ๋ ํด๋ ์๋ช
ํด๋ผ์ด์ธํธ ์๊ฒฉ ์ฆ๋ช ์ ์ก ๋ฐฉ์ ์ข ๋ฅ
client_secret_basic
ํด๋ผ์ด์ธํธ๊ฐ
client_id์client_secret์ HTTP ๊ธฐ๋ณธ ์ธ์ฆ ํค๋์ ํฌํจํ์ฌ ์๋ฒ์ ์ธ์ฆ ์์ฒญ์ ๋ณด๋ธ๋ค.HTTP ์์ฒญ์
Authorizationํค๋์client_id์client_secret์ Base64๋ก ์ธ์ฝ๋ฉํ์ฌ Basic ๋ฐฉ์์ผ๋ก ์ ์กํ๋ค.client_secret_post
ํด๋ผ์ด์ธํธ๊ฐ
client_id์client_secret์ ์์ฒญ ๋ณธ๋ฌธ์ ํฌํจํ์ฌ ์๋ฒ์ ์ธ์ฆ ์์ฒญ์ ๋ณด๋ธ๋ค.
client_id์client_secret์ application/x-www-form-urlencoded ํ์์ ์์ฒญ ๋ณธ๋ฌธ์ ํฌํจํ์ฌ ์ ์กํ๋ค.client_secret_jwt
ํด๋ผ์ด์ธํธ๊ฐ
client_secret์ ์ฌ์ฉํ์ฌ JWT๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ ์ธ์ฆ ํ ํฐ์ผ๋ก ์ฌ์ฉํ๋ค.JWT๋
client_id์ ๊ธฐํ ํด๋ ์์ ํฌํจํ์ฌ,client_secret์ผ๋ก ์๋ช ๋๋ค.private_key_jwt
ํด๋ผ์ด์ธํธ๊ฐ ๊ณต๊ฐ ํค์ ๊ฐ์ธ ํค ์์ ์ฌ์ฉํ์ฌ JWT๋ฅผ ์์ฑํ๊ณ , ์ด๋ฅผ ์ธ์ฆ ํ ํฐ์ผ๋ก ์ฌ์ฉํ๋ค.
JWT๋
client_id์ ๊ธฐํ ํด๋ ์์ ํฌํจํ๋ฉฐ, ํด๋ผ์ด์ธํธ์ ๊ฐ์ธ ํค๋ก ์๋ช ๋๋ค.none
ํด๋ผ์ด์ธํธ ์ธ์ฆ์ ์ฌ์ฉํ์ง ์์ผ๋ฉฐ, ํด๋ผ์ด์ธํธ๊ฐ ๊ณต๊ฐ ์์์ ์ ๊ทผํ ๋ ์ฌ์ฉ๋๋ค.
client_id๋ง์ ์ฌ์ฉํ๋ฉฐ,client_secret์ด ํ์ํ์ง ์๋๋ค.
OAuth2ClientProperties


Registration ์ ์ธ๊ฐ ์๋ฒ์ ๋ฑ๋ก๋ ํด๋ผ์ด์ธํธ ๋ฐ ์์ฒญ ํ๋ผ๋ฏธํฐ ์ ๋ณด๋ฅผ ๋ํ๋ธ๋ค.
Provider ๋ ๊ณต๊ธ์์๊ฒ ์ ๊ณตํ๋ ์๋ํฌ์ธํธ ๋ฑ์ ์ ๋ณด๋ฅผ ๋ํ๋ธ๋ค.
ํด๋ผ์ด์ธํธ ๋ฐ ๊ณต๊ธ์์ ์ ๋ณด๋ฅผ ๊ฐ๊ฐ
registration,provider๋งต์ ์ ์ฅํ๊ณ ์ธ๊ฐ ์๋ฒ์์ ํต์ ์ ๊ฐ ํญ๋ชฉ์ ์ฐธ์กฐํ์ฌ ์ฌ์ฉํ๋ค.
Last updated