ํ์ฌ OAuth ํ๋ฆ, ๊ณ์ ์ ํ, ํ ํฐ ๊ด๋ฆฌ, ๊ฐ ๋ธ๋๋ฉ ๋ฑ๊ณผ ๊ด๋ จ๋ ๋ง์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ ์ด ๋ชจ๋ ๊ฒ์ ์ฒ๋ฆฌํ ์๋ก์ด account
์ฑ์์ ๋ณด๋ค ์คํ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค๊ธฐ ์ํ ์๋์
๋๋ค. ์ด ๋ชจ๋ ์ฐ๋ ค.
๋ชจ๋ ๊ณ์ ๋ฐ ์ธ์ฆ ๋ฌธ์ ์ ๋ํด OAuth ๊ณต๊ธ์ ๋ฐ ์์ ํ ๊ธฐ๋ฅ์ ๊ฐ์ถ ๋ธ๋๋ ๊ตฌ์ฑ UI ์ญํ ์ ํ๋ ์ฑ
ํธ๋ฌผ
ํ์ฌ ๊ตฌํ์ ํฐ ๋ฌธ์ ๋ ์ฌ์ฉ์์ ๋ํ ๋ช ํ์ฑ๊ณผ ์ปจํ ์คํธ๊ฐ ๋ถ์กฑํ๋ค๋ ๊ฒ์ ๋๋ค. OAuth ์ฑ์ ๋ ๋ฆฝ๋ ์ธ์ฆ ์ฃผ์ฒด๋ก ์ธ์ํ๊ธฐ ์ด๋ ต์ต๋๋ค. ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ณ์ ์ฑ์ ๊ตฌ์ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ด๋์ด๋ฅผ ์ ๊ณตํ๋ ์ธ ๊ฐ์ ์์ด์ดํ๋ ์์ ๋ง๋ค์์ต๋๋ค.์์ด์ดํ๋ ์ ๋ณด๊ธฐ
(์ค๋ฅธ์ชฝ ์๋จ์ ์ฌ์ฉ์ ๋๋กญ๋ค์ด์ ํตํฉ๋ ๊ณ์ ์ ํ๊ธฐ์ ์ฃผ๋ชฉ)
์. @johanstokking @htdvisser , ๊ณ์ํ๋ ๊ฒ์ด ์ข๋ค๊ณ ์๊ฐํ๋์ง ์๋ ค์ฃผ์ญ์์ค.
์ฝ์๊ณผ oauth ๊ณต๊ธ์ ๊ฐ์ ์ ์ฒด ๋ก๊ทธ์ธ/๋ก๊ทธ์์ ํผ๋ ๋ฌธ์ ์ ๊ด๋ จํ์ฌ ๋ค์๊ณผ ๊ฐ์ ๊ณํ์ด ์์ต๋๋ค.
Account
๋ก๊ณ ๋ฅผ ์ฌ์ฉํ๊ณ ์ฝ์(cc @pierreph)์๋ ์ฌ์ฉํ๋ ๋์ผํ ํค๋ ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํฉ๋๋ค./console/login
/account/login
์๋ ๋ฆฌ๋๋ ์
๋ฉ๋๋ค./users/logout
๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.์ด ๊ณํ์ ๋ํ ๋ถ๋ง ์ฌํญ์ด ์์ผ๋ฉด ๊ตฌํ์ ์์ํ๊ฒ ์ต๋๋ค.
ํ๋ฅญํ ๊ณํ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค. ์ฝ์์์ ๋ช ์์ ์ผ๋ก ๋ก๊ทธ์์ํ ํ์๊ฐ ์๊ณ UX์์ OAuth๋ฅผ ํตํด ๋ก๊ทธ์ธ๋ ์ํ๋ฅผ ์ ์งํ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค.
๊ต์ฐจ ์ถ์ฒ ๋ก๊ทธ์์์ ๋ฌด์์ด ํ์ํฉ๋๊น? ๊ฐ๋จํ 2๋จ๊ณ ์ ๊ทผ ๋ฐฉ์์ด ์๋๊น์? "ํ์ด์ง"๋ฅผ ๋ก๊ทธ์์ํ์ฌ ์ฝ์ ์ ์ฅ ์ก์ธ์ค ํ ํฐ์ ์ ๊ฑฐํ ๋ค์ ๊ณ์ ์ฑ์ด ๋ก๊ทธ์์ํ๋ ์ผ๋ฐ ๋ก๊ทธ์์ ํ์ด์ง๋ก ๋ฆฌ๋๋ ์ ํ์๊ฒ ์ต๋๊น? ์๋๋ฉด ๋ฆฌ๋๋ ์ ์์ด ์ด๊ฒ์ ๋ก๊ทธ์์ ๋์ ์ ๊ฒ์ํ์๊ฒ ์ต๋๊น?
๋ก๊ทธ์์์ ๊ฒฝ์ฐ OpenID Connect ๋ก๊ทธ์์์์ ์๊ฐ์ ์ป์ ์ ์์ต๋๋ค. ๋ฉ์ง ์์ฝ์ ์ฌ๊ธฐ์์ ์ฐพ์ ์ ์์ต๋๋ค: https://medium.com/@robert.broeckelmann/openid -connect-logout-eccc73df758f
ํ๋ฅญํ ๊ณํ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค. ์ฝ์์์ ๋ช ์์ ์ผ๋ก ๋ก๊ทธ์์ํ ํ์๊ฐ ์๊ณ UX์์ OAuth๋ฅผ ํตํด ๋ก๊ทธ์ธ๋ ์ํ๋ฅผ ์ ์งํ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค.
๊ต์ฐจ ์ถ์ฒ ๋ก๊ทธ์์์ ๋ฌด์์ด ํ์ํฉ๋๊น? ๊ฐ๋จํ 2๋จ๊ณ ์ ๊ทผ ๋ฐฉ์์ด ์๋๊น์? "ํ์ด์ง"๋ฅผ ๋ก๊ทธ์์ํ์ฌ ์ฝ์ ์ ์ฅ ์ก์ธ์ค ํ ํฐ์ ์ ๊ฑฐํ ๋ค์ ๊ณ์ ์ฑ์ด ๋ก๊ทธ์์ํ๋ ์ผ๋ฐ ๋ก๊ทธ์์ ํ์ด์ง๋ก ๋ฆฌ๋๋ ์ ํ์๊ฒ ์ต๋๊น? ์๋๋ฉด ๋ฆฌ๋๋ ์ ์์ด ์ด๊ฒ์ ๋ก๊ทธ์์ ๋์ ์ ๊ฒ์ํ์๊ฒ ์ต๋๊น?
2๋จ๊ณ ์ ๊ทผ ๋ฐฉ์์ ๊ด์ฐฎ์ต๋๋ค. ๋ด ์ฐ๋ ค๋ ๊ณ์ ์ฑ์ ๋ก๊ทธ์์์ด CSRF๋ฅผ ๋นํ์ฑํํด์ผ ํ๋ค๋ ๊ฒ์ด์์ต๋๋ค. ์ฆ, ๋ก๊ทธ์์ ๋งํฌ๊ฐ ์๋ ์ฌ๋์ ๋๊ตฌ๋ ์์ ์ ๊ณ์ ์์ ๋ก๊ทธ์์ํ๋๋ก ์ ์ธํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ํ์ฌ v2 ์คํ์์๋ ๊ฐ๋ฅํฉ๋๋ค( ์ฌ๊ธฐ๋ฅผ ํด๋ฆญํ๋ฉด ๋ก๊ทธ์์๋จ ).
ํ์ฌ๋ก์๋ ์ด๊ฒ์ด ์์ฉ ๊ฐ๋ฅํ์ง๋ง ์ ํํ ๋ชจ๋ฒ ์ฌ๋ก๋ ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ด์ ์ ๊ณ์ ์ฑ์ ๋ํด ๊ฝค ๋ง์ ์์ ์ ์ํํ์ต๋๋ค.
์คํ API๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ์ก์ธ์ค ํ ํฐ์ ํ๋์ฝ๋ฉํ์ฌ ์ด ์์
์ ์ํํ์ต๋๋ค. ๊ณ์ ์ฑ์ ๋ํ ์ก์ธ์ค ํ ํฐ์ ์ป๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ด ๋ฌด์์ธ์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ํ์ฌ ์ ์ ํ ๊ตฌํ์ ์งํํ ์ ์์ต๋๋ค.
ํ์ฌ "oauth ์ฑ"์ oauth ์๋ฒ์ ์ธ์ฆ ์๋ํฌ์ธํธ(๋ก๊ทธ์ธ, ๋ก๊ทธ์์ ๋ฐ ์ก์ธ์ค ํ ํฐ์ด ํ์ํ์ง ์์ ๊ธฐํ ๊ณ์ ๊ด๋ จ ์๋ํฌ์ธํธ)์ ์ฐ๊ฒฐํ๋ SPA์ผ ๋ฟ์
๋๋ค.
@htdvisser ๋ ์ด๊ธฐ ์์ด๋์ด๊ฐ ์ํธ ๋ถ์ฌ ์ ํ์ ์ฌ์ฉํ์ฌ ๊ณ์ ์ฑ์ ๋ณ๋์ oauth ํด๋ผ์ด์ธํธ๋ก ๊ฐ๋
๋๋ ์ด๋ฏธ @htdvisser ์๊ฒ ์ด๊ฒ์ ์ ์ฒด ์์๋ ์ธ์ฆ/๊ถํ ๋ถ์ฌ ์ธก๋ฉด์ด ๋์๊ฒ ๋ค์ ์๋์ ์ด๋ฉฐ ๋ณด์์ ๋ฏผ๊ฐํ ๋ฌธ์ ์ ๋ํด ์ฑ ์์ ์ง ๋งํผ ์ง์์ด ์๋ค๊ณ ์๊ฐํ๋ค๊ณ ๋งํ์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ๋ชฉํ๋ก ํด์ผ ํ๋ ๊ฒ์ ๊ณต์ ํด๋ผ์ด์ธํธ์ ์ธ์ฆ ํ๋ฆ์ด ๊ธฐ๋ณธ ์ธ์ฆ์ฒ๋ผ ๋๊ปด์ง๋๋ก ํ๋ ํ๋ฆ์ ๋๋ค( ๋ด ๋ค๋ฅธ ์๊ฒฌ ์ฐธ์กฐ). ์ด๋ ๋ก๊ทธ์ธ๊ณผ ๋ก๊ทธ์์์ด ์ ์ญ์ ์ด๋ฉฐ ํด๋ผ์ด์ธํธ์ ์ธ์ฆ๋ ์ํ์ ๊ถํ ์ ๊ณต์.
๋ฐ๋ผ์ ๊ณ์ ์ฑ์ ๊ณ์ ์ฌ์ฉํ๋ ค๋ฉด ๋์๊ณผ ์๊ฒฌ์ด ํ์ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ์ด๋ป๊ฒ ์กฐ์ ํ ์ ์์ต๋๊น?
์์ค์ ๋ฐ๋ผ ์ํธ ๋ถ์ฌ ์ ํ์ "๊ณต์" ๋ฐ ์ ๋ขฐํ ์ ์๋ ํด๋ผ์ด์ธํธ์ ๊ฒฝ์ฐ์๋ ๊ถ์ฅ๋์ง ์์ต๋๋ค.
์, ์ํธ ๋ถ์ฌ๋ฅผ ์ฌ์ฉํด์๋ ์ ๋ฉ๋๋ค. ์ฌ๊ธฐ์์ ์ฌ์ ๋ฐ ์ถ๋ก ์ ์ฐธ์กฐํ์ญ์์ค. https://tools.ietf.org/html/draft-ietf-oauth-security-topics-13#section -3.4
ํ์ฌ #2148์ ์ํด ์ฐจ๋จ๋จ
๊ทธ๋์ ํ๋์ ์ด๊ฒ์ ๊ด์ฌํ ํ์ ์ฝ๊ฐ์ ์๊ฒฌ์ด ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ณ์ ์ฑ์ ์๋ ์์ด๋์ด๋ ํ์ฌ oauth ์ฑ์ ๋์ฒดํ๊ณ ๊ธฐ๋ฅ์ ํ๋กํ ๋ฐ ์ธ์ ๊ด๋ฆฌ๋ก ํ์ฅํ๋ ๊ฒ์ด์์ต๋๋ค(OP ์ฐธ์กฐ). ์ด๊ฒ์ ๋ฌธ์ ๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด ์ฑ์ ์ก์ธ์ค ํ ํฐ์ด ํ์ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ ๋ณธ์ง์ ์ผ๋ก ๊ณ์ ์ฑ์ด OAuth ๊ณต๊ธ์์ด์ ํด๋ผ์ด์ธํธ๊ฐ ๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๋ด ์์ด๋์ด๋ ์๋ก์ด OAuth ํด๋ผ์ด์ธํธ( account
)๋ฅผ ๋์
ํ๊ณ ํ๋ก ํธ์๋ ๋ฐฉ์์ผ๋ก ๊ธฐ๋ฅ์ ํ์ฌ OAuth ์ฑ๊ณผ ํผํฉํ๋ ๊ฒ์ด์์ต๋๋ค. ์ฌ์ฉ์์ ๊ฒฝ์ฐ OAuth ์ ๊ณต์(๋ก๊ทธ์ธ, ๋ฑ๋ก, ๊ณ์ ํ์ธ ๋ฑ)์ ๊ณ์ ์ฑ ํด๋ผ์ด์ธํธ(ํ๋กํ ์ค์ , ์ธ์
๊ด๋ฆฌ, ๊ถํ ๊ด๋ฆฌ)๊ฐ ํ๋์ ๋์ผํ ์ ํ๋ฆฌ์ผ์ด์
์ธ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ๋ฐฑ๊ทธ๋ผ์ด๋์์๋ OAuth ๊ณต๊ธ์์ ํด๋ผ์ด์ธํธ ๊ฐ์ ๊ธฐ์ ์ ์ธ ๋ถ๋ฆฌ์
๋๋ค. ๋ฐฑ์๋์์ ๊ณ์ ํด๋ผ์ด์ธํธ๋ oauth
ํจํค์ง์ ์ผ๋ถ๊ฐ ๋ฉ๋๋ค. ํ๋ก ํธ์๋์์๋ ๋์ผํ ์ง์
์ ( account.js
)์ ์ฌ์ฉํ์ฌ ๋ ๊ฐ์ง๋ฅผ ๋์ผํ ์ฑ์ผ๋ก ์ทจ๊ธํ ์๋ ์์ต๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ๋ผ์ฐํ
์ ์ด ํผํฉ์ ๋ฐ์ํฉ๋๋ค. ์:
/account/login
oauth ๋ก๊ทธ์ธ [OAuth ์ ๊ณต์ ๊ณ์ธต]/account/register
[OAuth ์ ๊ณต์ ๊ณ์ธต]/account/forgot-password
์ฌ์ฉ์ ๋ฑ๋ก [OAuth ์ ๊ณต์ ๊ณ์ธต]/account/client/login/ttn-stack
ํด๋ผ์ด์ธํธ ๋ก๊ทธ์ธ(๊ถํ ๋ถ์ฌ) [OAuth ํด๋ผ์ด์ธํธ ๊ณ์ธต]/account/client/oauth/callback
์ธ์ฆ ์ฝ๋ ๊ตํ [OAuth ํด๋ผ์ด์ธํธ ๊ณ์ธต]/account
oauth ํด๋ผ์ด์ธํธ [OAuth ํด๋ผ์ด์ธํธ ๊ณ์ธต] ๊ฐ์ ํ์ด์ง๋๋ OAuth ๊ณต๊ธ์( /oauth
via pkg/oauth
)๋ฅผ ๊ทธ๋๋ก ๋๊ณ ๊ณ์ ์ฑ( /account
via pkg/account
)์ ์ฒ๋ฆฌํ์ฌ ๋ ๋ฌธ์ ๋ฅผ ๋ถ๋ฆฌ๋ ์ํ๋ก ์ ์งํ ์ ์์ต๋๋ค. ) ์ฝ์์์ ํ๋ ๊ฒ์ฒ๋ผ ์์ ํ ๋ณ๊ฐ์ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ฉด OAuth ๊ณต๊ธ์๋ ๊ถํ ๋ถ์ฌ ๋ฐ ์ฌ์ฉ์ ๊ณ์ ๋ฑ๋ก์ ํฌํจํ ์ธ์ฆ ๋ฌธ์ ์ ๋ํด์๋ง ์ฑ
์์ ์ง๊ฒ ๋์ง๋ง ํ์ฌ์ ๊ฐ์ด ์์ฒด์ ์ผ๋ก ์ธ์ฆ๋ ๋ณด๊ธฐ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ๋์ ๋ก๊ทธ์ธ ํ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ณ์ ์ฑ์ผ๋ก ๋ฆฌ๋๋ ์
๋๋ฉฐ, ๊ทธ๋ฌ๋ฉด ์๋์ผ๋ก ํ ํฐ์ ๊ฒ์ํฉ๋๋ค.
์ฒซ ๋ฒ์งธ ์๋ฃจ์
์ด ํ์ฌ ์ธ์ฆ ๋ฐ ๊ณ์ ๊ด๋ฆฌ์ ๊ด๋ จ๋ ํผ๋์ ์ด๋ ์ ๋ ํผํ ์ ์๋ค๊ณ ์๊ฐํ์ง๋ง ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋์ง ์ฌ๋ถ๋ ์์ธกํ ์ ์์ต๋๋ค. ๋ ๋ฒ์งธ ์๋ฃจ์
์ ๋ ๊นจ๋ํด ๋ณด์ด์ง๋ง ๋ฌธ์ ๋ ๋ถ๋ฆฌ๋ฅผ ์ ๋ฌ/๋ธ๋๋ํํ๋ ๋ฐฉ๋ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด ๋ ๋ค "๊ณ์ ์ฑ"์ผ๋ก ๊ณ์ ์ ๋ฌ๋์ด์ผ ํฉ๋๊น? ์๋๋ฉด The Things Stack Single Sign On
๋ฐ The Things Stack Account Application
์ด์ด์ผ ํฉ๋๊น?
์๊ฒฌ์ ์๋ ค์ฃผ์ธ์.
ํ , ํ๋ฐ ๋ฌผ๋ฌ์์ ๊ณ์ ์ฑ์ OAuth ํด๋ผ์ด์ธํธ๋ก ๋ง๋ ๋ชฉ์ ์ ๋ฌด์์ ๋๊น? OAuth๋ฅผ ํตํด ์ด๋ค ๊ธฐ๋ฅ์ ์ํ๋๊ฐ?
์ด๋ค ๋ชจ๋๋ ๊ฐ๊ฐ์ RPC๋ฅผ ์ธ์ฆํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ด๊ธฐ ๋๋ฌธ์ ์ก์ธ์ค ํ ํฐ์ด ํ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด "Things Network Community"์ ๊ฐ์ด ์ธ๋ถ์ ์์ ์ ์๋ OAuth ๊ณต๊ธ์์ @kschiffer ํฌ์ธํธ๋ฅผ ํฌํจํ์ฌ Things Stack์ ์ ์ฅ๋ ์ฌ์ฉ์ ์ํฐํฐ์ ํ๋๋ฅผ ๊ด๋ฆฌํ๋ ์ฌ์ฉ์ ๊ด๋ฆฌ๋ฅผ
์ฐ๋ฆฌ์ /api/v3/*
์๋ํฌ์ธํธ๋ CORS๊ฐ ํ์ฑํ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ฟ ํค ์ธ์ฆ์ ํ์ฉํ์ง ์์ต๋๋ค. API ํค ๋ฐ ์ก์ธ์ค ํ ํฐ์์๋ง ์๋ํฉ๋๋ค.
- ํ๋กํ ์ค์ (์ด๋ฆ, ์ด๋ฉ์ผ, ํ๋กํ ์ฌ์ง)
- ์ธ์ ๊ด๋ฆฌ(๊ฒํ , ์ฒ ํ)
- ๊ถํ ๊ด๋ฆฌ(๊ฒํ , ์ฒ ํ)
- (ํฅํ ์ ์ฌ์ ์ผ๋ก ๋ค๋ฅธ TTES ๊ด๋ จ ๋ฉํ ์ค์ )
์ด๋ค ๋ชจ๋๋ ๊ฐ๊ฐ์ RPC๋ฅผ ์ธ์ฆํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ด๊ธฐ ๋๋ฌธ์ ์ก์ธ์ค ํ ํฐ์ด ํ์ํฉ๋๋ค.
์ฐ๋ฆฌ๋ ๋ํ ์ฝ์์ ์ด๋ฌํ ๋ถ๋ถ์ ๋ง๋ค ์ ์์ง๋ง ์ฝ์์ด ์ด๋ ์ ๋ ํ์ฅ๋ ์ฐ๋ ค๋ฅผ ํผํฉํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ์ฝ์ ๊ธฐ๋ฅ์ ๋ํ ์ค๋ฒํค๋ ์์ด ๊ณ์ ๊ด๋ฆฌ๋ฅผ ์ํํ๋ ๊ฒ์ด ๋ ๋์ ์ํฉ์ ๋ณผ ์ ์์ง๋ง ์๋ง๋ ์ด๊ฒ์ด ์ ๊ฐ ๐คทโโ๏ธ์ ๊ณผ๋ํ๊ฒ ์์ง๋์ด๋งํ ๊ฒ์ผ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ฌธ์ ๋ ์ฝ์์ ๋คํธ์ํฌ ๊ด๋ จ ๋ฌธ์ ๋ฅผ ๊ด๋ฆฌํ๋ ๋๊ตฌ๋ก๋ง ๋ณด๊ณ ์ถ์์ง ์ฌ๋ถ์ ๋๋ค. ๋ชจ๋ TTS ๊ด๋ จ ๋ฌธ์ ์ ๋ํ ๋ฒ์ฉ ๊ด๋ฆฌ ํ๋ซํผ์ผ๋ก ์ด๊ฑฐ๋ ๋ ์์์ ์ด๋ฉฐ ๋ถ๋ฆฌ๋ฅผ ๊ณ ์ํ๊ณ ๋ค์ํ ๋ฌธ์ ์ ๋ํด ๋ค๋ฅธ ์ฑ/ํด๋ผ์ด์ธํธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ ๋ต์ ์ง๋ฌธ์ ๋๋ค. ๋๋ ๋ ๋ค์ ๊ฒฝ์ฐ๋ฅผ ๋ณธ๋ค.
์ฝ์(๊ฐ ํด๋ฌ์คํฐ์ ์ฝ์์ด ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์ฝ์)์ด ์ฌ์ฉ์์ ๋ํ ๋ชจ๋ ๊ถํ์ ๊ฐ์ ธ์ผ ํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ์น์ธ๋ OAuth ํด๋ผ์ด์ธํธ, ์ธ์ , ๊ธฐ๋ณธ ์ด๋ฉ์ผ ์ฃผ์, ์ฐ๋ฝ์ฒ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ์ฝ์์ ์ฌ์ฉํด์๋ ์ ๋ฉ๋๋ค. ์ ์ฉ ์ฌ์ฉ์ ๊ด๋ฆฌ ์ฑ(๊ณ์ ์ฑ)์ด ์์ผ๋ฉด ํจ์ฌ ์ข์ต๋๋ค.
์ข์ ์ง์ ์ ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด๊ธฐ ์ง๋ฌธ์ผ๋ก ๋์๊ฐ๋๋ค.
๋ด ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํผํฉ ์ ๊ทผ:
๋ถ๋ฆฌ๋ ์ ๊ทผ:
๋๋ ํผํฉ ์ ๊ทผ ๋ฐฉ์์ ์ ํธํฉ๋๋ค.
- ํ๋กํ ์ค์ (์ด๋ฆ, ์ด๋ฉ์ผ, ํ๋กํ ์ฌ์ง)
- ์ธ์ ๊ด๋ฆฌ(๊ฒํ , ์ฒ ํ)
- ๊ถํ ๊ด๋ฆฌ(๊ฒํ , ์ฒ ํ)
- (ํฅํ ์ ์ฌ์ ์ผ๋ก ๋ค๋ฅธ TTES ๊ด๋ จ ๋ฉํ ์ค์ )
๊ณ์ ์ฑ ๋ง์ฃ ? OAuth๊ฐ ์๋๊ฐ์?
- ํฉ๋ฆฌ์ ์ธ ๋ธ๋๋ฉ๊ณผ ์ํต์ด ํ์ํ oauth ์ฑ ์์ ์๋ก์ด ์ฑ ๋์
๊ทธ๋ ๋ค๋ฉด ์ฌ์ ํ OAuth ์ฑ์ ๋ฌด์์ ๋๊น?
์ ์ฌ์ ์ผ๋ก ์๋ก์ด ์๋ํฌ์ธํธ๋ฅผ ํตํด ๊ณ์ ์ฑ์์ ๊ตฌ์ถํ ์ ์๋ OAuth ํด๋ผ์ด์ธํธ๊ฐ ๊ณ์ ์ฑ์ ์ถ๊ฐํ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉ์๋ฅผ ๋์ดํ ์ ์์ต๋๊น?
๊ณ์ ์ฑ ๋ง์ฃ ? OAuth๊ฐ ์๋๊ฐ์?
์, ์ด๊ฒ์ ๊ณ์ ์ฑ์ ๋๋ค. ๊ทธ๋ฌ๋ ๊ณํ์ ํ์ฌ OAuth ์ฑ์ผ๋ก ๊ฐ์ง๊ณ ์๋ ๊ฒ์ด ๊ณ์ ์ฑ์ ์ผ๋ถ๊ฐ ๋๋ ๊ฒ์ด์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ฌ์ ํ OAuth ์ฑ์ ๋ฌด์์ ๋๊น?
์ธ์ฆ(OAuth ํ๋ฆ์ ์ผ๋ถ๋ก), ์ฌ์ฉ์ ๋ฑ๋ก, ํด๋ผ์ด์ธํธ ๊ถํ ๋ถ์ฌ, ๋น๋ฐ๋ฒํธ ์ฌ์ค์ ์ ์ํด. ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ์ ์ธ์ฆ ๋ฐ ํด๋ผ์ด์ธํธ ๊ถํ ๋ถ์ฌ์ ๊ด๋ จ๋ ๋ชจ๋ ๊ฒ.
์ ์ฌ์ ์ผ๋ก ์๋ก์ด ์๋ํฌ์ธํธ๋ฅผ ํตํด ๊ณ์ ์ฑ์์ ๊ตฌ์ถํ ์ ์๋ OAuth ํด๋ผ์ด์ธํธ๊ฐ ๊ณ์ ์ฑ์ ์ถ๊ฐํ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉ์๋ฅผ ๋์ดํ ์ ์์ต๋๊น?
๋ฌธ์ ๋ ๊ทธ ๋ฐ๋์ ๋๋ค. ์ก์ธ์ค ํ ํฐ์ ๊ฐ์ ธ์์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ณ์ ์ฑ์ ๋ํด ์ํ๋ ๊ธฐ๋ฅ์ผ๋ก ํ์ฌ OAuth ์ฑ์ ๋จ์ํ ํ์ฅํ ์ ์์ต๋๋ค. ๋ญ๊ณ ๊ธฐ์ ๊ณ๋์ ๋ฌธ์ ์ ๋๋ค. ๊ณ์ ์ฑ ๊ธฐ๋ฅ(์ธ์ , ๊ถํ ๋ถ์ฌ ๋ฑ)์ ๋ํ ๋ค๋ฅธ ์ธ์ฆ ์๋จ์ด ์๋ ๊ฒฝ์ฐ(์: OAuth ์ฑ์ ์๋ ์ธ์ ์ฟ ํค๋ฅผ ํตํด) ๋ค๋ฅผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ด๊ฐ ๋ณผ ๋ ์ด๊ฒ์ ์คํ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
OAuth ์ฑ์ ๋ ๋ฆฝ ์คํํ์ธ๊ฐ์? OAuth ํด๋ผ์ด์ธํธ์ ๋ํ ๋ฆฌ๋๋ ์ ํ๋ฆ์ ๊ตฌํํ๊ณ ์์ต๋๊น? ์๋๋ฉด OAuth ํด๋ผ์ด์ธํธ ์์ฒด์ ๋๊น?
๊ฐ์กฐ ๊ด์ฐ:
๋ด ์์ด๋์ด๋ ์๋ก์ด OAuth ํด๋ผ์ด์ธํธ (
account
)์ ํ๋ก ํธ์๋ ๋ฐฉ์์ ๋์ ํ์ฌ ํ์ฌ OAuth ์ฑ ๊ณผ ๊ธฐ๋ฅ์ ํผํฉํ๋ ๊ฒ์ด์์ต๋๋ค. ์ฌ์ฉ์์ ๊ฒฝ์ฐ OAuth ์ ๊ณต์ (๋ก๊ทธ์ธ, ๋ฑ๋ก, ๊ณ์ ํ์ธ ๋ฑ)์ ๊ณ์ ์ฑ ํด๋ผ์ด์ธํธ (ํ๋กํ ์ค์ , ์ธ์ ๊ด๋ฆฌ, ๊ถํ ๊ด๋ฆฌ)๊ฐ ํ๋์ ๋์ผํ ์ ํ๋ฆฌ์ผ์ด์ ์ธ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ๋ฐฑ๊ทธ๋ผ์ด๋์์๋ OAuth ๊ณต๊ธ์ ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ๊ธฐ์ ์ ์ธ ๋ถ๋ฆฌ์ ๋๋ค. ๋ฐฑ์๋ ์์ ๊ณ์ ํด๋ผ์ด์ธํธ ๋oauth
ํจํค์ง ์ ์ผ๋ถ๊ฐ
๋๋ ์ฌ๊ธฐ๋ฅผ ๋ณธ๋ค;
oauth
ํจํค์ง๋๋ ์ ์์ ์ดํดํ๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์์ง๋ง ์ฌ์ ํ ๋ฌด์์ธ์ง ์์ ํ ์ดํดํ์ง ๋ชปํฉ๋๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ธฐ๋ฅ์ ๋ฌด์์ ๋๊น?
์ธ์ ์ธ์ฆ์ผ๋ก ๊ฐ๋ฉด OAuth๋ฅผ ์ ํ ๊ฑด๋๋ฆฌ์ง ์๊ณ 1-6์ ๊ตฌํํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๊ฒ ๊ฐ๋ฅํ์ง, ๊ทธ๋ ์ง?
๋ค ์ฃ์กํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ง์ ๊ฒ์ ์ค๋ช ํ๊ธฐ ์ด๋ ค์ด ๊ณ ์ ๋์ง ์์ ์ฉ์ด๊ฐ ์์ต๋๋ค. ์ ์ด๋ ๋ฌธ์ ์ ๋ณต์ก์ฑ์ ๋ํ ์ข์ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํฉ๋๋ค ๐ .
ํ์ฌ ์ํ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
OAuth ์ ๊ณต์
OAuth 2.0 ์ฌ์์ ๋ฐ๋ผ ๊ถํ ๋ถ์ฌ(์ด ๊ฒฝ์ฐ ์ธ์ฆ๋ ์ ๊ณต)๋ฅผ ์ ๊ณตํ๋ ์ํฐํฐ์
๋๋ค. ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ pkg/oauth
ํจํค์ง๋ก, OAuth ์ฑ(์๋ ์ฐธ์กฐ)์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ ๋ณด(๋ ๋ ๋ก๊ทธ์ธ, ๋ฑ๋ก, ์น์ธ ๋ณด๊ธฐ ๋ฑ)๋ฅผ ์ป๊ธฐ ์ํด ํ์ํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํฉ๋๋ค.
OAuth ์ฑ
์ด๊ฒ์ ํ๋ก ํธ์๋์ ๋ฐ์ ์น ์ ํ๋ฆฌ์ผ์ด์
์
๋๋ค. ํ๋ก ํธ์๋ ์ฝ๋๋ ๋ฐ์ ๊ตฌ์ฑ ์์ ๋ฐ ์ ํธ๋ฆฌํฐ์ ๊ฐ์ ๊ณตํต ๋ถ๋ถ์ ๊ณต์ ํ๋ ๋ค๋ฅธ ์ฑ(๋ค๋ฅธ ์ง์
์ oauth.js
/ console.js
)์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
OAuth ํด๋ผ์ด์ธํธ
์ฝ์ ๋๋ CLI์ ๊ฐ์ด ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ๋ฅผ ์ํด OAuth๋ฅผ ์ฌ์ฉํ๋ ๋ฑ๋ก๋ ํด๋ผ์ด์ธํธ์
๋๋ค.
์ธ์ฆ ํจํค์ง
OAuth ๊ณต๊ธ์ ๊ตฌํ์ ๋ด๋นํ๋ Go ํจํค์ง์
๋๋ค. pkg/oauth
์
๋๋ค.
๋ณด์๋ค์ํผ ์ฌ๊ธฐ์๋ 3~4๊ฐ์ ์๋ก ๋ค๋ฅธ ๋ ์ด์ด๊ฐ ์์ต๋๋ค. ๋ฌธ์ ๋ ์ฐ๋ฆฌ๊ฐ ํ์ฌ ์น์ธ์ ํ๋ ๋ฐฉ์์ ์ ์งํ๋ค๋ฉด ์์์ ์ค๋ช ํ ๋ชจ๋ ์ญํ ์ ๋์์ ์ํํ๋ ๋ฌด์ธ๊ฐ๊ฐ ํ์ํ๋ค๋ ๊ฒ์ ๋๋ค.
์ธ์ ์ธ์ฆ์ผ๋ก ๊ฐ๋ฉด OAuth๋ฅผ ์ ํ ๊ฑด๋๋ฆฌ์ง ์๊ณ 1-6์ ๊ตฌํํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๊ฒ ๊ฐ๋ฅํ์ง, ๊ทธ๋ ์ง?
์. 1-4๋ ์ด๋ฏธ oauth / ์ก์ธ์ค ํ ํฐ ์์ด ๊ฐ๋ฅํฉ๋๋ค. 5์ 6์ ํ์ฌ ์ก์ธ์ค ํ ํฐ์ด ํ์ํฉ๋๋ค. 7. ii๋ ์์ง ๊ตฌํ๋์ง ์์์ต๋๋ค. ์ก์ธ์ค ํ ํฐ ์์ด 5์ 6์ด ๊ฐ๋ฅํ๋ค๋ฉด ์ค์ ๋ก ์ด๋ฅผ ์ํํ๊ธฐ ์ํด ๋ค๋ฅธ oauth ํด๋ผ์ด์ธํธ๊ฐ ํ์ํ์ง ์์ต๋๋ค. ์ฌ์ ํ ์ฐ๋ฆฌ๋ ๋ฏธ๋์ ๊ณ์ ์ฑ์ ์ถ๊ฐํ๋ ค๋ ๋ชจ๋ ๊ธฐ๋ฅ์ด ์ก์ธ์ค ํ ํฐ์ ์ ์ผํ ์น์ธ ์๋จ์ผ๋ก ์ฌ์ฉํด์๋ ์ ๋๋ค๋ ์ ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
์ก์ธ์ค ํ ํฐ ์์ด 5์ 6์ด ๊ฐ๋ฅํ๋ค๋ฉด ์ค์ ๋ก ์ด๋ฅผ ์ํํ๊ธฐ ์ํด ๋ค๋ฅธ oauth ํด๋ผ์ด์ธํธ๊ฐ ํ์ํ์ง ์์ต๋๋ค. ์ฌ์ ํ ์ฐ๋ฆฌ๋ ๋ฏธ๋์ ๊ณ์ ์ฑ์ ์ถ๊ฐํ๋ ค๋ ๋ชจ๋ ๊ธฐ๋ฅ์ด ์ก์ธ์ค ํ ํฐ์ ์ ์ผํ ์น์ธ ์๋จ์ผ๋ก ์ฌ์ฉํด์๋ ์ ๋๋ค๋ ์ ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
์ค๋ฅธ์ชฝ. ์ด๊ฒ์ ๋์๊ฒ ๋ง์ ์๋ฏธ๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ ๋ํ ์ฌ์ฉ์๊ฐ ์๋ฅผ ๋ค์ด ๋น๋ฐ๋ฒํธ๋ฅผ ๋ค์ ์ ๋ ฅํ ํ ๊ณ์ ์ฑ์์ _only_ ์์ ์ ์ํํ ์ ์๋ "sudo ๋ชจ๋"๋ฅผ ์ํ ๋ ๋์ ๊ธฐ๋ฐ์ ๋๋ค. ์, OAuth ํด๋ผ์ด์ธํธ์ ๊ณ์ ์ฑ์ด ํ ์ ์๋ ์ผ ์ฌ์ด์ ์ฝ๊ฐ์ ๊ฒน์นจ์ด ์์ ์ ์์ง๋ง ๊ทธ ๊ฒน์นจ์ ํฌ๊ฒ ๋๊ปด์ง์ง ์์ต๋๋ค. ๊ณ์ ์ฑ ์ ์ฉ์ผ๋ก ์ ์งํ๋ ๊ฒ์ด ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์๊ฒ ์ต๋๋ค. ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
@htdvisser ์ด์๊ฐ ์์ผ์ ๊ฐ์? ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ๊ถํ ๋ถ์ฌ๋ฅผ ์ํด ๊ด๋ จ ํ์ผ/ํจํค์ง๋ฅผ ์๋ ค์ค ์ ์์ต๋๊น? ์๋ํ๋ฉด ๊ณง ์ด ์์
์ ํ ์๊ฐ์ด ์์ ๊ฒ ๊ฐ๊ธฐ ๋๋ฌธ์
๋๋ค(?).
์ด์ ์ ์ธ๊ธํ๋ฏ์ด /api/v3/*
์๋ํฌ์ธํธ๋ CORS๊ฐ ํ์ฑํ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ฟ ํค ์ธ์ฆ์ ํ์ฉํ์ง ์์ต๋๋ค. ์ฟ ํค ์ธ์ฆ ์๋ฝ์ ์์ํ๋ ค๋ฉด CORS ํค๋๋ฅผ ์ ์ดํด๋ด์ผ ํฉ๋๋ค. ์๋ํ๋ฉด ๊ณต๊ฒฉ์๊ฐ ์ด๋ฌํ ๋์ ์ ๋ํด ์ฟ ํค ์ธ์ฆ ๊ต์ฐจ ์ถ์ฒ ์์ฒญ์ ํ๋ ๊ฒ์ ์ ๋ง๋ก ์ํ์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค.
API๋ ๋ชจ๋ gRPC์ด๋ฉฐ ์ธ์ฆ์ ์์ฒญ ๋ฉํ๋ฐ์ดํฐ๋ก gRPC์ ์ ํ๋๋ Authorization
ํค๋๋ก ์ํ๋ฉ๋๋ค. ์ธ์
์ธ์ฆ ๊ตฌํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
pkg/auth/auth.go
SessionToken
์ ํ ์ถ๊ฐSession
๋ชจ๋ธ์ ๋น๋ฐ ๋ถ๋ถ์ ์ถ๊ฐํฉ๋๋ค.Authorization
ํค๋์ SessionToken์ผ๋ก ์ ๋ฌํ๋ ๋ฏธ๋ค์จ์ด๋ฅผ ์ถ๊ฐํฉ๋๋ค.SessionToken
๋ก case
๋ก switch tokenType {
์์ pkg/identityserver/entity_access.go
์ฌ๊ธฐ์ ๊ณ ๋ คํด์ผ ํ ํ ๊ฐ์ง๋ ๊ณ์ ์ฑ๊ณผ v3 API๊ฐ ๋์ผํ ์ถ์ฒ์์ ์ ๊ณต๋์ด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ธ์ฆ ์ปจํ
์คํธ๊ฐ ๋ค๋ฅธ ์ถ์ฒ๋ฅผ ํฌํจํ๋ฏ๋ก ์ฟ ํค ์ธ์ฆ์ด ์๋ํ์ง ์์ต๋๋ค.
๊ทธ๊ฒ์ด ์ผ๋ง๋ ์์ฉ ๊ฐ๋ฅํ์ง ํ์คํ์ง ์์ต๋๋ค. ์ ์ด๋ ์ค์ ๋ก๋ ๋ฐฐํฌ์์ ๋์ผํ ์ถ์ฒ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์, ๋์ผํ ์ถ์ฒ์ ์์ ๊ฒ์ ๋๋ค.
@kschiffer ์ฌ๊ธฐ์์ ์งํ ์ํฉ์ ์ฐจ๋จ ํด์ ํ๋ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ์ญ์์ค.
์ฌ๊ธฐ์ ์์ฝ์ ์์ฑํ์ต๋๋ค: https://github.com/TheThingsNetwork/lorawan-stack/pull/2850#issuecomment -657497193
์ข์, ์ฌ๊ธฐ์ ๋ํ๋ฅผ ๊ณ์ํ์.
@kschiffer ์ ์ ์์ ํ ํ:
- oauth ์ฑ์ ํ๋ก ํธ์๋ ๋ถ๋ถ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ์ฆ ํ๋ฉด์ผ๋ก๋ง ๊ตฌ์ฑ๋ฉ๋๋ค.
๋ค
- ๋๋ ๊ทธ๊ฒ์ ์ํด
is.oauth.ui.*
๊ตฌ์ฑ์ ์ ์งํด์ผ ํ๋ ๊ฒ์ด ๋งค์ฐ ์ฑ๊ฐ์ ์ผ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
[...]- ๋๋ ๋ํ CC๋ฅผ ๊นจ๋จ๋ฆฌ์ง ์๊ณ ์คํ ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ํํ ์ ํ ์ฌํญ์ ๋ํด ์ฝ๊ฐ ํ์ ์ด ์์ง ์์ต๋๋ค.
- ๋๋ ์ฌ๊ธฐ์์ ์คํ ๊ฐ๋ฅํ ์๋ฃจ์ ์ ์ฐพ๋ ๋ฐ ์ฝ๊ฐ ์ด์ด ์์ผ๋ฉฐ ์ค์ ๋ก ์ฝ๊ฐ์ ์ ๋ ฅ์ด ํ์ํฉ๋๋ค.
V3์์ ๊ตฌ์ฑ์ ์ค๋จํ ์๋ ์์ง๋ง ์ ๊ตฌ์ฑ์ ๋์
ํ๊ณ ์ด์ ๊ตฌ์ฑ์ ๋ ์ด์ ์ฌ์ฉํ์ง ์์ผ๋ฉฐ ์ด์ ๊ตฌ์ฑ์ ๋์ฒด๋ก ์ฌ์ฉํ๊ณ bump/major
๋ ์ด๋ธ์ด ์ง์ ๋ TODO ๋ฌธ์ ๋ฅผ ์ ์ถํ์ฌ ์ด์ ๊ตฌ์ฑ์ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ ์ ์์ ์์ ํ ๋์ฒด๋๊ณ ์ ๊ณ์ ์ฑ์ ํ์ฑํํ๋ ์๋ก์ด ๊ตฌ์ฑ์ ๋์
ํ๋ ๊ฒ์
๋๋ค. ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์ํด ์ฌ์ฉ์๊ฐ ์ด ์ ๊ตฌ์ฑ์ ์ง์ ํ์ง ์๊ณ ๋ ์๋ํด์ผ ํฉ๋๋ค. ์ฆ, ์ ์์ ์ธ ๊ธฐ๋ณธ๊ฐ๊ณผ is.oauth.ui.*
๋ฅผ ํตํ ์ด์ ๊ตฌ์ฑ์ ์์กดํฉ๋๋ค.
@kschiffer ์ฌ๊ธฐ ์ํ๋ ๋ฌด์์ ๋๊น?
ํ์ฌ ์ฌ๊ธฐ์์ ์งํ ์ค์ธ ์ ๋น๊ณ์ ๋ํ ๋ด ์์ ์ ๋ค์ ๊ธฐ๋ฐ์ผ๋ก ํ๊ณ ์์ต๋๋ค. #3453
๋ค์์ ์ธ์ฆ๋ ๋ทฐ๋ฅผ ๋ฆฌ๋ฒ ์ด์ค, ์์ ๋ฐ PR๋งํ๊ณ ํ์ฌ ๋์์ธ์ ์ ๋ธ๋๋ฉ์ผ๋ก ์กฐ์ ํ๋ ๊ฒ์ ๋๋ค.
@kschiffer ์ฌ๊ธฐ ์ํ๋ ๋ฌด์์ ๋๊น?
๊ณ์ ์ฑ์ 3.11์์ ๋์ ๋์์ต๋๋ค. ํ์ฌ ์์ง ๋๋ฝ๋ ํญ๋ชฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํ์ธ. https://github.com/TheThingsNetwork/lorawan-stack/issues/488 ์ด ์ด๋ฏธ ๋ซํ ๊ฒ ๊ฐ์ต๋๋ค.
์ด๊ฒ์ ํฐ ๋ฌธ์ ๊ฐ ๋์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ๋์ฒดํ๊ธฐ ์ํด ์์ ๋ํ ํ๋ ๋๋ ๋ ๊ฐ์ ์๋ก์ด ๋ฌธ์ ๋ฅผ ์ ์ถํ์ฌ ๋ซ์ ์ ์์ต๋๊น?