ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • iOS [Swift] - OAuth ๊ฐœ๋… ์Šคํ„ฐ๋””
    iOS Develop 2023. 2. 14. 15:56
    ๋ฐ˜์‘ํ˜•

    ๐Ÿ“„

    ๊ฐœ๋…

    • Third Party Application์˜ ์ธ์ฆ ๊ถŒํ•œ ๋ถ€์—ฌ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
    • ์™ธ๋ถ€ ์‚ฌ์ดํŠธ์— ์ €์žฅ๋œ ์ž์‹ ์˜ ์ •๋ณด์— ๋Œ€ํ•ด ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ณตํ†ต ์ˆ˜๋‹จ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ๊ฐœ๋ฐฉํ˜• ํ‘œ์ค€
    • OAuth ๊ธฐ๋ฐ˜ ์„œ๋ฒ„์—์„œ ์ธ์ฆ์ด ํ•„์š”ํ•œ API๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋Š” OAuth ํ† ํฐ์„ ๋ฐ˜๋“œ์‹œ ์ด์šฉํ•œ๋‹ค.
    • ์™ธ๋ถ€ SNS ๊ณ„์ •์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ„ํŽธ ํšŒ์›๊ฐ€์ž… & ๋กœ๊ทธ์ธ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
    • ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์™ธ๋ถ€ App์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. [๊ธฐํƒ€ Api]
      • Google ๋กœ๊ทธ์ธ โ†’ API ํ†ต์‹  โ†’ ์‚ฌ์šฉ์ž Google Calendar ์ •๋ณด ์—ด๋žŒ
    • ์žฅ์  : ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์„œ๋น„์Šค์˜ ์ •๋ณด๋ฅผ ๊ฐ€๊ณตํ•˜์—ฌ ๋ณด๋‹ค ๊ฐ€์น˜ ์žˆ๋Š” ๊ฒฐ๊ณผ๋ฌผ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

    Authentication(์ธ์ฆ) / Authorization(ํ—ˆ๊ฐ€)

    • ์ผ๋ฐ˜ ๋กœ๊ทธ์ธ : ์•„์ด๋”” & ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ†ตํ•ด ์ธ์ฆ์„ ํ•˜๋Š” ๊ฒƒ
    • OAuth ๋กœ๊ทธ์ธ : ํƒ€ App์˜ ์ •๋ณด์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ์˜ App์ด ํ—ˆ๋ฝ๋ฐ›์•„ ์‚ฌ์šฉ์ž ์ธ์ฆ์„ ํ•˜๋Š” ๊ฒƒ

    OAuth Actor

    • Resource Server : Client๊ฐ€ ์ œ์–ดํ•  ์ž์›(resource)์„ ๋ณด์œ ํ•œ ์„œ๋ฒ„
      • Twitter, Google, Facebook ๋“ฑ ์‚ฌ์šฉ์ž์˜ Api๋ฅผ ์ œ๊ณตํ•˜๋Š” ํƒ€ App
    • Resource Owner : ์ž์›(resource) ์†Œ์œ ์ž
      • ๋กœ๊ทธ์ธ์„ ํ–‰ํ•˜๋Š” ์‹ค์ œ ์‚ฌ์šฉ์ž
    • Client : Resource Server์— ์ ‘์†ํ•ด์„œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋Œ€์ƒ (Web Application)
      • ๋‹ค์‹œ ๋งํ•ด, ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ์„œ๋น„์Šค

    OAuth [Client - Server]

    • ์š”์•ฝ : Client์—์„œ Server์˜ Token์„ ๋ฐ›๊ณ , ๊ทธ Token์„ ๊ฐ€์ง€๊ณ  ๋‹ค์‹œ Server์— ์š”์ฒญํ•ด์„œ ์›ํ•˜๋Š” ์ž์›์„ ํš๋“ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Token์˜ ์ข…๋ฅ˜
      • Access Token : ์š”์ฒญ ์ ˆ์ฐจ๋ฅผ ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒํ•œ Client์—๊ฒŒ ๋ฐœ๊ธ‰ (์‹œ๊ฐ„ ์ œํ•œ ์žˆ์Œ)
      • Refresh Token : "Resource Server"๊ฐ€ ์•„๋‹ˆ๋ผ "Authorization Server"์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ (์‹œ๊ฐ„ ์ œํ•œ ์—†์Œ)
    • Flow
      1. MyApp(Client)์ด Facebook(Resource Server)์— API๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๊ณ  ๋“ฑ๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
      1. Facebook(Resource Server)์€ MyApp(Client)๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” Client ID & Secret์„ ๋ฐœ๊ธ‰ํ•ด์ค๋‹ˆ๋‹ค.
      1. ์‚ฌ์šฉ์ž(Resource Owner)๋Š” MyApp(Client)์—์„œ Facebook ๋กœ๊ทธ์ธ์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
      1. MyApp(Client)์€ ์‚ฌ์šฉ์ž(Resource Owner)์—๊ฒŒ Facebook(Resource Server) ๋กœ๊ทธ์ธ ํ™”๋ฉด์„ ๋„์›Œ์ค๋‹ˆ๋‹ค.
      1. ์‚ฌ์šฉ์ž(Resource Owner)๋Š” MyApp(Client)์ด Facebook(Resource Server) ์ž์‹ ์˜ ์ •๋ณด์— ์ ‘๊ทผํ•ด๋„ ๊ดœ์ฐฎ์€์ง€์— ๋Œ€ํ•œ ๋™์˜๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. ("MyApp์—์„œ ๋‹น์‹ ์˜ Facebook ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๊ดœ์ฐฎ๊ฒ ์Šต๋‹ˆ๊นŒ?")
        1. ์‚ฌ์šฉ์ž๊ฐ€ MyApp์—๊ฒŒ Facebook ๊ถŒํ•œ์„ ํ—ˆ์šฉํ–ˆ์„ ๋•Œ
          1. Facebook(Resource Server)์€ MyApp(Client)์—๊ฒŒ ์•”ํ˜ธํ™” ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
          1. MyApp(Client)์€ 2๋ฒˆ์—์„œ ๋ฐœ๊ธ‰ ๋ฐ›์€ Client ID & Secret์„ ์•”ํ˜ธํ™” ์ฝ”๋“œ์™€ ํ•จ๊ป˜ Facebook(Resource Server)์œผ๋กœ ๋‹ค์‹œ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
          1. Facebook(Resource Server)์€ ์•”ํ˜ธํ™” ์ฝ”๋“œ, Client ID & Secret์ด ๋ชจ๋‘ ์ž์‹ ์ด ์ œ๊ณตํ•œ ๊ฒƒ๊ณผ ์ผ์น˜ํ•œ๋‹ค๊ณ  ํŒ๋‹จํ–ˆ์„ ๋•Œ, ์ตœ์ข… ์ ‘๊ทผ ๊ถŒํ•œ ๋ถ€์—ฌ์˜ ์˜๋ฏธ๋กœ Access Token์„ ๋ฐœ๊ธ‰ํ•ด์ค๋‹ˆ๋‹ค.
        1. ์‚ฌ์šฉ์ž๊ฐ€ MyApp์—๊ฒŒ Facebook ๊ถŒํ•œ์„ ๊ฑฐ๋ถ€ํ–ˆ์„ ๋•Œ
          1. Facebook ๋กœ๊ทธ์ธ ์ •๋ณด์— ๋Œ€ํ•œ ์ ‘๊ทผ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๊ทธ์ธ์ด ๋ถˆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    ์šฉ์–ด ์ •๋ฆฌ

    ๐Ÿ’ฅย Web Application

    • ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์™€ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“  ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ

    ๐Ÿ’ฅย Web Container

    • ๋™์ ์ธ ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•œ๋‹ค. Servlet Container๋ผ๊ณ ๋„ ํ•˜๋ฉฐ JSP, Servlet์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. JSP, Servlet์€ ์›น ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ๋™์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ •์ ์ธ ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ํ•˜์ง€๋งŒ, Web Container๋Š” ์›น ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์ •๋ณด๋กœ ๋™์  ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์›น ์„œ๋ฒ„์—๊ฒŒ ์ „๋‹ฌํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

    ๐Ÿ’ฅย Web Application Server (WAS)

    • Web Server + Web Container, ์ •์ ์ธ ํŽ˜์ด์ง€(HTML)์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” Business Logic, DB ์กฐํšŒ ๋“ฑ ๋™์ ์ธ ์ปจํ…์ธ ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.ํ†ฐ์บฃ

    ๐Ÿ’ฅย [์›น ์„œ๋ฒ„๋Š” ์ •์  ์ฒ˜๋ฆฌ, WAS๋Š” ๋™์  ์ฒ˜๋ฆฌ]๋ฅผ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด, ์„œ๋ฒ„ ๋ถ€ํ•˜๋ฅผ ๋ง‰์œผ๋ฉด์„œ ๋ฌผ๋ฆฌ์ ์ธ ๋ถ„๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.


    Uploaded by N2T

Designed by Tistory.