Oauthlib: ์ปค๋ฎค๋‹ˆํ‹ฐ ํšŒ์› - ํ™œ๋™

์— ๋งŒ๋“  2019๋…„ 05์›” 21์ผ  ยท  33์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: oauthlib/oauthlib

@oauthlib/core-contributors ์•ˆ๋…•ํ•˜์„ธ์š”. ์ €๋Š” ๋ชจ๋“  ๋ฉ”์ด์ € ๋‹ค์šด์ŠคํŠธ๋ฆผ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ oauthlib ๊ทธ๋ฃน์—์„œ ์—ญํ• ์„ ํ•˜๋„๋ก ์ œ์•ˆํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ๋“ค์ด ์—†์œผ๋ฉด ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ƒ์กดํ•  ์ˆ˜ ์—†์œผ๋ฉฐ oauthlib ํ”„๋ ˆ์ž„์›Œํฌ ์ž์ฒด ๋Œ€์‹  ๋‹ค์šด์ŠคํŠธ๋ฆผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. oauthlib ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋” ๋งŽ์€ ํ™œ์„ฑ ํšŒ์›์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„๋ž˜์— ํ™œ์„ฑ ๋‹ค์šด์ŠคํŠธ๋ฆผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชฉ๋ก์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

  • @jazzband/django-oauth-toolkit
  • @singingwolfboy/flask-dance(@requests/request-oauthlib ํฌํ•จ)
  • @thomsonreuters/bottle-oauthlib (๊ทธ๊ฒƒ์€ ๊ณ„์‚ฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค, ์ €์ž…๋‹ˆ๋‹ค)

๋‚ด ์ œ์•ˆ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋ชจ๋“  ๋‹ค์šด์ŠคํŠธ๋ฆผ์˜ ๊ด€๋ฆฌ์ž๋ฅผ oauthlib์˜ ๊ด€๋ฆฌ์ž ๋กœ ์ถ”๊ฐ€
  • ๊ฐ ๋‹ค์šด์ŠคํŠธ๋ฆผ์˜ ๊ธฐ์—ฌ์ž๋ฅผ oauthlib์˜ ์“ฐ๊ธฐ ์•ก์„ธ์Šค ๊ถŒํ•œ์œผ๋กœ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

oauthlib ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ˆจ์„ ์‰ด ์ˆ˜ ์žˆ๋Š” ์ถฉ๋ถ„ํ•œ ๊ณต๊ฐ„์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ด ?

ํ•‘ @singingwolfboy , @daenney , @jleclanche , @synasius , ... ?

Discussion

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@denizdogan @duaneking Auth0์€ Authlib์˜ ํ›„์›์ž์ผ ๋ฟ์ด๋ฉฐ Authlib์˜ "์ œ์–ด" "๊ด€๋ฆฌ" "๋ผ์ด์„ ์Šค" ๋˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ด‘๊ณ ๋ผ๊ณ  ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Auth0์—์„œ ๊ทธ๋“ค์— ๋Œ€ํ•œ ํ†ตํ•ฉ์„ ๊ตฌ์ฒด์ ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ €์—๊ฒŒ ์—ฐ๋ฝ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๊ฑฐ์ ˆํ–ˆ์Šต๋‹ˆ๋‹ค. Authlib์— auth0 ๊ด€๋ จ ์ฝ”๋“œ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ์™œ ๋ฌธ์ œ์ธ์ง€ ์ดํ•ด๊ฐ€ ์•ˆ ๊ฐ€๋Š”๋ฐ ์ •๋ณด๊ฐ€ ๊ณต๊ฐœ๋˜์–ด ์žˆ๊ณ  https://www.patreon.com/lepture๋ฅผ ํ†ตํ•ด ๋ˆ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋‚˜ Patreon์ด๋‚˜ GitHub๋ฅผ ํ†ตํ•ด ์ €๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ์™ธ์—๋„ readme์—์„œ ๋‹ค๋ฅธ ํ›„์›์ž Authing ๋„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  OAuthlib ์ž์ฒด๋„ Auth0 ํ›„์› ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. https://pyjwt.readthedocs.io/en/latest/

๋ชจ๋“  33 ๋Œ“๊ธ€

