์ธ์ฆ ์ด ์ •๋ฆฌ :: 3. SSO ์ธ์ฆ ๋ฐ ์ด ์ •๋ฆฌ
์›น (WEB)/๊ณต๋ถ€ 2022. 3. 15. 22:17

SSO SSO(Single Sign On)๋Š” ํ•œ ๋ฒˆ์˜ ๋กœ๊ทธ์ธ์œผ๋กœ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํ†ตํ•ฉ ์ธ์ฆ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค์˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ ๋•Œ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด SSO๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. SSO๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‘ ๊ฐ€์ง€ ํŒจํ„ด์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1. ์ธ์ฆ gateway ๋ฐฉ์‹ ๊ฐ ์„œ๋น„์Šค์— ์ ‘๊ทผํ•  ๋•Œ ์ด์ „ ๋ ˆ์ด์–ด์— ํ†ตํ•ฉ ์ธ์ฆ ์„œ๋น„์Šค๊ฐ€ ์กด์žฌํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. User๋Š” SessionID๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ํ†ตํ•ฉ ์ธ์ฆ ์„œ๋น„์Šค๋ฅผ ํ†ต๊ณผํ•˜๋ฉด ํ•ด๋‹น ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์˜ ๋‹จ์ ์€ ๊ฐ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ๋•Œ๋งˆ๋‹ค ์ธ์ฆ ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•˜๋ฉฐ ์ธ์ฆ ์„œ๋น„์Šค ์ž์ฒด๊ฐ€ bottle neck์ด ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 2. ์ธ์ฆ ํ† ํฐ ๋ฐœ๊ธ‰ ๋ฐฉ์‹ ์œ ์ €๋Š” ์šฐ์„  ํ†ตํ•ฉ ์ธ์ฆ ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ํ† ํฐ์ด๋ผ๋Š” ์ธ์ฆ ๋Œ€ํ–‰ ๋งค์ฒด..

์ธ์ฆ ์ด ์ •๋ฆฌ :: 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..

[Next JS] Anchoring issue :: SWR / react-query ์‚ฌ์šฉ ์‹œ ์ฃผ์˜ํ•  ์ 
์›น (WEB)/์—๋Ÿฌํ•ด๊ฒฐ 2022. 2. 20. 15:39

์˜ค๋Š˜์€ Next JS์—์„œ Client Data fetching ์‚ฌ์šฉ ์‹œ ๋งˆ์ฃผํ•  ์ˆ˜ ์žˆ๋Š” Anchoring ์ด์Šˆ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. Next JS docs์—์„œ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ๋Š” ์ฝ”๋“œ ์Šคํƒ€์ผ์„ ์ ์šฉํ–ˆ์„ ๋•Œ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š” ์ด์Šˆ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๊ด€๋ จ ์ด์Šˆ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ์ €๋Š” ๋””๋ฒ„๊น…์— ์‹œ๊ฐ„์„ ๊ฝค๋‚˜ ์ผ์Šต๋‹ˆ๋‹ค. ๋จผ์ € Next JS์˜ Data fetching์— ๋Œ€ํ•œ ์ง€์‹์ด ์ „๋ฌดํ•  ๋ถ„๋“ค์„ ์œ„ํ•ด ๊ฐœ๋…๋ถ€ํ„ฐ ์ •๋ฆฌํ•˜๊ณ  ์ด์Šˆ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๊ณผ์ •์„ ์ฐจ๋ก€๋กœ ์ ์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Data fetching Next JS๋ฅผ ์ด์šฉํ•œ Data fetching์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•ด์ฃผ์„ธ์š”! getStaticProps / getServerSideProps : Server Side์—์„œ ๋ฏธ๋ฆฌ page h..

๋‹ค์–‘ํ•œ Sticky ์ŠคํŽ™์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• (vanila js)
์›น (WEB)/๊ณต๋ถ€ 2022. 2. 2. 16:15

Sticky ์ŠคํŽ™์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ŠคํŽ™์— ํ•„์š”ํ•œ ์กฐ๊ฑด์„ ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•ด๊ฐ€๋ฉด์„œ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ง€๋ฅผ ๊ณ ๋ฏผํ•ด๋ณด์ž. css์˜ poistion: sticky; ๋ฅผ ์ด์šฉํ•˜์ž. ์šฐ์„  Sticky๋˜์–ด์•ผ ํ•˜๋Š” Element๊ฐ€ ์ตœ์ƒ๋‹จ์— ์œ„์น˜ํ•ด์žˆ๋‹ค๋ฉด ์‰ฝ๋‹ค. css๋ฅผ ์ด์šฉํ•˜๋ฉด position: relative; ์ธ ๋ถ€๋ชจ์˜ ์ƒ๋‹จ์— ํ•ด๋‹น Element๊ฐ€ sticky๋œ๋‹ค. .sticky{ position: sticky; top: 0; } https://codepen.io/bucketressi/pen/GROoeKE Sticky-1 ... codepen.io sticky container๋ฅผ ๋งŒ๋“ค์ž. ์ด๋ฒˆ์—๋Š” sticky header(์ฒซ๋ฒˆ์งธ Sticky Element) ์•„๋ž˜์— sticky sub-header๊ฐ€ ์œ„์น˜ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž...

React ๊ณต์‹ ๋ฌธ์„œ ๋‹ค์‹œ ์ฝ๊ธฐ (1. Main concepts)
์›น (WEB)/๊ณต๋ถ€ 2022. 1. 31. 20:43

