์ธ์ฆ ์ด ์ •๋ฆฌ :: 2. ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ์˜ ๋‹ค์–‘ํ•œ ์ธ์ฆ (feat. SAML, OAuth 2.0)
์›น (WEB)/๊ณต๋ถ€ 2022. 3. 15. 22:10

SAML ์ธ์ฆ SAML์€ XML ๊ธฐ๋ฐ˜์˜ ํ‘œ์ค€ ๋ฐ์ดํ„ฐ ํฌ๋งท์ž…๋‹ˆ๋‹ค. ์ธ์ฆ ์ •๋ณด๋ฅผ XML ํฌ๋งท์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ  ์•”ํ˜ธํ™”ํ•œ ๊ฒƒ์ด Assertion์ธ๋ฐ ์ด๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค. User, IDP(Identity Provider), SP(Service Provider) ๊ฐ€ ์กด์žฌํ•˜๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ธ์ฆ์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. (๊ทธ๋ฆผ) User๊ฐ€ SP๋กœ ์„œ๋น„์Šค๋ฅผ ์š”์ฒญํ•˜๋ฉด SP๋Š” ์ธ์ฆ๋œ User์ธ์ง€ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ๋˜์ง€ ์•Š์•˜์œผ๋ฉด ์ธ์ฆ ์š”์ฒญ(SAMLRequest)์„ ์ƒ์„ฑํ•˜์—ฌ User์—๊ฒŒ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. SAMLRequest์— ์˜ํ•ด User๋Š” IDP๋กœ redirect๋˜๊ณ  ๋กœ๊ทธ์ธ์„ ํ†ตํ•ด ์ธ์ฆ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์— ์„ฑ๊ณตํ•˜๋ฉด IDP๋Š” SAMLAssertion์ด ํฌํ•จ๋œ SAMLResponse๋ฅผ User์— ๋‚ด๋ ค์ค๋‹ˆ๋‹ค. โ†’ ๊ทธ ๊ณผ์ •์—์„œ IDP๊ฐ€ ์„ค์ •ํ•œ Ses..

์ธ์ฆ ์ด ์ •๋ฆฌ :: 1. ๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๋Š” Auth Flow Best Case (feat. OpenIDC)
์›น (WEB)/๊ณต๋ถ€ 2022. 3. 15. 21:59

์ธ์ฆ Best Case ๊ธฐ๋ณธ flow (OpenIDC) Best Case๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ธ์ฆ flow(OpenIDC)๋ฅผ ๋จผ์ € ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋จผ์ €, Auth Service๊ฐ€ ํƒ€ ์„œ๋น„์Šค๊ฐ€ ์•„๋‹Œ ์ž์‚ฌ์˜ ์„œ๋น„์Šค์ผ ๋•Œ๋Š” OAuth ๊ธฐ๋ฐ˜์˜ flow๊ฐ€ ํ•„์š”์—†์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์ด ๊ทธ๋ ค์ง‘๋‹ˆ๋‹ค. (ํƒ€ ์„œ๋น„์Šค์ผ ๊ฒฝ์šฐ OAuth ๋ณด๊ธฐ) Client๊ฐ€ id(username)์™€ password๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ ์š”์ฒญ์€ BFF โ†’ Server โ†’ Auth Service๋กœ ์ „ํ•ด์ง‘๋‹ˆ๋‹ค. ์ „๋‹ฌ๋œ id์™€ password๋กœ Auth Service์—์„œ ์ธ์ฆํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์— ์„ฑ๊ณตํ•˜๋ฉด access token, refresh token, id token ๋ฅผ Server๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. Server๋Š” id token ์„ d..

์ธ์ฆ ๋ฐฉ์‹ :: ๊ธฐ๋ณธ ์ธ์ฆ ์›๋ฆฌ๋ถ€ํ„ฐ MSA ์ธ์ฆ๊นŒ์ง€
์›น (WEB)/๊ณต๋ถ€ 2021. 7. 22. 08:54