๋‚˜๋Š” ์‹ค์ œ๋กœ ์ ์„ oauthlib org๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์— ์ฐฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ FFA ๊ธฐ๋ถ€ ์กฐ์ง ์ด์ƒ์ธ ์žฌ์ฆˆ ๋ฐด๋“œ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์›๋ž˜ ์กฐ์ง์—์„œ ๋ณธ์งˆ์ ์œผ๋กœ ์œ ์ง€ ๊ด€๋ฆฌ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ์—๋Š” ๊ทธ๊ณณ์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์“ฐ๊ธฐ ๊ถŒํ•œ์ด ์žˆ์–ด๋„ ์ƒ๊ด€์€ ์—†์ง€๋งŒ ํ•„์š”ํ•  ๊ฒƒ์ด๋ผ๊ณ ๋Š” ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” Flask์— ๊ฝค ์ต์ˆ™ํ•˜๊ณ  ๋ฌธ์ œ ์ฒ˜๋ฆฌ, PR ๋ณ‘ํ•ฉ ๋“ฑ์„ ํ†ตํ•ด Flask-Dance์— ์ง์ ‘ ๊ธฐ์—ฌํ•˜๋Š” ๊ฒƒ์ด ํŽธ์•ˆํ•˜์ง€๋งŒ OAuth ๋ฐ OAuth ์‚ฌ์–‘์— ๋Œ€ํ•ด ๋™์ผํ•œ ์นœ์ˆ™์„ฑ์„ ์ฃผ์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ์™€ ์ฝ”๋“œ ๋ฆฌ๋ทฐ์— ์ฐธ์—ฌํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ์•„์ฃผ ์‚ฌ์†Œํ•œ ๋ณ€๊ฒฝ์„ ์ œ์™ธํ•˜๊ณ ๋Š” oauthlib์˜ PR์—์„œ ๋ณ‘ํ•ฉ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋Š” ๊ฒƒ์ด ํŽธํ•˜์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@jleclanche , ํ”„๋กœ์ ํŠธ๋ฅผ oauthlib org๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ์œ ์ง€ ๊ด€๋ฆฌ ์ž‘์—…(๋ฌธ์„œ, ๋„๊ตฌ, ๋งํฌ ๋“ฑ)์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ €๋Š” ๊ทธ๊ฒƒ์ด ์ข‹์€ ์ƒ๊ฐ์ด๊ณ  ์žฅ๊ธฐ์ ์œผ๋กœ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ณ‘-oauthlib๋ฅผ ์กฐ์ง์œผ๋กœ ์˜ฎ๊ธธ ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@daenney , ์™„๋ฒฝํ•ฉ๋‹ˆ๋‹ค! ๋‹ค์šด์ŠคํŠธ๋ฆผ ๊ฐœ๋ฐœ์ž๊ฐ€ OAuth์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ์•Œ ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ libs์™€ oauthlib ์‚ฌ์ด์— Python API๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ํ™•์‹คํžˆ ์ด๊ฒƒ์— ๋Œ€ํ•ด ํ•  ๋ง์ด ์žˆ๊ณ , ์ด ๋ถ€๋ถ„(API)์„ ๊ฒ€ํ† ํ•˜๋Š” ๊ฒƒ์€ Flask-Dance์™€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋งค์šฐ ์œ ์ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚˜์—๊ฒŒ ํ•ฉ๋ฆฌ์ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค! ๊ฐœ์ธ์ ์œผ๋กœ๋“  ์ง์—…์ ์œผ๋กœ๋“  ํ˜„์žฌ๋กœ์„œ๋Š” ์•„๋ฌด ์šฉ๋„๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์š”์ฆ˜ Flask-Dance ์ž‘์—…์— ๋งŽ์€ ์‹œ๊ฐ„์„ ํ• ์• ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์—ฌ์ „ํžˆ ์ ๊ทน์ ์œผ๋กœ ์ง€์›ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ @daenney ๊ฐ€ ํฐ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!)

์‹ค์ œ๋กœ requests-oauthlib ๋กœ ๋งŽ์€ ์ผ์„ ํ•  ์ˆ˜ ์žˆ์„์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ํ™•์‹คํžˆ ์ข‹์€ ์ผ์ž…๋‹ˆ๋‹ค. ์งˆ๋ฌธ ํ•˜๋‚˜ ๋”: ์ €๋Š” ์ตœ๊ทผ์— Tidelift ์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ  Flask-Dance์˜ ๊ด€๋ฆฌ์ž๋กœ Tidelift์˜ ํ”Œ๋žซํผ์— ๋“ฑ๋กํ–ˆ์Šต๋‹ˆ๋‹ค. requests-oauthlib ์— ๋Œ€ํ•ด์„œ๋„ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋“ ์ง€ ๊ทธ๊ฒƒ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์†”์งํžˆ ๋งํ•ด์„œ, ์‹œ๊ฐ„๊ณผ ๋™๊ธฐ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค๋ฉด requests-oauthlib ์ฝ”๋“œ๋ฒ ์ด์Šค์™€ ๋ฌธ์„œ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ž‘์—…ํ•˜๊ธฐ๊ฐ€ ๊ทธ๋‹ค์ง€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์ „ ์š”์ ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์–ธ์ œ ๋˜๋Š” ์–ธ์ œ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@singingwolfboy , Tidelift์— ๋Œ€ํ•œ ๊ฑฑ์ •์€ ์—†์Šต๋‹ˆ๋‹ค.