Main Concepts ์ฒ˜์Œ React๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ๊ฑฐ์˜ ์ดํ•ด ๋ชปํ•˜๊ณ  practice ์ •๋„๋งŒ ์ฐธ์กฐํ–ˆ์„ ๋“ฏ ์‹ถ์–ด์„œ ๋‹ค์‹œ ์ฝ์–ด๋ณด์•˜๋‹ค. ๊ฐœ๋…์„ ์ด๋ฒˆ์— ๋ช…ํ™•ํžˆ ํ–ˆ๋‹ค๊ฑฐ๋‚˜ ์ฒ˜์Œ ๋“ค์–ด๋ณธ ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ•ด๋ณด์•˜๋Š”๋ฐ, Main concept์—์„œ๋„ ๊ฝค๋‚˜ ๋งŽ์•˜๋‹ค. ์ด๋ฒˆ ๊ธฐํšŒ๋กœ ํ•ด๋‹น ์ •๋ฆฌ ๊ธ€์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ณด๋„๋ก ํ•ด์•ผ๊ฒ ๋‹ค ๐Ÿ˜Š Introducing JSX React๋Š” ๊ธฐ์กด์— html, js ์™€ ๊ฐ™์ด ๊ธฐ๋Šฅ ๋ณ„๋กœ ๋ฌธ์„œ๋ฅผ ๋‚˜๋ˆ„๋˜ ๋ฐ์—์„œ ํ•œ ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„๊ฒŒ ํ•จ์œผ๋กœ์จ js, html(jsx), css๋ฅผ ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์˜€๋‹ค. JSX์˜ ๋‚ด๋ถ€์˜ ๋ณ€์ˆ˜๋“ค์€ ๋ Œ๋” ์‹œ์ ์— ์ด๋ฏธ ๋ฌธ์ž์—ด๋กœ ๋ณ€๊ฒฝ ๋˜๋ฏ€๋กœ XSS ๊ณต๊ฒฉ์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค. Rendering Elements React๋กœ ๋งŒ๋“ค์–ด์ง„ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํ•˜๋‚˜์˜ root DOM ๋…ธ๋“œ๋ฅผ ..

Android์˜ ๋„ค์ด๋ฒ„ ์•ฑ์—์„œ ๋ ˆ์ด์•„์›ƒ ๊นจ์งˆ ๋•Œ (flex-shrink ๋ฏธ์ง€์›)
์›น (WEB)/์—๋Ÿฌํ•ด๊ฒฐ 2022. 1. 23. 11:54

๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์•ˆ๋“œ๋กœ์ด๋“œ OS์—์„œ ๋„ค์ด๋ฒ„ ์•ฑ์„ ์‚ฌ์šฉํ•  ๋•Œ (ํŠน์ • ์•ˆ๋“œ๋กœ์ด๋“œ ๋ฒ„์ „ - ์•„๋งˆ๋„ 11 ์ด์ƒ ์—์„œ๋งŒ) flex ๋ ˆ์ด์•„์›ƒ์ด ๊นจ์ง€๋Š” ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค. css๋ฅผ ๋‹ค๋ฐฉ๋ฉด์œผ๋กœ ๊ณ ์ณ๋ณด๋ฉด์„œ ํ•ด๊ฒฐํ•ด๋ณด์•˜๋Š”๋ฐ, ์›์ธ์€ 'flex-shrink๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ'์ด์—ˆ๋‹ค. (caniuse) ๋ฐ˜์‘ํ˜• ์›น์„ ๊ตฌ์ถ•ํ•  ๊ฒฝ์šฐ ํ•ด๋‹น ์‚ฌ๋ก€๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด css ์ฝ”๋“œ์— flex-shrink ์‚ฌ์šฉ์„ ์ง€์–‘ํ•˜๋„๋ก ํ•˜์ž.

Open Graph ์ดํ•ดํ•˜๊ณ  ์ ์šฉํ•˜๊ธฐ (feat. ์นด์นด์˜คํ†ก์—์„œ ๋ณ€๊ฒฝ์ด ์ ์šฉ๋˜์ง€ ์•Š์„ ๋•Œ)
์›น (WEB)/๊ณต๋ถ€ 2022. 1. 9. 11:47

Open Graph๋ž€? ์–ด๋–ค ์›นํŽ˜์ด์ง€๋“  social graph์˜ ์ผ๋ถ€๋ถ„์ด ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. Metadata og:title : url ๊ณต์œ  ์‹œ ์ œ๋ชฉ์œผ๋กœ ๋“ค์–ด๊ฐ€๋Š” ์˜์—ญ์ด๋‹ค. (์นด์นด์˜คํ†ก ๊ณต์œ ๋Š” title๋งŒ ๊ณต์œ ๋œ๋‹ค.) og:type : object์˜ type์ด๋‹ค. (ex_ video.movie, website) og:image : url ๊ณต์œ  ์‹œ ๋‚˜ํƒ€๋‚˜๋Š” ์ด๋ฏธ์ง€์ด๋‹ค. og:url : graph์—์„œ id๋กœ ์“ฐ์ด๋Š” url์ด๋‹ค. og:audio, og:video : audio, video ํŒŒ์ผ์˜ url์ด๋‹ค. og:description: object์— ๊ด€ํ•œ ์„ค๋ช…์ด๋‹ค.์นด์นด์˜คํ†ก ๊ณต์œ ์—์„œ๋Š” ํ‘œ์‹œ๋˜์ง€ ์•Š๊ณ  ์Šฌ๋ž™ ๊ณต์œ , ๋ธ”๋กœ๊ทธ์—์„œ๋Š” description๊นŒ์ง€ ํ‘œ์‹œ๋œ๋‹ค. og:site_name : ๋ฐฉ๋Œ€ํ•œ ์›น์‚ฌ์ด..