๋๋ ํ์ฌ oauthlib๋ฅผ ์ ์ง ๊ด๋ฆฌํ๋ ์ ์ผํ ์ฌ๋์ด๋ฉฐ ์ง๊ธ ๋น์ฅ์ ๊ทธ๋ ๊ฒ ํ ์๊ฐ์ด ๊ฑฐ์ ์์ต๋๋ค.
๋๊ฐ ํ์ฌ PR์ ๊ฒํ ํ๊ณ ํด๋น PR์ ๋ํด ๋๋ฝ๋ ๊ฒฝ์ฐ ํ
์คํธ๋ฅผ ์์ฑํ๊ณ ์ ๋ฒ์ ์ ์ถ์ํ ์๊ฐ์ด ์์ต๋๊น?
๋ฐฉ๊ธ 2.0.3์ ์ถ์ํ์ต๋๋ค.
๋๋จธ์ง PR์ ๋์์ด ํ์ํฉ๋๋ค.
์๋ ํ์ธ์ @thedrow ๋ค๋ฅธ PR์ ๋์๋๋ฆด https://github.com/idan/oauthlib/pull/484? ๋ญ๋ผ๊ณ ์?
์ฃผ๋ง์ ์๊ฐ๋ด์ ์ฌ๋ฆฌ๊ฒ ์ต๋๋ค.
@ib-lundgren ์ด ์ ์ฅ์์ ๋ํ ๊ด๋ฆฌ์ ๊ถํ์ด ์์ต๋๊น? ๋ค๋ฅธ ์ ์ง ๊ด๋ฆฌ์๋ ์ถ๊ฐํ ์ ์๋๋ก ๊ทธ๊ฒ๋ค์ ๊ฐ์ง ์ ์์ต๋๊น?
@thedrow ๋์์ด ๋์ด์ ๊ธฐ์ฉ๋๋ค...
@skion ๋ฐ๊ฐ ์ต๋๋ค! ์ ์ฅ์์ ๋ ๋ง์ด ์ก์ธ์คํ ์ ์๋๋ก ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค.
์ด ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ์ถ๊ฐ ์ก์ธ์ค์ ๊ด๋ จํ์ฌ ๋ฐฉ๊ธ @ib-lundgren์๊ฒ ์ด๋ฉ์ผ์ ๋ณด๋์ต๋๋ค.
์ด๋ป๊ฒ ํ๋ฉด ๊ฐ์ฅ ์ข์๊น์?
์ ๋ ์ง์ ์ ์ด๋ ๊ฐ์ธ์ ์ด๋ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ๋ก ์ด ์์ ์ ์ํํ๋ ๋ฐ ๊ด์ฌ์ด ์์ต๋๋ค. ์ค๋ ์ค์ 11์ ์์ ํ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ "์ผ"์ CTO๋ก๋ถํฐ ์น์ธ์ ๋ฐ์ ์ ํ๋ ์์ ์๊ฐ์ ์ฌ์ฉํ์ฌ ๋ฒ๊ทธ ์์ ๋ฐ ๊ธฐํ ์์ ์ ์ํํ๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ํ์คํํ๋ ์์ธ ๊ฒฝ์ฐ oauthlib ๋ฐ flask-oauthlib ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ๋ฌธ์ ์ธ ์ฌ์ฉ์ ์ง์ํ๊ธฐ ์ํด ์ ์คํธ๋ฆผ์ ๋ณํฉํ ์ ์๋ ๊ฐ์ ์ฌํญ.
๊ทธ๋ฌ๋ ์ฃผ๋ง๊น์ง ๊ฐ๋จํ ์์ ์ ์ํํ ์ ์๋ ๊ฒฝ์ฐ GOLANG์์ ํ๋ก์ ํธ๋ฅผ ์ํํ๋ผ๋ ์์ฒญ์ ๋ฐ์ ์ ์์ผ๋ฉฐ ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ด๊ฐ ํ ์ ์๋ ์ ๋ฌธ์ ์ธ ๋ฆฌ์์ค์ ์ง์์ผ๋ก ์ด ํ๋ก์ ํธ๋ฅผ ์ง์ํ๋ ๊ฒ์ด ํ์ฉ๋์ง ์์ต๋๋ค. ๊ฐ์ ธ์ค๋ค.
์ด๋ฏธ ๋ณด๊ณ ๋ ๋ฌธ์ ๋ก ์ธํด ์์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์๋ํ๋ ๊ฒ์ ์ป์ ์ ์์์ต๋๋ค. #490 #463 ๋ฑ
ํ์ฌ ๊ด๋ฆฌ์( @thedrow @lepture ๋ฑ์ด ํฌํจ๋จ)๊ฐ ์ฐจ๋จ๊ธฐ๋ฅผ ์์ ํ๋ ๋ฐ ๊ธฐ๊บผ์ด ๋์์ ์ฃผ์ด ๋ด๊ฐ ๊ฐ๋จํ ๋ฐ๋ชจ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ๊ฒฝ์์ง์๊ฒ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฆ๋ช ํ ์ ์๋ค๋ฉด ํ์ฌ์์ ๋์๊ฒ ์ ๊ณตํ๋ ์์ ์ ์๋ฃํ ์ ์์ ๊ฒ์ ๋๋ค. ์ ์ฒด Python ์ปค๋ฎค๋ํฐ์ ์ด์ต์ ์ํด ์ ์คํธ๋ฆผ์ ๋ณํฉํ ์ ์๋ ๋ณ๊ฒฝ ์ฌํญ์ ์์ํ๊ณ ๋ด๊ฐ ํ ์ ์๋ ๊ณณ์์ ๋์ธ ์๊ฐ์ ๋๋ค. ์ฝ๋ ๋ฑ์ ๊ฐ์ ํด์ผ ํจ์ ์๋ฏธํ ๊ฒ์ด๋ผ๊ณ ํ์ ํ์ง๋ง ์ด๋ฏธ RFC๋ฅผ ์ธ์ํ์ผ๋ฉฐ ์์ ์ ์ํด ์ด ๋ด์ฉ์ ๋ฐฐ์์ผ ํ๋ฏ๋ก ๋ง์ ์ฌ๋๋ค์๊ฒ ๋์์ด ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ ๋ฒ์ ์ฌ๋ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
์ฐ๋ฆฌ์๊ฒ ํ์ํ ๊ฒ์ ๋ ๋ง์ ์ ์ง ๊ด๋ฆฌ์๊ฐ ์๋๋ผ ์ฃผ์ ์ ์ง ๊ด๋ฆฌ์์ ๋๋ค.
์ด ํ๋ก์ ํธ๋ ์ฌ์ ํ @idan ์ ๊ณ์ ํ์ ์์ง๋ง ๊ทธ๋ ์ด ํ๋ก์ ํธ๋ฅผ ์ ์ง ๊ด๋ฆฌํ์ง ์์์ต๋๋ค. ์ด ํ๋ก์ ํธ๋ฅผ ์กฐ์ง์ผ๋ก ์ฎ๊ธฐ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ธฐ๋ถ์๊ฐ ๋ ๋ง์ ์๊ฐ์ ํ ์ ํ ์ ์๋๋ก https://opencollective.com/ ์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ถ๊ธ์ ์์งํ ์ ์์ต๋๋ค.
@lepture ๊ฐ ๋ฉ์ธ ๋ฉ์ธํ ์ด๋๋ผ๊ณ ์๊ฐ
์กฐ์ง์ด ์ค์ํ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ๋๋ ์ฐ๋ฆฌ ํ์ฌ๊ฐ ์ด๋ค ์ผ์ ๋ํด ์น์ธ์ ๋ฐ๋๋ก ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ก ๋ด๊ฐ ํฌ์ํ ์ ์๋ ์ ๋ฌธ์ ์ธ ์๊ฐ์ ๋ฌธ์ ๋ฅผ ์์ ํ๊ณ Auth0์ ๊ฐ์ ๊ฐ๋น์ผ ์ 3์๋ฅผ ID ์ ๊ณต์๋ก ์ฌ์ฉํ๊ณ ์ถ์ง ์์ ์ฌ๋๋ค์๊ฒ ๋ ์ ์ฉํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ๋๋จธ์ง๋ ๋๋ง์ ์๊ฐ์ ๊ธฐ๋ถํ๋ ๊ฒ์ ๋๋ค.
@idan ์ด ๊ฑด๊ฐํ๊ฑฐ๋
์ ๊ฐ ํ ์๋ง ์๋ค๋ฉด ๊ธฐ๊บผ์ด ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค. ๋ด๊ฐ ์๊ฐํ ์ ์๋ ํ ๊ฐ์ง ๋ฌธ์ ๋ ๊ณต์ ํจํค์ง ๋ฆด๋ฆฌ์ค ์์คํ ์ ๋๋ค. ์์ด๋ฒ๋ ธ์๊น?
pull ์์ฒญ์ ๋ณํฉํ๊ณ ๊ทธ๋๋ก ๋ฆด๋ฆฌ์คํ ์๊ฐ์ด ์์ต๋๋ค.
๋ฐ๋ผ์ ์ด ํ๋ก์ ํธ๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ์ํ๊ณ #388๊ณผ ๊ฐ์ ์ถ๊ฐ OAuth2 ๊ด๋ จ ์ฌ์์ ์์ฑํ๊ธฐ ์ํด ๊ธฐ๋ถ/์ธ๋ ฅ์ด ํ์ํฉ๋๋ค.
flask-oauthlib๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๊ทธ์ธํ ์ ์๋ค๋ฉด ๊ธฐ์ ๊ฒ์ ๋๋ค. ์ง๊ธ์ ๊ทธ ์ค์ํ ๊ธฐ๋ฅ์กฐ์ฐจ๋ ์ ์๊ฒ ์ ํฉํ์ง ์์ต๋๋ค.
๋ฒ์ ๋ฌธ์ ์ธ์ง ๊ถ๊ธํฉ๋๋ค. ๋ฒ์ ์ ์ฌ๋ฐ๋ฅธ ์กฐํฉ์ ๋๋ฌํ๋ฉด ์๋ํ๋ ์์ ๋ฅผ ๊ธฐ๋ํ๋ฉด์ ์ด์ ฏ๋ฐค์ ๋ฒ์ ์ ์ ์ ๋ ๋กค๋ฐฑํ๋ ค๊ณ ํ์ต๋๋ค. ํ์ง๋ง ์์ง๊น์ง๋ ์ผ์ด๋์ง ์์๊ณ ์๊ฐํ ์ ์๋ ๋ชจ๋ ๋ฒ์ ์ ๋กค๋ฐฑ/๊ณ ์ ํ์ต๋๋ค.
์์ ๋ ์ธ์ ์ ์ค์ ๋ ์ด๊ธฐ ์ธ์ฆ ํ ํฐ/ํ์ด์ง์ ํ์๋ ๋งํผ๋ง ๊ฐ์ ธ์ต๋๋ค. ํด๋ผ์ด์ธํธ->์๋ฒ ํด๋ผ์ด์ธํธ ์ธก ํธ์ถ ์ธก์์ remove.get(me) ํธ์ถ์ ์ธ์ฆํ๋ ค๋ ๋ชจ๋ ์๋๋ ์คํจํ์ง๋ง ๋๋ฒ๊น ์ ์์ต๋๋ค. ์ถ๋ ฅํ๊ฑฐ๋ ์ด์ ์ ๋ํ ๋์๋ง.
@duaneking Flask-OAuthlib๋ OAuthlib 1.1.2์ ์ ์๋ํด์ผ ํฉ๋๋ค.
๋ค์์ Flask-OAuthlib์ ๊ณ ์ ๋ ๋ฒ์ ์ ๋๋ค.
https://github.com/lepture/flask-oauthlib/blob/master/requirements.txt
๊ทธ๊ฒ์ด ์ฌ์ฉํ ์ ์๋ ์ ์ผํ ๋ฒ์ ์ด๋ผ๋ฉด ์ฌ๊ธฐ์ ๋ ํฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ด์ ๋ฒ์ ์์ ๋๋ฝ๋ ๋ณด์ ๋ฐ ๋ฒ๊ทธ ์์ ์ ์ป์ผ๋ ค๋ฉด ๋ฒ์ ์ ๊ฐ๋ฅํ ํ ์ต์ ์ํ๋ก ์ ์งํด์ผ ํฉ๋๋ค.
์ด๊ฒ์ ์ ๋ฐ์ดํธํ์ง ๋ชปํ๊ฒํ๋ ๊ฒ์ ์ฌ๋๋ค์ด ๋ถ์กฑํ๊ธฐ ๋๋ฌธ์ ๋๊น?
OP์ PR #388(๋ด PR #498 ํฌํจ)์ ์์ ๋ถํ๊ฐ ๋ฎ์ ๋ณด์๊ธฐ ๋๋ฌธ์ ์ด๋์ ์ํด ๋์ฒดํ์ต๋๋ค. ๊ทธ๊ฒ์ด ์กฐ๊ธ ๋์์ด๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ ๋ JWT๋ฅผ ์ผ์ ์ ๋ฌด์์ oauthlib์์ ์๋ํ๋๋ก ์์ฒญ๋ฐ์์ต๋๋ค.
๋ฌธ์์์ ๋ชจ๋ ํด๋น ๋ฌธ์ ๋ฅผ ์ถ์ ํ๊ธฐ ์ํด #50์์ JWT ์ง์์ ๋๊ฒ ๋ค๊ณ ์ ์ํ์ต๋๋ค.
์๋
,
OAuth2 ๊ด๋ จ ์ฃผ์ ๋ฐ ์๋ฒ ๊ตฌํ(RequestValidator, ๊ถํ ๋ถ์ฌ ๋ฑ)์ ์ฐธ์ฌํ๊ณ ์ถ์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ฌธ์ ๊ฒํ , PR ๋ณํฉ ๋ฐ ๋ฆด๋ฆฌ์ค๊ฐ ํฌํจ๋ฉ๋๋ค.
๋ด๊ฐ ๋์๊น์ง ํด์ @JonathanHuot ๋ด๊ฐ JWT์ ๋ํ ์ง์์๋ณด๊ณ ์ถ์ด์ ์๋๋ผ์ผ๋ก @duaneking.
์ด ์ ์ฅ์์ ๋ํ ๊ด๋ฆฌ์ ๊ถํ์ ์ป๊ธฐ ์ํด Github์ ์ฐ๋ฝํ์ต๋๋ค.
๊ฐ๋ฅํ์ง ์๋ค๋ฉด ํฌํฌํด์ผ ํฉ๋๋ค.
@thedrow ๊ต์ฅํฉ๋๋ค. ์ ์ ์ฅ์์ 100๊ฐ์ ๋ณ์ด ์์ผ๋ฉด ํฅํ ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๊ด๋ฆฌ๋ฅผ opencollective.com์ผ๋ก ์ด์ ํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์์๋ก ์กฐ์ง์ผ๋ก์ ์ด ์๊ธ์ ์กฐ๋ฌํด์ผ ํ๋ค๋ฉด ๊ทธ ๋น์ฉ์ ๊ธฐ๊บผ์ด ๊ธฐ์ฌํ๊ฒ ์ต๋๋ค.
github ๊ฐ์ ์ด ํ์ ์์ต๋๋ค :) @thedrow , ์กฐ์ง์ผ๋ก ์ฎ๊ธฐ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
๋๋ ์ด๋ฏธ ์ง๊ธ ํฌํฌ๋ฅผ ๋ง๋ค๊ณ ์์ต๋๋ค: https://github.com/lepture/authlib
ํ์ง๋ง ๊ด์ฐฎ์. ์กฐ์ง์ ์ฌ์ ํ โโ๋์์ด๋ฉ๋๋ค. ๊ฒ๋ค๊ฐ, ๋ด ํฌํฌ์๋ ๋ค๋ฅธ ์๋ฌด๊ฐ ์์ต๋๋ค.
์ ๋ฅผ ๊ธฐ๊บผ์ด ๋์์ฃผ์ธ์.
@idan ์๋ก ์์ฑ๋ ์กฐ์ง์ ์ ์ฅ์๋ก ์ด๋ํด์ฃผ์ธ์.
@idan ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ด๋ํ์ฌ
@theedrow ๋ฉฐ์น ์ ์ @idan ์๊ฒ ์น์ ํ๊ฒ ์ด๋ฉ์ผ์
Github์ ์ด๋ฏธ ๋์์ด ๋ ์ ์๋ค๊ณ ๋งํ์ต๋๋ค.
@idan ๋ณต์ ํด์ผ ํ๋์?
@idan์ ๋ํ ๋ง์ง๋ง ์ธ์นจ์ด ์๋ํ์ง ์๋ ํ ๋ณต์ ํด์ผ ํ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค.
@thedrow ํน์ ์ฐ๋ฆฌ ์ค ํ ๋ช ์ด oauthlib ์กฐ์ง ์ ์์ ํ๊ณ ์์ต๋๊น? ๊ทธ๋ ๋ค๋ฉด ์ฐ๋ฆฌ์ ๋ ธ๋ ฅ์ ๊ทธ๊ณณ์ผ๋ก ์ฎ๊ธธ ๊ณํ์ ์ธ์ธ ์ ์์ต๋๋ค.
oauthlib ์กฐ์ง์ ๋ํ ๊ด๋ฆฌ์ ๊ถํ์ด ์์ต๋๋ค.
๋๋ฌ๋ค! oauthlib/oauthlib๋ก ์ด๋
์๋ก์ด ์กฐ์ง์ ๋ชจ๋ ์์ ๋ด์ฌ์๋ฅผ ์ด๋ํ์ต๋๋ค. ์ด๋๋ฅผ ์๋ฝํด ์ฃผ์ธ์.
@idan ์ ๋ง ๊ฐ์ฌํฉ๋๋ค!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
github ๊ฐ์ ์ด ํ์ ์์ต๋๋ค :) @thedrow , ์กฐ์ง์ผ๋ก ์ฎ๊ธฐ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.