์•„๋ฌด๋„ ์ด์˜๋ฅผ ์ œ๊ธฐํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ผ์ฃผ์ผ ์•ˆ์— ์ด ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์“ฐ๊ธฐ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. @thedrow , @skion , @duaneking , @wiliamsouza ๋ฅผ ์ฐŒ๋ฅด์„ธ์š”.

์•ž์œผ๋กœ ์‹œ๊ฐ„์„ ๋œ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฐฉ๋ฒ•์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

requests-oauthlib ์ €์žฅ์†Œ์— GitHub ์Šคํฐ์„œ ๋ฒ„ํŠผ์„ ํ‘œ์‹œํ•˜๊ณ  ์‹ถ์ง€๋งŒ GitHub์—์„œ ํ•ด๋‹น ์ €์žฅ์†Œ์˜ ์„ค์ • ํŽ˜์ด์ง€์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ทธ๊ฒƒ์„ ์ผœ๊ฑฐ๋‚˜ ๋‚˜์—๊ฒŒ ์ง์ ‘ ์ผœ๋„๋ก ํ—ˆ๋ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ €๋Š” ๋‘ ๋ช…์˜ ๋‹ค์šด์ŠคํŠธ๋ฆผ ๊ธฐ๊ณ ์ž๋ฅผ oauthlib org์— ์ดˆ๋Œ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ณด๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ์ด ์žˆ๊ฑฐ๋‚˜ ์ด ํ† ๋ก ์„ ์ฝ๋Š” ์‚ฌ๋žŒ์ด ๋‹ค๋ฅธ ๋‹ค์šด์ŠคํŠธ๋ฆผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ๋˜๋Š” ์Šค์Šค๋กœ oauthlib์— ์ฐธ์—ฌํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์—ฌ๊ธฐ์— ๋Œ“๊ธ€์„ ๋‹ฌ๊ฑฐ๋‚˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด์ฃผ์„ธ์š”!

๊ฐ์‚ฌ ํ•ด์š”

@singingwolfboy FUNDING.yml ํŒŒ์ผ์„ ์ ์ ˆํžˆ ์ˆ˜์ •ํ•ด์ฃผ์„ธ์š”.

@thedrow ์˜๊ฒฌ์„ ๋ช…ํ™•ํžˆ ํ•ด์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

  • _์–ด๋–ค_ FUNDING.yml ํŒŒ์ผ์„ ๋ง์”€ํ•˜์‹œ๋Š” ๊ฑด๊ฐ€์š”?
  • ์–ด๋–ป๊ฒŒ ์ˆ˜์ •ํ•˜๋ฉด ์ข‹์„๊นŒ์š”?
  • ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ˆ˜์ • ์‚ฌํ•ญ์„ ์‹œ์—ฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
  • ๋งˆ์ง€๋ง‰์œผ๋กœ, ์ด ํ† ๋ก ์ด ์ด ํŠน์ • GitHub ๋ฌธ์ œ์—๋„ ์†ํ•ฉ๋‹ˆ๊นŒ?
  • https://github.com/oauthlib/oauthlib/blob/master/.github/FUNDING.yml
  • PR์€ ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. opencollective ๊ณ„์ •์„ ๊ฐœ์„คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์•„๋‹ˆ์š”. ์šฐ๋ฆฌ๋Š” ์ƒˆ๋กœ์šด ๊ฒƒ์„ ์—ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

poke @singingwolfboy , ๋‚˜๋Š” ๋‹น์‹ ์ด requests-oauthlib์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ฐ€ ์šฐ๋ฆฌ ์ค‘ ์ผ๋ถ€์—๊ฒŒ ์œ ์‚ฌํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•„์‹ญ๋‹ˆ๊นŒ?

๋‚˜๋Š” ๋ฌธ์ œ/PR์„ ์ •๋ฆฌํ•  ์—ฌ๊ฐ€ ์‹œ๊ฐ„์„ ์ฐพ์œผ๋ฉด ๊ทธ๋ ‡๊ฒŒ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@jezdez ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. DOT๋ฅผ ์žฌ์ฆˆ๋ฐด๋“œ์—์„œ ์—ฌ๊ธฐ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด IRC์— ์—ฐ๋ฝํ–ˆ์Šต๋‹ˆ๋‹ค.