์ธ์ฆ ๋ฐฉ์‹ 1. API key๋ฅผ ํ†ตํ•œ ์ธ์ฆ ๊ณผ์ • user๊ฐ€ login ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค. Client๋Š” ์ด๋ฏธ Server์— ๋“ฑ๋กํ•œ API key๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. Client๋Š” user๊ฐ€ ์ž…๋ ฅํ•œ Login ์ •๋ณด๋ฅผ ๋ฐ›์•„์„œ API key์™€ ํ•จ๊ป˜ Login API๋ฅผ ์š”์ฒญํ•œ๋‹ค. Server๋Š” API key๋ฅผ ํ†ตํ•ด ํ•ด๋‹น Client๊ฐ€ ๋“ฑ๋ก๋˜์–ด์žˆ๋Š” ์ง€๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค. Sever๋Š” Login ์ •๋ณด๋ฅผ ํ†ตํ•ด ํ•ด๋‹น User๊ฐ€ API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ง€๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค. ๋‹จ์  API key๋Š” ๋ชจ๋“  Client๋“ค์ด ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋…ธ์ถœ๋˜๋ฉด ์ „์ฒด API๊ฐ€ ๋…ธ์ถœ๋œ๋‹ค. API key๋Š” ์‹œ๊ฐ„์ด ๋ฌด์ œํ•œ์ด๊ณ  ํ•œ ๋ฒˆ ๋…ธ์ถœ๋˜๋ฉด API key ๋ณ€๊ฒฝ ์ „๊นŒ์ง€ ๊ณ„์† ๋…ธ์ถœ๋œ๋‹ค. 2. API Token์„ ํ†ตํ•œ ์ธ์ฆ ๊ณผ์ • user๊ฐ€ login ์ •๋ณด๋ฅผ ์ž…..

Token ์ €์žฅ ์œ„์น˜
์›น (WEB)/๊ณต๋ถ€ 2021. 7. 22. 08:34

token์€ cookie์— ์ €์žฅํ•  ์ˆ˜๋„, Web Storage์— ์ €์žฅํ•  ์ˆ˜๋„, Client ์ž์ฒด์— ์ €์žฅํ•  ์ˆ˜๋„ ์žˆ๋‹ค. Cookie ์ฟ ํ‚ค๋Š” ์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ๋Œ€ 4KB๊นŒ์ง€ ์ €์žฅ ๊ฐ€๋Šฅํ•˜๋‹ค. ํด๋ผ์ด์–ธํŠธ์—์„œ Credential ์†์„ฑ์œผ๋กœ ํ—ˆ์šฉํ•˜๋ฉด ์„œ๋ฒ„์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค. HTTP Request ์‹œ ์ž๋™์œผ๋กœ ํฌํ•จ๋˜์–ด ์„œ๋ฒ„์— ์ฟ ํ‚ค ์ •๋ณด๋ฅผ ์ œ๊ณต ๊ฐ€๋Šฅํ•˜๋‹ค. HttpOnly ์„ค์ •์„ ์ด์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ œ์–ดํ•  ์ˆ˜ ์—†๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. Web Storage Session Storage ์„œ๋ฒ„์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. ์„ธ์…˜์ด ์ข…๋ฃŒ๋˜๋ฉด ๋ชจ๋‘ ์‚ญ์ œ ๋œ๋‹ค. 5~10MB์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ–๋Š”๋‹ค. Local Storage ์„œ๋ฒ„์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. ๋ฐ˜ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. 5~10MB์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ–๋Š”๋‹ค. Client Side ํด๋ผ์ด์–ธํŠธ ..

[eslint] Error: Unexpected token 'export'
์›น (WEB)/์—๋Ÿฌํ•ด๊ฒฐ 2020. 11. 21. 21:46

์ฐธ๊ณ  : https://hoilzz.github.io/webpack/11-eslint-prettier/ eslint์˜ parser๊ฐ€ ๊ณต์‹์ ์œผ๋กœ ES ํ‘œ์ค€๋งŒ์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ES6~7 ํŒŒ์‹ฑ ์‹œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค. ๋”ฐ๋ผ์„œ, .eslintrc.js ํŒŒ์ผ์˜ export default๋ฅผ module.export๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ export๋Š” ES6 syntax์ด๊ณ , module export๋Š” commonJS syntax์ด๋‹ค. babel-eslint ์„ค์น˜ ํ›„ .eslintrc.js์— "parser": "babel-eslint",์ถ”๊ฐ€ํ•˜๊ธฐ ๋‘ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.