์ž๋Š” ์”จ์•—
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • ๐Ÿฃ ๊ธฐ์ดˆ ๊ฐœ๋…
    • ๐Ÿ“Ž ์œ ํŠœ๋ธŒ
    • ๐Ÿ’พ ์กฐ๊ฐ๋ชจ์Œ
    • ๐Ÿ‘ฉ‍๐Ÿ’ป Error
    • โ„ React
    • ๐ŸฅPython
    • ๐Ÿ€ Spring
    • ๐Ÿฅž JS
    • ๐Ÿ‹ Docker
    • ๐Ÿงญ WSO2
    • ๐Ÿง Linux
    • ๐Ÿ”— SQL
    • ๐Ÿข C#
    • ๐Ÿ“‘ ์ฝ์„๊ฑฐ๋ฆฌ
    • ๐Ÿ‘€์งˆ๋ฌธ๋“ค
    • ๐Ÿ‘ฉ‍๐Ÿ’ป ๊ตญ๋น„ ์ˆ˜์—…
      • Java ์ž๋ฐ”
      • Oracle ์˜ค๋ผํด
      • JDBC
      • HTML & CSS
      • JavaScript
      • JSP
      • Servlet
      • Spring
      • MyBatis
    • ๐Ÿ“• ๊ฐœ๋ฐœ ํ˜ผ๊ณต
      • ์ž๋ฐ”์˜ ์ •์„
      • ์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ
hELLO ยท Designed By ์ •์ƒ์šฐ.
์ž๋Š” ์”จ์•—

๐ŸŒฑ

4. Single Sign-On with SAML
๐Ÿงญ WSO2

4. Single Sign-On with SAML

2024. 1. 25. 08:56

SSO (Single Sing-On)

  • User๊ฐ€ Credential์„ ํ•œ ๋ฒˆ ์ œ๊ณตํ•˜๋ฉด ๋‹ค์ˆ˜์˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ
  • ํ•˜๋‚˜์˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— sign in์„ ํ•˜๋ฉด, ๊ฐ™์€ ์„ธ์…˜์„ ๊ณต์œ ํ•˜๋Š” ๋‹ค๋ฅธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ

 

SAML (Security Assertion Markup Language)

  • XML ๊ธฐ๋ฐ˜์˜ ๋งˆํฌ์—… ์–ธ์–ด
  • federated authentication, sso ๊ตฌํ˜„์— ์“ฐ์ด๋Š” ๊ฐœ๋ฐฉํ˜• ํ‘œ์ค€
  • ์›น ๊ธฐ๋ฐ˜ ์‹ฑ๊ธ€ ์‚ฌ์ธ์˜จ (Single Sign-On, SSO)์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ ์ค‘ ํ•˜๋‚˜
  • Security information์ด ์–ด๋–ป๊ฒŒ xml ๋ฉ”์‹œ์ง€๋กœ ์ธ์ฝ”๋”ฉ๋˜์–ด ์‹ ๋ขฐ๋œ ๋‹น์‚ฌ์ž๋“ค ๊ฐ„์— ์ „๋‹ฌ๋˜๋Š”์ง€ ์ •์˜ํ•จ
  • IdP์™€ SP ์‚ฌ์ด์—์„œ authentication๊ณผ authorization ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐœ๋ฐฉํ˜• ํ‘œ์ค€
  • XML์„ ์‚ฌ์šฉํ•˜์—ฌ IdP์™€ SP ๊ฐ„์˜ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•˜๋ฉฐ, ์ด๋ฅผ HTTP Redirect ๋˜๋Š” HTTP POST๋ฅผ ํ†ตํ•ด ์ „์†ก

 

SAML2 Participants

participants : ์ฐธ๊ฐ€์ž, SAML2 ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์ฒด ๋˜๋Š” ์—ญํ• , ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉ

  • User : IdP์— User account๋ฅผ ๊ฐ€์ง€๋ฉฐ, SP์˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ‘ํ•˜๋ ค๊ณ  ํ•จ
  • SP, relying party, client application : End User๊ฐ€ ์ ‘๊ทผํ•˜๊ณ ์ž ํ•˜๋Š” ์›น์ด๋‚˜ ๋ชจ๋ฐ”์ผ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜
  • IDP, asserting party : User account๋ฅผ ๊ด€๋ฆฌํ•จ, ์œ ์ €์˜ ์‹ ์›์„ ์ธ์ฆํ•˜๋Š” ์ฑ…์ž„์„ ๊ฐ€์ง (์‚ฌ์šฉ์ž๊ฐ€ ์‹œ์Šคํ…œ์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•  ๋•Œ, ์‹œ์Šคํ…œ์ด ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ œ๋กœ ์ž์‹ ์ด ์ฃผ์žฅํ•œ ๋Œ€์ƒ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ • ๊ฑฐ์นจ)