@jleclanche , @jezdez , ์ง€๊ธˆ๊นŒ์ง€ ์–ด๋–ค ์ง„์ „์ด ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ?
@singingwolfboy , ์š”์ฒญ-oauthlib ์†Œ์œ ๊ถŒ/์“ฐ๊ธฐ ์•ก์„ธ์Šค์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ์‚ฌ ํ•ด์š”

@JonathanHuot : @sigmavirus24 ๊ฐ€ ๋‚˜์—๊ฒŒ requests-oauthlib ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์ฃผ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๊ทธ๋Š” ๋ฌด๊ธฐํ•œ ๊ธฐ๊ฐ„ ๋™์•ˆ ์˜คํ”ˆ ์†Œ์Šค ๊ฐœ๋ฐœ์„ ์ค‘๋‹จํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค . ์—ฌ๊ธฐ์—์„œ ๊ฐ€์žฅ ์ข‹์€ ์˜ต์…˜ ์€ ์š”์ฒญ ์›น์‚ฌ์ดํŠธ์— ๋ฌธ์„œํ™”๋œ ์ง€์› ์ฑ„๋„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚ด ๊ฒฝํ—˜์ƒ IRC๋Š” ์œ ์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ์˜จ๋ผ์ธ ์ƒํƒœ์ธ ์‹œ๊ฐ„์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฐ€์žฅ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. #python-requests

๊ด€๋ จ ๋‰ด์Šค์—์„œ @jtroussard ๋Š” ์˜คํ”ˆ ์†Œ์Šค์— ๋Œ€ํ•œ ๊ฒฝํ—˜์ด ๋งŽ์ง€๋Š” ์•Š์ง€๋งŒ ๋ฉ”์ธํ…Œ์ด๋„ˆ๊ฐ€ ๋˜๋Š” ๋ฐ์—๋„ ๊ด€์‹ฌ์ด ์žˆ๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์™€ ๋‚˜๋Š” ์˜์ƒ ์ฑ„ํŒ…์„ ํ•  ์‹œ๊ฐ„์„ ๋‚ด์–ด ๊ทธ์˜ ์งˆ๋ฌธ์— ๋‹ตํ•˜๊ณ  ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ ๊ทธ๊ฐ€ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@jezdez ๋กœ๋ถ€ํ„ฐ DOT๋ฅผ ์žฌ์ฆˆ๋ฐด๋“œ ๋ฐ–์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ๋ฐ›์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ํ›„์† ์กฐ์น˜๋ฅผ ์ทจํ•˜๋Š” ์‚ฌ๋žŒ์ด ์—ฌ๊ธฐ ์— ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š” ์นœ๊ตฌ ์—ฌ๋Ÿฌ๋ถ„, ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ํ•ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. django-oauth-toolkit์ด Jazzband ์— ์˜ค๋žซ๋™์•ˆ ์žˆ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ช‡ ๊ฐ€์ง€๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. Jazzband์˜ "open door" ์ •์ฑ…(๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ์‚ฌ๋žŒ์ด Jazzband GitHub org์— ๊ฐ€์ž…ํ•˜๊ณ  ์ง์ ‘ ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ์Œ)์„ ์œ„ํ•ด, Jazzband๋กœ์˜ ์ด์ „ ์ดํ›„ ๊ธฐ์—ฌํ•œ ๋ชจ๋“  ์‚ฌ๋žŒ์œผ๋กœ๋ถ€ํ„ฐ django-oauth-toolkot์„ oauthlib ์กฐ์ง์œผ๋กœ ์ด์ „ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์Šน์ธ์„ ์–ป๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ @synasius (์ด์ „ ์œ„์น˜์—์„œ Jazzband๋กœ repo๋ฅผ ์ด์ „ํ•œ ์‚ฌ๋žŒ)์™€ ์–ผ๋งˆ ์ „์— ์€ํ˜œ๋กญ๊ฒŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์ด๋Œ์—ˆ๋˜ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ ๋ฆฌ๋” @MattBlack85 ์—๊ฒŒ ์ด์ „์— ๋Œ€ํ•œ ํ™•์ธ์„ ๋ฐ›๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•œ ๊ธฐ์—ฌ์ž๋ฅผ ํฌํ•จํ•˜์—ฌ Jazzband๋กœ ์ด๋™ํ•œ ๋‚  ์ดํ›„ ๋ฐœ์ƒํ•œ ๋ณ€๊ฒฝ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. https://github.com/jazzband/django-oauth-toolkit/compare/master@%7B04-18-18 %7D...๋งˆ์Šคํ„ฐ

