Bibi's DevLog ๐ค๐
OAuth Github ๋ก๊ทธ์ธ ๋ณธ๋ฌธ
OAuth Github ๋ก๊ทธ์ธ
OAuth๋
OAuth์ ์ธ ์ญํ ๋ค
- ๋ด ์๋น์ค
- ์ฌ์ฉ์
- ์ ๋ช ์๋น์ค (๊ตฌ๊ธ, ๋ค์ด๋ฒ ๋ฑ)
OAuth์ ์ธ์ฆ ์ ์ฐจ
์ ๋ช ์๋น์ค๊ฐ Access Token์ ๋ฐ๊ธํ๋ค
AccessToken์ด๋?
์ ๋ช ์๋น์ค๊ฐ ๊ฐ์ง ์ฌ์ฉ์์ ๋ณด์ ์ ๊ทผํ๊ธฐ ์ํด, ์ฌ์ฉ์์ ์์ด๋ ๋น๋ฐ๋ฒํธ ๋์ ์ฌ์ฉํ๋ ํ ํฐ
์ ๋ช ์๋น์ค๊ฐ ๊ฐ์ง ์ฌ์ฉ์ ์ ๋ณด๋ค ์ค์์ ๋ด ์๋น์ค๊ฐ ๊ผญ ํ์ํ ๊ธฐ๋ฅ๋ง ๋ถ๋ถ์ ์ผ๋ก ์ ๊ทผ์ ํ์ฉํ๋ค.
๋ด ์๋น์ค๋ OAuth๋ฅผ ํตํด AccessToken์ ๊ฐ์ ธ์จ๋ค
๋ด ์๋น์ค๋ AccessToken์ ํตํด ์ ๋ช ์๋น์ค๊ฐ ๊ฐ์ง ์ฌ์ฉ์ ์ ๋ณด์ ์ ๊ทผํ๊ณ , ๊ฐ์ ธ์ค๊ณ , ์์ ํ๋ค.
GitHub OAuth - Authorizing OAuth Apps(Web Application Flow)
0. Github OAuth App์ ๋ง๋ ๋ค.
- https://docs.github.com/en/enterprise-server@2.21/developers/apps/building-oauth-apps/creating-an-oauth-app ๋ฅผ ์ฐธ๊ณ .
- Authorization callback URL์ด๋? OAuth ์ธ์ฆ์ด ๋๋๊ณ ๋๋์์ฌ URL. ์ธ์ฆ์ด ๋๋๋ฉด ๋ด ์๋น์ค(์ฑ)์ผ๋ก ๋๋์์์ผ ํ๋ฏ๋ก ์ฑ ์ฃผ์๋ฅผ ๋ฃ์ด์ฃผ์ด์ผ ํ๋ค.
- https://zeddios.tistory.com/1102๋ฅผ ์ฐธ๊ณ ํด URL Schemes๋ฅผ ๋ง๋ ํ, ๋ค์
://
์ ๋ถ์ฌ ๋ฃ์ด์ค๋ค - OAuth ์ฑ ์์ฑ ์ ์๋ ค์ฃผ๋ Client ID, Client Secret์ ๊ธฐ์ตํด ๋๋ค.
- ํนํ Client Secret์ ์ฒซ ์์ฑ ํ์ ๋ค์ ๋ณผ ์ ์์ผ๋ ์์ ํ ๊ณณ์ ์ ๋ณด๊ดํด ๋๋ค.
1. ์ฌ์ฉ์์ ๊นํ ์์ด๋ดํฐํฐ๋ฅผ ์์ฒญํ๋๋ก ์ฌ์ฉ์๋ฅผ ๋ฆฌ๋ค์ด๋ ํธ ์ํจ๋ค.
- ์๋ฅผ ๋ค์ด "GitHub์ผ๋ก ๋ก๊ทธ์ธ" ๋ฒํผ์ ๋๋ฅด๋ฉด ์ฌ์ฉ์์ ๊นํ ์ ๋ณด๋ฅผ ์์ฒญํ๋ค.
- *
GET https://github.com/login/oauth/authorize
*- [hostname]์
github.com
์ ๋ฃ์ผ๋ฉด ๋๋ค.
- [hostname]์
- ๋ค์ ์ํ๋ ์ ๋ณด๋ฅผ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ก ๋ถ์ฌ ์์ฒญํ๋ค.
- Parameters (์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ)
- (ํ์)
client_id
: String. ๊นํ์ผ๋ก๋ถํฐ ๋ฐ์ Client ID์ด๋ค redirect_uri
: String. ์ฌ์ฉ์๊ฐ ์ธ์ฆ ํ์ ๋ณด๋ด์ง ์ ํ๋ฆฌ์ผ์ด์ ์ URL. redirect urls ์ฐธ๊ณ .login
: String. ์ฑ ํ์๊ฐ์ ๋ฐ ์ธ์ฆ์ ์ฌ์ฉํ ํน์ ๊ณ์ ์ ์ ์ํจ.scope
: String. ๋ฒ์(scope) ๋ชฉ๋ก. ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋จ.- ์ด ํ๋ผ๋ฏธํฐ๊ฐ ์ ๊ณต๋์ง ์์ผ๋ฉด ๋น ๋ฐฐ์ด์ด๊ธฐ ๋๋ฌธ์, ์ฑ์ด ์ฌ์ฉ์ ์ ๋ณด์ ์ด๋ค ์ ๊ทผ ๋ฒ์๋ ๊ฐ์ง ๋ชปํจ.
- ์ฑ์์ ์ด๋ฏธ ์ธ์ฆ๋ ๋ฒ์๋ฅผ ๊ฐ์ง ์ฌ์ฉ์์ ๋ํด์๋, ๋ฒ์๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ธ์ฆ ํ์ด์ง๊ฐ ๋ณด์ฌ์ง์ง ์์. ์ฌ์ฉ์๊ฐ ์ด๋ฏธ ์ธ์ฆํ ๋ฒ์๋ฅผ ๊ฐ์ง๊ณ ์ด ๋ถ๋ถ์ ์ฑ์ด๋ค.
- ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฒ์ ์ ๋ณด๋ ์ฌ๊ธฐ์ ์ค๋ช ๋์ด ์๋ค. - ๋ฒ์ญ
state
: String. ์ถ์ธกํ ์ ์๋ ๋๋ค ๋ฌธ์์ด. ์ฌ์ดํธ ๊ฐ ์์ฒญ ์์กฐ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ๋ณดํธํ๊ธฐ ์ํด ์ฌ์ฉ.allow_signup
: String. OAuth ํ๋ฆ ๋์ ๊นํ ํ์๊ฐ์ ์ด ๊ฐ๋ฅํ๊ฒ ํ ์ง์ ๋ํ ์ต์ . ๊ธฐ๋ณธ๊ฐ์ true.
- (ํ์)
2. ์ฌ์ฉ์๊ฐ ๊นํ์ ์ํด ๋ด ์๋น์ค๋ก ๋ฆฌ๋ค์ด๋ ํธ๋์ด ๋๋์์จ๋ค.
์ฌ์ฉ์๊ฐ ๋น์ (๋ด ์๋น์ค)์ ์์ฒญ์ ํ์ฉํ๋ฉด, ๊นํ ์๋ฒ๊ฐ
code
ํ๋ผ๋ฏธํฐ์ ์์ ์ฝ๋๋ฅผ,state
ํ๋ผ๋ฏธํฐ์ 1.์์ ์ ๊ณตํ state๋ฅผ ๋ฃ์ด์ ๋ด ์๋น์ค๋ก ๋ค์ ๋ฆฌ๋ค์ด๋ ํธ ํด์ค๋ค.code๋ 10๋ถ ํ์ ๋ง๋ฃ๋๋ค.
๋ง์ฝ state๊ฐ ๋ด๊ฐ ๋ณด๋ธ ๊ฒ๊ณผ ์ผ์นํ์ง ์์ผ๋ฉด, ์ 3์๊ฐ ์์ฒญ์ ์์ฑํ ๊ฒ์ด๋ฏ๋ก ์ธ์ฆ ์ ์ฐจ๋ฅผ ์ค๋จํด์ผ ํ๋ค.
code๋ ์ก์ธ์ค ํ ํฐ์ ์๋ฏธํ๋ฉฐ, ์๋ URL๋ก ์์ฒญ์ ๋ณด๋ผ ๋ access_token์๋ฆฌ์ ๋ฃ๋๋ค.
POST https://github.com/login/oauth/{access_token}
๋ค์ ํ์ ์ ๋ณด๋ฅผ ํฌํจํ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ถ์ฌ ์์ฒญํ๋ค.
Parameters (์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ)
- (ํ์)
client_id
: String. ๋ด OAuth ์ฑ์ ๋ํด ๊นํ์ผ๋ก๋ถํฐ ๋ฐ์ Client ID - (ํ์)
client_secret
: String. ๋ด OAuth ์ฑ์ ๋ํด ๊นํ์ผ๋ก๋ถํฐ ๋ฐ์ Client Secret - (ํ์)
code
: String.1.์ ๊ฒฐ๊ณผ๋ก ๋ฐ์ ์ฝ๋. redirect_uri
: String. ์ฌ์ฉ์๊ฐ ์ธ์ฆ ํ์ ๋ณด๋ด์ง ์ ํ๋ฆฌ์ผ์ด์ ์ URL.
- (ํ์)
Response
๊ธฐ๋ณธ์ ์ผ๋ก๋ ์๋์ ํํ๋ก ์๋ต์ด ์จ๋ค.
access_token=e72e16c7e42f292c6912e7710c838347ae178b4a&token_type=bearer
๋ํ Accept ํค๋์ ๋ฐ๋ผ ์๋ก ๋ค๋ฅธ ํฌ๋งท์ผ๋ก ๋ด์ฉ์ ๋ฐ์ ์ ์๋ค.
Accept: application/json {"access_token":"e72e16c7e42f292c6912e7710c838347ae178b4a", "scope":"repo,gist", "token_type":"bearer"} Accept: application/xml <OAuth> <token_type>bearer</token_type> <scope>repo,gist</scope> <access_token>e72e16c7e42f292c6912e7710c838347ae178b4a</access_token> </OAuth>
3. ๋ด ์๋น์ค๊ฐ ์ฌ์ฉ์์ ์ก์ธ์ค ํ ํฐ์ ๊ฐ์ง๊ณ API์ ์ ๊ทผํ๋ค.
AccessToken (์ก์ธ์คํ ํฐ) ์ ๊ฐ์ง๊ณ , ์ฌ์ฉ์๋ฅผ ๋์ ํด API์ ์์ฒญ์ ๋ณด๋ผ ์ ์๋ค.
Authorization: token OAUTH-TOKEN GET http(s)://[hostname]/api/v3/user
'ํ๋ก๊ทธ๋๋ฐ > Git & GIthub ๊น๊ณผ ๊นํ๋ธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
GitHub OAuth - Scopes for OAuth Apps (0) | 2022.06.15 |
---|---|
[Git] rebase ์ถฉ๋ ํด๊ฒฐํ๊ธฐ (0) | 2022.04.29 |
[Git] fetch, pull, merge, rebase (0) | 2022.04.24 |
[Git] ์ปค๋ฐ๋ฉ์์ง ์์ ํ๋ ๋ฒ (0) | 2021.02.16 |
[Git] .gitignore๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ฐ ์ฌ์ฉ ๋ฐฉ๋ฒ (0) | 2021.02.15 |