๋ณด์•ˆ ์ •๋ณด ๊ตํ™˜ ์ด์ „์— SP์™€ IdP ์‚ฌ์ด์— ์‹ ๋ขฐ๋œ ๊ด€๊ณ„๊ฐ€ ์„ค์ •๋˜์–ด์•ผ ํ•จ

์‹ ๋ขฐ๋œ ๊ด€๊ณ„๋Š” Public Key Cryptography(๊ณต๊ฐœ ํ‚ค ์•”ํ˜ธํ™”)์— ๊ธฐ๋ฐ˜ํ•จ

 

SAML2 Authentication Flow

  1. ์‹œ์ž‘:
    • SP ํ˜น์€ End User๊ฐ€ ์‹œ์ž‘ํ•จ
  2. SP์˜ Authentication Request ์ƒ์„ฑ ๋ฐ ์ „์†ก:
    • ์‚ฌ์šฉ์ž๊ฐ€ SP์— ์ ‘๊ทผํ•˜๋ฉด SP๋Š” Authentication Request๋ฅผ ์ƒ์„ฑํ•˜์—ฌ IdP๋กœ ๋ณด๋‚ด์„œ ์‚ฌ์šฉ์ž์˜ Identity Information์„ ์š”์ฒญํ•จ
    • Authentication Request : ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ์„œ๋น„์Šค์— ์•ก์„ธ์Šคํ•˜๋ ค๊ณ  ํ•  ๋•Œ SP์—์„œ ์ƒ์„ฑ๋˜๊ณ  IdP์—๊ฒŒ ์ „์†ก๋˜๋Š” ์š”์ฒญ ์‚ฌ์šฉ์ž์˜ ์‹๋ณ„ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋ฉฐ ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ IdP๊ฐ€ ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋จ XML ๋ฉ”์‹œ์ง€๋กœ, SP์˜ ์ •๋ณด์™€ IdP๋กœ๋ถ€ํ„ฐ ์–ป์–ด์•ผ ํ•˜๋Š” ์ถ”๊ฐ€ ์š”๊ตฌ ์‚ฌํ•ญ์„ ํฌํ•จํ•จ
  3. IdP์˜ Authentication Request ๊ฒ€์ฆ:
    • ํ•ด๋‹น ์š”์ฒญ์ด SAML ํ”„๋กœํ† ์ฝœ ๊ทœ์น™์„ ์ค€์ˆ˜ํ•˜๋Š”์ง€, ์„œ๋ช…์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ ์šฉ๋๋Š”์ง€, ์˜ˆ์ƒํ•œ ํ˜•์‹๊ณผ ๊ตฌ์กฐ๋ฅผ ๊ฐ–์ถ”๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธ
  4. IdP์˜ ์‚ฌ์šฉ์ž ์ธ์ฆ:
    • ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž๊ฒฉ ์ฆ๋ช…(credential)์„ ์ž…๋ ฅํ•˜๋„๋ก ์•ˆ๋‚ดํ•˜๊ฑฐ๋‚˜ ์š”์ฒญํ•จ
    • ์ฃผ๋กœ ๋กœ๊ทธ์ธ ๊ณผ์ •์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ, ๋˜๋Š” ๋‹ค๋ฅธ ์ธ์ฆ ์ˆ˜๋‹จ์„ ์ž…๋ ฅํ•˜๋„๋ก ํ•˜๋Š” ๋‹จ๊ณ„์ž„
    • ์‚ฌ์šฉ์ž๋Š” ์•„์ด๋””, ๋น„๋ฐ€๋ฒˆํ˜ธ ๋“ฑ์„ ์ž…๋ ฅํ•˜์—ฌ ๋กœ๊ทธ์ธ
  5. Authentication ์„ฑ๊ณต ํ›„ Idp์—์„œ SP๋กœ ๋ฐ˜ํ™˜:
    • ์ด ๊ณผ์ •์€ ๋ณด์•ˆ ๋ฐ ์ธ์ฆ์˜ ํ‘œ์ค€์ธ SAML์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ˆ์ „ํ•˜๊ฒŒ ์ด๋ฃจ์–ด์ง
    • IdP๋Š” ์„ธ์…˜์„ ๋งŒ๋“ค๊ณ  SAML Assertion์„ ์ƒ์„ฑํ•˜์—ฌ SP์—๊ฒŒ ๋ฐ˜ํ™˜ํ•จ
    • SAML Assertion : ์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” XML ํ˜•์‹์˜ ๋ฌธ์„œ
    • ์‘๋‹ต์—๋Š” Authenticated User ์ด๋ฆ„๊ณผ ์š”์ฒญ๋œ ์†์„ฑ ๋“ฑ์ด ํฌํ•จ๋จ
    • IdP๋Š” Private Key๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‘๋‹ต์— ์„œ๋ช…ํ•˜๊ณ , SP๋Š” IdP์˜ Public Key๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์ฆํ•จ
  6. ์„œ๋น„์Šค ์ œ๊ณต:
    • SP๋Š” Authentication ๋ฐ ์„œ๋ช… ๊ฒ€์ฆ ํ›„ user session์„ ์ƒ์„ฑํ•˜์—ฌ ๊ทธ์— ๋”ฐ๋ฅธ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณต

 