@jleclanche ๋‹น์‹ ์€ ๊ธฐ๊ณ ์ž ์ค‘ ํ•œ ๋ช…์ด์—ˆ๊ณ  IRC์™€ ์—ฌ๊ธฐ์—์„œ oauthlib org๋กœ์˜ ์ด์ „์— ๋Œ€ํ•ด ๋ฌผ์—ˆ์Šต๋‹ˆ๋‹ค. ํ™•์ธ์„ ์œ„ํ•ด ์—ฌ๊ธฐ ํ‹ฐ์ผ“์—์„œ ์ด ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์—ฐ๋ฝํ•˜๋Š” ๋‹ค๋ฆฌ ์ž‘์—…์„ ํ•ด์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์ €๋Š” ํ˜„์žฌ 12์›” 5์ผ๊นŒ์ง€ ์ž๋ฆฌ๋ฅผ ๋น„์šฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋‚ ์งœ ์ดํ›„์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋„๋ก ๋‹ค๋ฆฌ ์ž‘์—…์„ ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค!

๋ฐฉ๊ธˆ @denizdogan ๊ณผ ๋Œ€ํ™”ํ–ˆ์œผ๋ฉฐ ๊ทธ๋Š” ๋˜ํ•œ requests-oauthlib๋ฅผ ๋•๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์™€ ๋‚˜๋Š” ๋‘˜ ๋‹ค ๊ธฐ์กด ์ฝ”๋“œ์˜ ์ƒํƒœ๊ฐ€ ์ข‹์ง€ ์•Š์œผ๋ฉฐ ์ „๋ฉด์ ์ธ ์žฌ์ž‘์„ฑ์ด ์ข‹์€ ์ƒ๊ฐ์ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋” ๋‚˜์€ ๊ฐœ๋ฐœ์ž API๋ฅผ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” ์ƒˆ๋กœ์šด ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค๊ณ  ๋ฏธ๋ž˜์˜ ์–ด๋Š ์‹œ์ ์—์„œ requests-oauthlib๋ฅผ ๋Œ€์ฒดํ•˜๊ฒŒ ๋  _may_ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์ž‘์—…์„ ์‹œ์ž‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ๊ฐ€ ๋น„๋™๊ธฐ ์—ฐ๊ฒฐ์„ ์œ„ํ•ด httpx ๋„ ์ง€์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@thedrow ์‹ค์ œ๋กœ ์—ฌ๊ฐ€ ์‹œ๊ฐ„์— ์ž‘์—…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ requests-oauthlib๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜์ง€๋งŒ httpx๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฐœ์„  ์‚ฌํ•ญ์„ ์ฐพ์„ ๋•Œ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ž‘์—… ์ด๋ฆ„์€ ํฅ๋ฏธ๋กญ์ง€ ์•Š๊ฒŒ๋„ httpx-oauthlib์ž…๋‹ˆ๋‹ค(์•„์ง ์˜จ๋ผ์ธ์— ์ฝ”๋“œ๊ฐ€ ์—†์Œ).

๊ณต๊ฐœ์ ์ด๊ณ  ์ •์งํ•˜๊ฒŒ ๋งํ•˜์ž๋ฉด, ๋‚˜๋Š” ์ฃผ๋กœ requests-oauthlib๊ฐ€ ์˜ˆ์ „ ๋ฐฉ์‹์œผ๋กœ ์„ค๊ณ„๋œ ์ด์œ ๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์— ๋Œ€ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ ์—†์ด 20/20 ์ดํ›„๋กœ ๋” ๋‚˜์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. . ๋‚ด๊ฐ€ ์ด ์ผ์„ ํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๊ฐ™์€ ์ผ์„ ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜์‹ญ์‹œ์˜ค. ์™œ๋ƒํ•˜๋ฉด ๋‹น์‹ ์€ ์•„๋งˆ๋„ ๋‚˜๋ณด๋‹ค ๊ทธ ์ผ์— ๋” ์ ํ•ฉํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. :)

