From 1474399f5cbf0163a4e5ec8b7307801561774d5f Mon Sep 17 00:00:00 2001 From: imnyang Date: Fri, 13 Jun 2025 22:40:07 +0900 Subject: [PATCH] =?UTF-8?q?[Enhancement]=20SSO=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EB=A6=AC=EB=94=94=EB=A0=89=EC=85=98=20URL=20?= =?UTF-8?q?=EC=88=98=EC=A7=91=EC=9D=84=20=EC=9C=84=ED=95=9C=20=ED=94=84?= =?UTF-8?q?=EB=A1=AC=ED=94=84=ED=8A=B8=20=EA=B0=9C=EC=84=A0=20=EB=B0=8F=20?= =?UTF-8?q?=EB=AA=85=ED=99=95=ED=95=9C=20=EC=A7=80=EC=B9=A8=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/prompt/session.py | 106 +++++++++++++++++++++++++----------------- 1 file changed, 64 insertions(+), 42 deletions(-) diff --git a/lib/prompt/session.py b/lib/prompt/session.py index 28a003f..a90d180 100644 --- a/lib/prompt/session.py +++ b/lib/prompt/session.py @@ -3,21 +3,23 @@ extend_planner_system_message = """ ๐ŸŽฏ ๋ชฉ์ : ์›น ์ž๋™ํ™”๋ฅผ ์œ„ํ•œ **SSO ๋กœ๊ทธ์ธ ๋ฆฌ๋””๋ ‰์…˜ URL ์ˆ˜์ง‘** ๐Ÿ“Œ ์ฃผ์˜์‚ฌํ•ญ (์ „์ œ ์กฐ๊ฑด) -- **๊ฒ€์ƒ‰ ์—”์ง„(Google, Bing ๋“ฑ) ์‚ฌ์šฉ ๊ธˆ์ง€.** -- **์ดˆ๊ธฐ ์ œ๊ณต๋œ URL ๋‚ด์—์„œ๋งŒ ํƒ์ƒ‰.** -- **์‹ค์ œ๋กœ ๋กœ๋“œ๋œ URL ์™ธ, ์ง์ ‘ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ์ถ”์ธกํ•œ ๋งํฌ๋Š” ํด๋ฆญ ๊ธˆ์ง€.** -- ์ถ”์ธกํ•œ URL์€ ๋Œ€๋‹ตํ•˜์ง€๋„ ์ง์ ‘ ์ด๋™ํ•˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. +- โŒ **๊ฒ€์ƒ‰ ์—”์ง„(Google, Bing ๋“ฑ) ์‚ฌ์šฉ ๊ธˆ์ง€** +- โœ… **์ดˆ๊ธฐ ์ œ๊ณต๋œ URL ๋‚ด์—์„œ๋งŒ ํƒ์ƒ‰** +- โŒ ์ง์ ‘ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ์ถ”์ธกํ•œ ๋งํฌ ํด๋ฆญ ๊ธˆ์ง€ +- โ›” ์ถ”์ธกํ•œ URL์€ ๋Œ€๋‹ตํ•˜๊ฑฐ๋‚˜ ํด๋ฆญํ•˜์ง€ ๋งˆ์„ธ์š” --- ## ๐Ÿงฉ Step 0: ํŽ˜์ด์ง€ ์ฐจ๋‹จ(Block) ์—ฌ๋ถ€ ํ™•์ธ -- ์ดˆ๊ธฐ์— ์ฃผ์–ด์ง„ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€์— ์ ‘์† ์‹œ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋ฐœ์ƒํ•˜๋ฉด ์ฆ‰์‹œ ์ค‘๋‹จ: - - ํŽ˜์ด์ง€ ์ฐจ๋‹จ๋จ (Firewall, Access Denied ๋“ฑ) - - CAPTCHA๋Š” ์ง์ ‘์ ์œผ๋กœ ์ง„ํ–‰ํ•ด๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. - - ์ •์ƒ์ ์œผ๋กœ ๋กœ๊ทธ์ธ UI๊ฐ€ ๋กœ๋“œ๋˜์ง€ ์•Š์Œ +์ดˆ๊ธฐ URL์˜ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•˜์—ฌ ๋‹ค์Œ ์‚ฌํ•ญ์„ ์ ๊ฒ€ํ•ฉ๋‹ˆ๋‹ค: + +- ๐Ÿšซ ํŽ˜์ด์ง€ ์ฐจ๋‹จ๋จ (Firewall, Access Denied ๋“ฑ) โ†’ ์ฆ‰์‹œ ์ค‘๋‹จ +- ๐Ÿ”’ CAPTCHA๋Š” ํ†ต๊ณผ ๊ฐ€๋Šฅ (ํ•ด๊ฒฐํ•˜๊ณ  ๊ณ„์† ์ง„ํ–‰) +- โ— ๋กœ๊ทธ์ธ UI๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋กœ๋“œ๋˜์ง€ ์•Š์œผ๋ฉด ์ค‘๋‹จ + +๐Ÿ“ค ์ฐจ๋‹จ ์‹œ ์ฆ‰์‹œ ๋ฐ˜ํ™˜: -๐Ÿ”š ์ข…๋ฃŒ ์‹œ ๋ฐ˜ํ™˜: ```json [ { @@ -31,63 +33,82 @@ extend_planner_system_message = """ ## ๐Ÿ” Step 1: ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ํƒ์ƒ‰ -* **์ดˆ๊ธฐ URL์—์„œ ํด๋ผ์ด์–ธํŠธ์šฉ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ์ง์ ‘ ์ด๋™.** -* ์ฟ ํ‚ค/๊ฐœ์ธ์ •๋ณด ํŒ์—… ๋“ฑ์ด ์žˆ์œผ๋ฉด ๋ฌด์‹œํ•˜๊ฑฐ๋‚˜ ๋‹ซ๊ณ  ๊ณ„์† ์ง„ํ–‰. -* ํŽ˜์ด์ง€๊ฐ€ ์ •์ƒ ๋กœ๋“œ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •. +* ์ดˆ๊ธฐ URL์— ์ ‘์†ํ•˜์—ฌ **ํด๋ผ์ด์–ธํŠธ์šฉ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€**๋กœ ์ง„์ž…ํ•ฉ๋‹ˆ๋‹ค. +* ์ฟ ํ‚ค ๋™์˜, ๊ฐœ์ธ์ •๋ณด ์•ˆ๋‚ด ๋“ฑ ํŒ์—…์€ ๋ฌด์‹œํ•˜๊ฑฐ๋‚˜ ๋‹ซ๊ณ  ๊ณ„์† ์ง„ํ–‰ํ•˜์„ธ์š”. +* ํŽ˜์ด์ง€๊ฐ€ ์ •์ƒ ๋กœ๋“œ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. --- ## ๐Ÿ‘€ Step 2: SSO ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ์‹๋ณ„ -* ๋กœ๊ทธ์ธ ํ™”๋ฉด์—์„œ ๋‹ค์Œ **OAuth ๊ธฐ๋ฐ˜ SSO ๋ฒ„ํŠผ**๋“ค์„ ์ฐพ๋Š”๋‹ค: +์•„๋ž˜ **OAuth SSO ๋ฒ„ํŠผ๋“ค๋งŒ** ์œ ํšจํ•ฉ๋‹ˆ๋‹ค: - * Google, GitHub, Facebook, LinkedIn, Microsoft, Naver -* โœ… ์œ ํšจํ•œ ๋ฒ„ํŠผ: **OAuth ์ธ์ฆ ํ๋ฆ„์„ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ์‹ค์ œ ๋ฒ„ํŠผ** -* โŒ ์ œ์™ธ ๋Œ€์ƒ: +* โœ… Google, GitHub, Facebook, LinkedIn, Microsoft, Naver - * Passkey, ํœด๋Œ€ํฐ ์ธ์ฆ, ์ด๋ฉ”์ผ ์ธ์ฆ, ์ธ์ฆ์„œ ๊ธฐ๋ฐ˜, ์ผ๋ฐ˜ ์•„์ด๋””/๋น„๋ฐ€๋ฒˆํ˜ธ ๋กœ๊ทธ์ธ +**์œ ํšจํ•œ ๋ฒ„ํŠผ ๊ธฐ์ค€**: + +* OAuth ์ธ์ฆ ํ๋ฆ„์„ ์‹ค์ œ๋กœ ํŠธ๋ฆฌ๊ฑฐ +* `window.location` ๋˜๋Š” `` ๋˜๋Š” JS๋กœ redirect๊ฐ€ ๋ฐœ์ƒ + +**์ œ์™ธ ๋ฒ„ํŠผ๋“ค (ํด๋ฆญ ๊ธˆ์ง€)**: + +* โŒ ์ผ๋ฐ˜ ๋กœ๊ทธ์ธ, ํŒจ์Šคํ‚ค, ์ด๋ฉ”์ผ/์ „ํ™”๋ฒˆํ˜ธ, ์ธ์ฆ์„œ ๊ธฐ๋ฐ˜, ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ --- -## โœ… Step 3: SSO ๋ฒ„ํŠผ ํด๋ฆญ ๋ฐ ๋กœ๊ทธ์ธ ์‹œ๋„ +## โœ… Step 3: ๋ชจ๋“  SSO ๋ฒ„ํŠผ ํด๋ฆญ ๋ฐ ๋กœ๊ทธ์ธ ์‹œ๋„ -๊ฐ SSO ๋ฒ„ํŠผ์— ๋Œ€ํ•ด ๋‹ค์Œ ์ ˆ์ฐจ๋ฅผ ๋ฐ˜๋ณต: +> ๊ฐ SSO ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ ๋’ค ๋ฐ˜๋“œ์‹œ ์•„๋ž˜ ์ ˆ์ฐจ๋ฅผ **์™„์ „ํžˆ ์ˆ˜ํ–‰**ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. + +๊ฐ SSO ๋ฒ„ํŠผ์— ๋Œ€ํ•ด ๋‹ค์Œ์„ ์ˆ˜ํ–‰: 1. ๋ฒ„ํŠผ ํด๋ฆญ -2. \*\*์ฒ˜์Œ ๋ฆฌ๋””๋ ‰์…˜๋œ URL(์ฟผ๋ฆฌ์ŠคํŠธ๋ง ํฌํ•จ)\*\*์„ ๊ธฐ๋ก โ†’ `oauth_uri` -3. ๊ณต๊ธ‰์ž ํŽ˜์ด์ง€๊ฐ€ ์—ด๋ฆฌ๋ฉด ๋กœ๊ทธ์ธ ์‹œ๋„: +2. ๐ŸŒ ํŽ˜์ด์ง€๊ฐ€ ์ด๋™๋˜๋ฉด, **ํ˜„์žฌ ์ฃผ์†Œ์ฐฝ(URL)์„ ํ™•์ธํ•˜์—ฌ ๋ฆฌ๋””๋ ‰์…˜๋œ OAuth URL**์„ `oauth_uri`๋กœ ์ €์žฅ + โ†’ ์˜ˆ: `https://accounts.google.com/o/oauth2/auth?...` +3. โœ… ๋กœ๊ทธ์ธ ์ง„ํ–‰: + - ์„ธ์…˜ ๋ฐ ์ฟ ํ‚ค์— ๋”ฐ๋ผ ์ด๋ฏธ ๋กœ๊ทธ์ธ๋œ ์ƒํƒœ๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ์ง„ํ–‰ + - **๋กœ๊ทธ์ธ ์™„๋ฃŒ ํ›„ authorize ๋“ฑ ๋ฒ„ํŠผ์ด ์žˆ์œผ๋ฉด ํด๋ฆญ** + - GitHub๊ฐ™์€ ๊ฒฝ์šฐ Authorize ๋ฒ„ํŠผ์ด ๋œจ๋Š”๋ฐ ์˜ค๋ž˜๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Œ, ๊ธฐ๋‹ค๋ ค์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Œ + - ๋งŒ์•ฝ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ๋„ ๋ฐ˜์‘์ด ์—†์„ ๊ฒฝ์šฐ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•œ๋ฒˆ ํ•ด์ฃผ์„ธ์š”. +4. ๋กœ๊ทธ์ธ ์„ฑ๊ณต ์‹œ ์›๋ž˜ ํŽ˜์ด์ง€๋กœ ๋Œ์•„์˜ค๊ณ , ํ•ด๋‹น OAuth URL์€ ๊ฒฐ๊ณผ์— ์ €์žฅ +5. ๋‹ค์Œ SSO ๋ฒ„ํŠผ์œผ๋กœ ๋ฐ˜๋ณต ์ง„ํ–‰ - * ๋ธŒ๋ผ์šฐ์ € ์ฟ ํ‚ค์™€ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€๋Š” ๋กœ๊ทธ์ธ ์ƒํƒœ ์œ ์ง€ ์ค‘ - * ๊ณ„์ • ์ธ์ฆ, ๊ถŒํ•œ ๋ถ€์—ฌ, authorize ๋ฒ„ํŠผ ํด๋ฆญ ๋“ฑ ์ˆ˜ํ–‰ -4. ๋กœ๊ทธ์ธ ์™„๋ฃŒ ํ›„: +๐Ÿ›‘ ์ ˆ๋Œ€ ์•„๋ž˜์™€ ๊ฐ™์ด ํ•ด์„ํ•˜์ง€ ๋ง ๊ฒƒ: +- โŒ ๋ฒ„ํŠผ ํด๋ฆญ ํ›„ ํŽ˜์ด์ง€ ๋กœ๋”ฉ๋งŒ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ๋Œ์•„๊ฐ€๊ธฐ +- โŒ URL ์ €์žฅ ์—†์ด go_back() ํ˜ธ์ถœ - * ์„ธ์…˜/์ฟ ํ‚ค ์‚ญ์ œ - * ํŽ˜์ด์ง€ ์ƒˆ๋กœ๊ณ ์นจ -5. ์•„์ง ๋กœ๊ทธ์ธํ•˜์ง€ ์•Š์€ ๋‹ค๋ฅธ SSO ๋ฒ„ํŠผ์ด ์žˆ๋‹ค๋ฉด **Step 2๋กœ ๋Œ์•„๊ฐ** - -๐Ÿ“ ๊ฒฐ๊ณผ ์ €์žฅ ํ˜•์‹ (์˜ˆ์‹œ): +๐Ÿ“ค ๊ฐ ๋กœ๊ทธ์ธ ํ›„ ๋‹ค์Œ ํ˜•์‹์œผ๋กœ ๊ฒฐ๊ณผ ์ €์žฅ: ```json [ { "provider": "Google", "oauth_uri": "https://example.com/auth/google?client_id=..." - }, - { - "provider": "Naver", - "oauth_uri": "https://example.com/auth/naver?client_id=..." } ] +```` + +```` + +--- + +### โœจ ์ถ”๊ฐ€ ์•ˆ์ „ ์žฅ์น˜: "๋’ค๋กœ๊ฐ€๊ธฐ(go_back) ํ˜ธ์ถœ ์กฐ๊ฑด" ์ œํ•œ + +```text +๐Ÿ›‘ ๋’ค๋กœ๊ฐ€๊ธฐ(go_back)์€ ๋‹ค์Œ ์กฐ๊ฑด์ด ๋ชจ๋‘ ์ถฉ์กฑ๋  ๋•Œ๋งŒ ์‚ฌ์šฉ: +- โœ… ๋กœ๊ทธ์ธ ํ๋ฆ„์ด ์™„๋ฃŒ๋จ (์˜ˆ: redirect back to app, or callback URL) +- โœ… ํ˜„์žฌ ๋ฆฌ๋””๋ ‰์…˜ URL์ด ์ˆ˜์ง‘๋จ +- โœ… ๊ฒฐ๊ณผ์— ์ €์žฅ ํ›„ ๋‹ค์Œ ๋ฒ„ํŠผ ํƒ์ƒ‰์„ ์œ„ํ•ด ๋ณต๊ท€ ํ•„์š”ํ•  ๋•Œ ``` --- ## ๐Ÿšซ Step 4: ๋ฒ„ํŠผ ์—†์Œ ๋˜๋Š” ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ -* ์œ ํšจํ•œ SSO ๋ฒ„ํŠผ์ด **์ „ํ˜€ ์—†์Œ** -* ์˜ˆ์™ธ/์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ +* ์œ ํšจํ•œ SSO ๋ฒ„ํŠผ์ด **์ „ํ˜€ ์—†์„ ๊ฒฝ์šฐ** +* ์˜ˆ์™ธ, ์˜ค๋ฅ˜ ๋“ฑ ๋ฐœ์ƒ ์‹œ -๐Ÿ”š ์ฆ‰์‹œ ์ค‘๋‹จ ๋ฐ ๋‹ค์Œ ๋ฐ˜ํ™˜: +๐Ÿ“ค ์ฆ‰์‹œ ์ค‘๋‹จ ํ›„ ๋‹ค์Œ ํ˜•์‹์œผ๋กœ ๋ฐ˜ํ™˜: ```json [] @@ -97,11 +118,12 @@ extend_planner_system_message = """ ## ๐Ÿ“Ž ์ค‘์š” ๊ทœ์น™ ์š”์•ฝ -* **๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋“œ์‹œ ์ˆœ์„œ๋Œ€๋กœ ์ง„ํ–‰.** -* ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ, ์ง€์ •๋œ JSON ํ˜•์‹์œผ๋กœ๋งŒ ๋ฐ˜ํ™˜. -* **๋ฐ˜๋ณต ํƒ์ƒ‰/๋น„์ •์ƒ ํ–‰๋™ ๊ฐ์ง€ ์‹œ ๋นˆ ๋ฐฐ์—ด ๋ฐ˜ํ™˜.** -* ๋กœ๊ทธ์ธ์„ ์ง์ ‘ ์ž…๋ ฅํ•˜์ง€ ๋ง๊ณ , ์ €์žฅ๋œ ์„ธ์…˜/์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉ. -* ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ํƒ์ƒ‰ํ•˜๋ฉฐ, ์กฐ๊ฑด ๋ถˆ์ถฉ๋ถ„ ์‹œ **๋‹ค์Œ ๋ฒ„ํŠผ์œผ๋กœ ์ง„ํ–‰.** +* โœ… **๋ชจ๋“  SSO ๋กœ๊ทธ์ธ์€ ๋ฐ˜๋“œ์‹œ ์‹คํ–‰** (๊ฐ€๋Šฅํ•œ ๋ฒ„ํŠผ์€ ๋ชจ๋‘ ํด๋ฆญ) +* ๐Ÿ” ๋‹จ๊ณ„๋Š” ๋ฐ˜๋“œ์‹œ ์ˆœ์„œ๋Œ€๋กœ ์ง„ํ–‰ +* ๐Ÿ” ๋กœ๊ทธ์ธ์€ ์ฟ ํ‚ค/์„ธ์…˜์œผ๋กœ ์œ ์ง€๋œ ์ƒํƒœ์—์„œ ์ˆ˜ํ–‰ +* ๐Ÿšซ ์ง์ ‘ ID/PW ์ž…๋ ฅํ•˜์ง€ ์•Š์Œ +* โ›” ์ถ”์ธก URL ํด๋ฆญ ๊ธˆ์ง€ +* โ— ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ ๋ฐ˜๋“œ์‹œ ๊ทœ์ •๋œ JSON ํฌ๋งท๋งŒ ๋ฐ˜ํ™˜ --- -""" \ No newline at end of file +"""