์๋ก๋น
๋ธ๋ก๊ทธ์ ์คํ๋ง ๋ถํธ๋ก OAuth2 ๊ตฌํ(ํ์ด์ค๋ถ, ๊ตฌ๊ธ, ์นด์นด์ค, ๋ค์ด๋ฒ)
๊ธ์ ์ฐธ๊ณ ํ์๋ฉด ๋์์ด ๋ ๊ฒ์
๋๋ค.์ง์๊ณผ ๊ฟํ์ด ๋์น๋ "์๋ก๋น" ๋ธ๋ก๊ทธ ๋ฐฉ๋ฌธํ๊ธฐ
"์คํ๋ง ๋ถํธ๋ก OAuth2 ๊ตฌํ(ํ์ด์ค๋ถ, ๊ตฌ๊ธ, ์นด์นด์ค, ๋ค์ด๋ฒ)" ๊ธ ๋ณด๋ฌ๊ฐ๊ธฐ
๐กโ ํ์ง๋ง ๊ธ์ ๋ด์ฉ๊ณผ ์ฌ์ง์ ๋ชจ๋ ๋ฐ๋ํ
๊ฐ์ฌ๋์ ๊ฐ์ ๋ด์ฉ์
๋๋ค. โ๐ก
https://developers.kakao.com/ ๋ก๊ทธ์ธ
redirect URI
์คํ๋ง ๋ถํธ์ ์ํ๋ฆฌํฐ๋ฅผ ์ฐ๊ณ ์์ด์
yamlํ์ผ์์ ์ค์ ํ redirect-uri ๋ถ๋ถ์ ์ ์ด์ผ ํ๋ค
๋์ ํญ๋ชฉ
์ด๋ฉ์ผ์ ํ์๋์๊ฐ ์๋๋ผ์ ๊ทธ๋ฅ ์ฌ์ฉ์ํ๊ณ , ์นด์นด์คํก ๋ก๊ทธ์ธ ์ฌ์ฉ์์ผ ๊ฒฝ์ฐ์๋ ๋๋ ๋ชจ๋ ์์
๋ก๊ทธ์ธ ์ฌ์ฉ์๋ค์๊ฒ๋ ์ด๋ฉ์ผ ์ ๋ณด๋ฅผ ์ถ๊ฐ ์
๋ ฅํ๊ฒ ๋ง๋ค์ด์ผ ํ ๊ฒ ๊ฐ๋ค
https://developers.naver.com/main/ ๋ก๊ทธ์ธ
์๋น์ค URL
- ๋ฃจํธ ์ฃผ์ or ๊ตฌ๋งคํ ๋๋ฉ์ธ
Callback URL
์น์ธ๋ ๋๋ฉ์ธ : ์ง์ง ๋๋ฉ์ธ๋ง ํ๋ฉด๋๋ค. ๋ก์ปฌ ํธ์คํธ๋ฉด ๋์ด๊ฐ๋ฉด ๋๋ค.
๋ฒ์, ํ ์คํธ ์ฌ์ฉ์ ๊ทธ๋ฅ ๋์ด๊ฐ๋ฉด ๋๋ค.
์น์ธ๋ ๋ฆฌ๋ค๋ ์ URL
uri /login/oauth2/code/
https://github.com/BASIC-SKILLS/LEARN-SPRING-FACEBOOK/blob/master/src/main/resources/application.txt
yaml ํ์ผ์ spring 1์ฐจ ๋ฐ์ ๋ฃ์ด์ผ ํ๋ค.
์์๋ค์ด ์์ฃผ ์ค์ํ๋ค
์๋ฅผ ๋ค๋ฉด, auth2๋ security ์์, client๋ auth2์์ ์์ด์ผ ํ๋ค.
security:
oauth2:
client:
registration:
google:
client-id: your-client-id
client-secret: your-client-secret
redirectUri: "{baseUrl}/oauth2/callback/{registrationId}"
scope:
- profile
- email
facebook:
client-id: your-client-id
client-secret: your-client-secret
redirectUri: "{baseUrl}/oauth2/callback/{registrationId}"
kakao:
authorization-grant-type: authorization_code
client-id: your-client-id
client-secret: your-client-secret
redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
scope:
- profile
- account_email
client-authentication-method: POST
client-name: Kakao
naver:
authorization-grant-type: authorization_code
client-id: your-client-id
client-secret: your-client-secret
redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
scope: name,email,profile_image
client-name: Naver
provider:
kakao:
authorization-uri: https://kauth.kakao.com/oauth/authorize
token-uri: https://kauth.kakao.com/oauth/token
user-info-uri: https://kapi.kakao.com/v2/user/me
user-name-attribute: properties
# JSON ํํ์์ "properties"๋ผ๋ key๊ฐ์ ํด๋นํ๋ value์ ํ์ ์ ๋ณด๊ฐ ๋ด๊ฒจ์ ธ์๋ค.
naver:
authorization-uri: https://nid.naver.com/oauth2.0/authorize
token-uri: https://nid.naver.com/oauth2.0/token
user-info-uri: https://openapi.naver.com/v1/nid/me
user-name-attribute: response
# JSON ํํ์์ "response"๋ผ๋ key๊ฐ์ ํด๋นํ๋ value์ ํ์ ์ ๋ณด๊ฐ ๋ด๊ฒจ์ ธ์๋ค.
CustomUserPrincipal
ํด๋์ค์ implements
์ OAuth2User
ํด๋์ค ์ถ๊ฐPom.xml
์
๋ฐ์ดํธoauth2-client
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐDB
์
๋ฐ์ดํธprovider
์ปฌ๋ผ ์ถ๊ฐ , ๊ธฐ๋ณธ๊ฐ์ local
๋ก ์ค์