PyPI์—์„œ ์ ์ ˆํ•œ ํŒจํ‚ค์ง€๋กœ ๋๋‚˜๋ฉด httpx ์‚ฌ์šฉ์ž๊ฐ€ ์ฃผ์š” ๋Œ€์ƒ์ด ๋  ๊ฒƒ์ด๋ฉฐ ์ˆ˜๋ฐ˜๋˜๋Š” ์ž‘์—…์˜ ์–‘์— ๋”ฐ๋ผ ์š”์ฒญ์ด ๋Œ€์ฒด ์ˆ˜๋‹จ์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์–ด๋ฆฌ์„์€ ์งˆ๋ฌธ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์งˆ๋ฌธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ Authlib ์— ๋ถ€์กฑํ•œ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? OAuth ์„œ๋ฒ„๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋ผ๊ณ ๋งŒ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ํƒœ๊ทธ๋ผ์ธ์— ๊ทธ ๋ถ€๋ถ„์„ ํ‘ธ์‹œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์š”์ฆ˜์—๋Š” ํด๋ผ์ด์–ธํŠธ ์ง€์›๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Flask ๋ฐ Django ํ†ตํ•ฉ, ๋น„๋™๊ธฐ HTTPX ์ง€์›, PKCE ์ง€์›, OpenID Connect ๋“ฑ๋„ ํฌํ•จํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. @lepture ๊ฐ€ ํฌํฌ๋ฅผ ๋งŒ๋“  ์ง€ 2๋…„์ด ๋„˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ ํ™œ๋ฐœํ•˜๊ฒŒ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” httpx-oauthlib๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ๊ฝค ๋ช‡ ์‹œ๊ฐ„์˜ ์ž์œ  ์‹œ๊ฐ„์„ ๋ณด๋ƒˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด์ง€ ์•Š์€ ๊ฒƒ์— ๋Œ€ํ•ด ์•ฝ๊ฐ„์˜ ๋‚˜ ์ž์‹ ์„ ์ฐจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง€๊ธˆ์€ ๊ทธ๊ฒƒ์ด ๋ถˆํ•„์š”ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด Authlib๋ฅผ ์„ค๊ณ„ํ•œ ๋ฐฉ์‹์€ ๋‚ด๊ฐ€ ์„ฑ์ทจํ•˜๋ ค๊ณ  ํ–ˆ๋˜ ๊ฒƒ๊ณผ ๋งค์šฐ ์ผ์น˜ํ•˜๋ฉฐ ๋•Œ๋กœ๋Š” ์‹ค์ œ๋กœ ๋‚ด๊ฐ€ ์—ผ๋‘์— ๋‘์—ˆ๋˜ ๊ฒƒ๋ณด๋‹ค ๋” ์ข‹์Šต๋‹ˆ๋‹ค.

๊ฐํžˆ oauthlib ๋ฐ requests-oauthlib๋ฅผ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๊ณ  Authlib์— ์ง‘์ค‘ํ•ด์•ผ ํ•  ๋•Œ๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”.

Auth Zero๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๊ฐœ์ธ ํšŒ์‚ฌ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๊ทธ ๋…ธ๋ ฅ์— ์ž๊ธˆ์„ ์ง€์›ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ฐœ์ธ์ ์œผ๋กœ ๊ทธ๋“ค์ด ๊ด€๋ จ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋Œ€ํ•œ ๊ณต๊ฒฉ์œผ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.

์›๋ž˜ ์ด ํ”„๋กœ์ ํŠธ์— ์ฐธ์—ฌํ•œ ์ด์œ ๋Š” ํšŒ์‚ฌ๋กœ์„œ์˜ Auth0์ด ๊ฒฝ์Ÿ์„ ์ค„์ด๋Š” ๊ฒƒ์ด ์ตœ์„ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๋กœ๊ทธ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์†Œ์œ ํ•˜๊ฑฐ๋‚˜ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๋ฐฉ์‹์œผ๋กœ ๊ตฌ๋งคํ•˜๊ณ  ํ™œ์šฉํ•˜๋ ค๊ณ  ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์Šคํƒ€ํŠธ์—… ๊ฐ€๊ฒฉ์„ ์˜ฌ๋ฆฌ๊ณ , ์„œ๋น„์Šค๋กœ ๋กœ๊ทธ์ธ์„ ํ†ต์ œํ•˜๊ณ , ๊ธฐ์—…์—์„œ ๊ฐ•์ œ๋กœ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•ด์„œ ๊ทธ๋Ÿฐ ์ง“์„ ๊ณ„์† ํ•ด์„œ ์ „ํ˜€ ๋ฏฟ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ, ์šฐ๋ฆฌ๋Š” ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ทธ๋“ค์ด ๋ชจ๋“  ๊ฒƒ์„ ํ†ต์ œํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์กด์žฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ณต์‹์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌผ๊ฑด์ด ๊นจ์ง€๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์œผ๋ฏ€๋กœ BORG๋กœ ๋ด…๋‹ˆ๋‹ค.