๋”๋ณด๊ธฐ

<์‚ฌ์šฉ์ž๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ธ์ฆ๋˜์—ˆ์„ ๋•Œ IdP์—์„œ SP๋กœ ๋ฐ˜ํ™˜๋˜๋Š” ๊ณผ์ •>

  1. ์„ธ์…˜ ์ƒ์„ฑ:
    • ์‚ฌ์šฉ์ž๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ธ์ฆ๋˜๋ฉด IdP๋Š” ํ•ด๋‹น ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ์„ธ์…˜์„ ์ƒ์„ฑ
    • ์„ธ์…˜์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž์˜ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์ถ”์ ํ•˜๊ณ  ์œ ์ง€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋จ
  2. SAML Assertion ์ƒ์„ฑ:
    • IdP๋Š” SAML Assertion์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” XML ํ˜•์‹์˜ ๋ฌธ์„œ๋ฅผ ์ƒ์„ฑ
    • ์ด ๋ฌธ์„œ์—๋Š” ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋จ
    • ex ) ์‚ฌ์šฉ์ž๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€, ์–ด๋–ป๊ฒŒ ์ธ์ฆ๋˜์—ˆ๋Š”์ง€, ์–ด๋–ค ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋˜์—ˆ๋Š”์ง€ ๋“ฑ
  3. ์‘๋‹ต์— ํฌํ•จ๋œ ์ •๋ณด:
    • IdP๋Š” ์ด SAML Assertion์„ ์‘๋‹ต ๋ฉ”์‹œ์ง€์— ํฌํ•จ์‹œํ‚ด
    • ์ด ์‘๋‹ต์€ ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ์ด ์„ฑ๊ณตํ–ˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, SP์—์„œ ์ด ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•จ
    • ์‘๋‹ต์—๋Š” ์‚ฌ์šฉ์ž์˜ ์‹๋ณ„ ์ •๋ณด์™€ SP์—์„œ ์š”์ฒญํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ํฌํ•จ
  4. ์„œ๋ช…:
    • IdP๋Š” ์‘๋‹ต์— ํฌํ•จ๋œ ์ •๋ณด์— ๋Œ€ํ•ด Private Key๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋””์ง€ํ„ธ ์„œ๋ช…์„ ์ƒ์„ฑ
    • ์ด ์„œ๋ช…์€ IdP๊ฐ€ ์‘๋‹ต์„ ์ƒ์„ฑํ–ˆ์Œ์„ ์ฆ๋ช…ํ•˜๊ณ , ๋ฉ”์‹œ์ง€์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณดํ˜ธํ•จ
  5. ๊ฒ€์ฆ:
    • SP๋Š” IdP์˜ Public Key๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ช…์„ ๊ฒ€์ฆ
    • ์ด๋ฅผ ํ†ตํ•ด ์‘๋‹ต์ด ์ •ํ™•ํ•˜๊ฒŒ IdP์—์„œ ์ƒ์„ฑ๋˜์—ˆ๊ณ  ๋ณ€์กฐ๋˜์ง€ ์•Š์•˜์Œ์„ ํ™•์ธ ๊ฐ€๋Šฅ

 