@duaneking ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค - Auth0์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๊ด€ํ–‰์ด๋‚˜ Authlib์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์กฐ์ฐจ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ์‘๋‹ต์— ๊ฐ์‚ฌ๋“œ๋ฆฌ๋ฉฐ Authlib ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๋ฅผ ์žฌ๊ณ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋‚ด๊ฐ€ ์ฐพ์€ ๊ฒฐ๊ณผ Auth0์€ ํ”„๋กœ์ ํŠธ์˜ "ํ›„์›์ž"์ผ ๋ฟ์ด๋ฉฐ Hsiaoming์€ Auth0๊ณผ ๊ด€๋ จ์ด ์—†๋Š” ์ž์ฒด ์‚ฌ์—…์„ ์šด์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์ดํ•ด๊ฐ€ ๋งž์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ํ† ๋ผ ๊ตฌ๋ฉ์ด ๋” ๊นŠ์–ด ์กŒ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”.

Auth0๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ "ํ›„์›"์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ท€ํ•˜๊ฐ€ ๋ณด๋Š” ๊ฒƒ์€ ํ”„๋ŸฐํŠธ ์—”๋“œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ์ง์ ‘ ๋˜๋Š” ๊ฐ„์ ‘์ ์œผ๋กœ ๋ˆ์„ ์ ๊ทน์ ์œผ๋กœ ๊ฐ€์ ธ๊ฐ€๋Š” ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋Š” ๋ฐฑ์—”๋“œ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์˜ค์—ผ/์ œ์–ด/์˜ํ–ฅ์„ ๋ฐ›๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํšŒ์‚ฌ๊ฐ€ ๋ธŒ๋žœ๋”ฉ์„ ์ง€์‹œํ•˜๊ณ  ํšŒ์‚ฌ์— ๋Œ€ํ•œ ์œ„ํ—˜์„ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๊ณต๊ฐœ์ ์œผ๋กœ ๋งํ•  ์ˆ˜ ์—†๋Š” ๊ณ„์•ฝ์— ์„œ๋ช…ํ•˜๋„๋ก ํšŒ์‚ฌ์—์„œ ๊ฐ•์š”ํ•˜๋Š” ๊ฒƒ์€ ๋“œ๋ฌธ ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๊ทธ๋“ค์ด ๋‚˜์—๊ฒŒ ์—ฐ๋ฝ์„ ์‹œ๋„ํ–ˆ์„ ๋•Œ ๊ทธ๊ฒƒ์ด ์ •ํ™•ํžˆ ์ œ์•ˆ๋œ ๊ฒƒ์ด์—ˆ๊ณ  ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋‚˜๋Š” ๊ทธ๋“ค์ด "ํ›„์›"ํ•˜๊ฑฐ๋‚˜ "์ง€์›"ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์™€ ์ด์— ๋™์˜ํ•œ ๊ฐœ๋ฐœ์ž ์ž์‹ ๋„ ์˜์‹ฌ๋˜๋Š” ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ์ „ํ˜€ ์‹ ๋ขฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋‚ด ์ƒ๊ฐ์— ๊ทธ๋“ค์˜ ์‹ ๋ขฐ์„ฑ์„ ํšจ๊ณผ์ ์œผ๋กœ ํŒ”์•˜์Šต๋‹ˆ๋‹ค.

@denizdogan @duaneking Auth0์€ Authlib์˜ ํ›„์›์ž์ผ ๋ฟ์ด๋ฉฐ Authlib์˜ "์ œ์–ด" "๊ด€๋ฆฌ" "๋ผ์ด์„ ์Šค" ๋˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ด‘๊ณ ๋ผ๊ณ  ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Auth0์—์„œ ๊ทธ๋“ค์— ๋Œ€ํ•œ ํ†ตํ•ฉ์„ ๊ตฌ์ฒด์ ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ €์—๊ฒŒ ์—ฐ๋ฝ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๊ฑฐ์ ˆํ–ˆ์Šต๋‹ˆ๋‹ค. Authlib์— auth0 ๊ด€๋ จ ์ฝ”๋“œ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ์™œ ๋ฌธ์ œ์ธ์ง€ ์ดํ•ด๊ฐ€ ์•ˆ ๊ฐ€๋Š”๋ฐ ์ •๋ณด๊ฐ€ ๊ณต๊ฐœ๋˜์–ด ์žˆ๊ณ  https://www.patreon.com/lepture๋ฅผ ํ†ตํ•ด ๋ˆ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋‚˜ Patreon์ด๋‚˜ GitHub๋ฅผ ํ†ตํ•ด ์ €๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ์™ธ์—๋„ readme์—์„œ ๋‹ค๋ฅธ ํ›„์›์ž Authing ๋„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  OAuthlib ์ž์ฒด๋„ Auth0 ํ›„์› ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. https://pyjwt.readthedocs.io/en/latest/

๋‚˜๋Š” Auth0์„ ์‹ ๋ขฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์˜ ์ „์ˆ ์€ ๋‚ด ์ƒ๊ฐ์— ๋น„์œค๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ๋ˆ์„ ๋˜์ง€๊ณ  ์‹ถ์–ดํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์€ ๊ดœ์ฐฎ์ง€๋งŒ ๊ฒฐ์ฝ” ๊ทธ๋“ค์—๊ฒŒ ํ†ต์ œ๋ ฅ์ด๋‚˜ ์˜ํ–ฅ๋ ฅ์„ ์ฃผ์–ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.

์‹ ์ƒ ๊ธฐ์—…๊ณผ ์ž์„  ๋‹จ์ฒด(๋˜๋Š” ๋ˆ„๊ตฌ์—๊ฒŒ๋‚˜)์—์„œ ์‚ฌ์šฉ์ž๋‹น ์ˆ˜์ต์„ ๊ฑฐ๋‘๋ ค๋Š” ๊ทธ๋“ค์˜ ๋ชฉํ‘œ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ, ๋ชจ๋“  ๊ธฐ์—…์˜ ๋ชฉํ‘œ ๋“ฑ๊ณผ ์ •๋ฐ˜๋Œ€์ด๋ฉฐ ์‚ฌ์šฉ์ž๋‹น ๊ฐ€๊ฒฉ์„ ์›ํ•˜๋Š” ํšŒ์‚ฌ์˜ ํŠน์„ฑ์ƒ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์ ๋Œ€์ ์œผ๋กœ ๋ณด์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์ต์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€๋Šฅํ•œ ํ•œ ๋†’์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ์€ ์˜คํ”ˆ ์†Œ์Šค, ์‹ ์ƒ ๊ธฐ์—…, ๋ชจ๋“  ํšŒ์‚ฌ ๋“ฑ์— ๋Œ€ํ•œ ๊ณต๊ฒฉ์ž…๋‹ˆ๋‹ค.

๊ฐํžˆ oauthlib ๋ฐ requests-oauthlib๋ฅผ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๊ณ  Authlib์— ์ง‘์ค‘ํ•ด์•ผ ํ•  ๋•Œ๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— OAuthlib๊ฐ€ Authlib์— ๋น„ํ•ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ฃผ์š” ๊ธฐ๋Šฅ์€ ๋ถˆ๊ฐ€์ง€๋ก ์  ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.


์ ‘์„ 
Authlib์˜ httpx ํ†ตํ•ฉ์€ ์ž‘์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด lepture/authlib/pull/219, lepture/authlib/pull/209๋ผ๋Š” 2๊ฐœ์˜ PR์ด ์ œ์ถœ๋˜์—ˆ์œผ๋ฉฐ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ @lepture ์˜ ์ €์ž‘๊ถŒ ์–‘๋„ ์ •์ฑ…์— ๋Œ€ํ•ด ์ž‘์ง€๋งŒ 0์ด ์•„๋‹Œ ์šฐ๋ ค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„์„œ๊ด€ ์†Œ๋น„์ž๋กœ์„œ 100% ์ดํ•ดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ธฐ์—ฌ์ž๋กœ์„œ CC0์œผ๋กœ ์ถœ์‹œํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค๊ณผ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ๋…ผ์˜ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ „์ฒด ์ปค๋ฎค๋‹ˆํ‹ฐ ์ž‘์—…์„ ์†Œ์œ ํ•˜๋Š” ํ•œ ์‚ฌ๋žŒ์˜ ํŒฌ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋‚˜๋Š” ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€๋˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @auvipy ๋‹˜, ํ”„๋กœ์ ํŠธ์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๋Œ€์žฅ์„ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค!

์•ˆ๋…•ํ•˜์„ธ์š” @auvipy ๋‹˜, ํ”„๋กœ์ ํŠธ์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๋Œ€์žฅ์„ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค!

์•Œ์•˜๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง€๊ธˆ์€ ๋ณ‘ํ•ฉ์ด๋‚˜ ์Šน์ธ์ด ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์กฐ์ง, ํŒ€, ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ํ˜ผ๋ž€์Šค๋Ÿฌ์› ๋˜ ๊ฒƒ ๊ฐ™์•„์š”. ์ด์ œ oauthlib ์กฐ์ง์˜ ๋ชจ๋“  ์‚ฌ๋žŒ๊ณผ ๋” ๋งŽ์€ ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