SAML Assertion

  • IdP๊ฐ€ SP์—๊ฒŒ ๋ณด๋‚ด๋Š” XML ๋ฌธ์„œ๋กœ user authorization์„ ํฌํ•จ
  • 3 ์ข…๋ฅ˜์˜ SAML Assertion์ด ์žˆ์Œ
    • Authentication Assertion : User์˜ identification์„ ์ฆ๋ช…ํ•˜๊ณ , ์œ ์ €๊ฐ€ ๋กœ๊ทธ์ธํ•œ ์‹œ์ ๊ณผ ์‚ฌ์šฉ๋œ Autentication์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•จ
    • Attribute Assertion : User์— ๊ด€ํ•œ ์ •๋ณด(์ด๋ฆ„, email, ๋ชจ๋ฐ”์ผ ๋ฒˆํ˜ธ ๋“ฑ) ํฌํ•จ
    • Authorization Decision Assertion : ์œ ์ €๊ฐ€ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก Authorized๋˜์—ˆ๋Š”์ง€, ํ˜น์€ ๊ถŒํ•œ ๋ถ€์กฑ์œผ๋กœ ์ธํ•ด IdP๊ฐ€ Request๋ฅผ ๊ฑฐ๋ถ€ํ–ˆ๋Š”์ง€ ๋ณด์—ฌ์คŒ

 

SAML Specifications

  • SAML 2.0 Core : SAML Assertion์˜ syntax์™€ semantic๊ณผ ์š”์ฒญ ๋ฐ ์ „์†ก ํ”„๋กœํ† ์ฝœ์„ ๊ฐœ์„ ํ•จ
  • SAML 2.0 Bindings
  • SAML 2.0 Profiles
  • SAML 2.0 Metadata

 


  1. ์‚ฌ์šฉ์ž๋Š” Service Provider (SP)์—์„œ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค์— ์•ก์„ธ์Šคํ•˜๋ ค๊ณ  ์‹œ๋„
  2. SP๋Š” ์‚ฌ์šฉ์ž๋ฅผ Identity Provider (IdP)๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•จ
  3. ์‚ฌ์šฉ์ž๋Š” IdP์—์„œ ๋กœ๊ทธ์ธํ•˜๊ณ  ์ธ์ฆ๋˜๋ฉฐ, IdP๋Š” SAML Assertion์„ ์ƒ์„ฑ
  4. IdP๋Š” ์ƒ์„ฑ๋œ SAML Assertion์„ ์•ˆ์ „ํ•˜๊ฒŒ SP์—๊ฒŒ ๋ฐ˜ํ™˜ํ•จ
  5. SP๋Š” ๋ฐ›์€ SAML Assertion์„ ๊ฒ€์ฆํ•˜๊ณ , ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•จ
  6. SP๋Š” ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•จ

 

  • SP : IdP์—์„œ ์ œ๊ณต๋œ SAML Assertion์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ธ์ฆ
    (IdP๋Š” ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ์„ ํ™•์ธํ•˜๊ณ , ์„ธ์…˜์„ ์ƒ์„ฑํ•œ ํ›„์— ์ด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฉ”์‹œ์ง€์ธ SAML Assertion์„ ์ƒ์„ฑํ•˜๋ฉฐ, ์ด๋ฅผ Service Provider (SP)๋กœ ์ „์†กํ•จ์œผ๋กœ์จ ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ์ •๋ณด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ „๋‹ฌํ•จ)
  • User : SP์—์„œ ์ถ”๊ฐ€์ ์ธ ์„œ๋น„์Šค๋‚˜ ์ž์›์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Œ
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿงญ WSO2' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

WSO2 ํ˜ธ์ŠคํŠธ๋ช… ๋ณ€๊ฒฝ ๊ฐ€์ด๋“œ ์ •๋ฆฌ  (1) 2024.02.14
WSO2 ํ‚ค์Šคํ† ์–ด, ๋””์ง€ํ„ธ ์ธ์ฆ์„œ, ์ธ์ฆ ๊ธฐ๊ด€, JKS์™€ cacerts, SSL/TLS ํ†ต์‹   (1) 2024.02.14
Fine-grained access  (0) 2024.01.31
    '๐Ÿงญ WSO2' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • WSO2 ํ˜ธ์ŠคํŠธ๋ช… ๋ณ€๊ฒฝ ๊ฐ€์ด๋“œ ์ •๋ฆฌ
    • WSO2 ํ‚ค์Šคํ† ์–ด, ๋””์ง€ํ„ธ ์ธ์ฆ์„œ, ์ธ์ฆ ๊ธฐ๊ด€, JKS์™€ cacerts, SSL/TLS ํ†ต์‹ 
    • Fine-grained access

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”