Upgrade to Pro — share decks privately, control downloads, hide ads and more …

認証・認可の仕組みを理解する上で知っておきたい基礎知識/auth-overview

 認証・認可の仕組みを理解する上で知っておきたい基礎知識/auth-overview

nishina

May 08, 2020
Tweet

More Decks by nishina

Other Decks in Programming

Transcript

  1. • εςʔτϑϧ • ݱࡏͷঢ়ଶΛ΋ͭ • ྫ: FTP, TCP, BGP, OSPF,

    EIGRP, SMTP, SSH • εςʔτϨε • ݱࡏͷঢ়ଶΛ΋ͨͳ͍ • ྫ: HTTP, UDP, IP, DNS  εςʔτϑϧͱεςʔτϨεʹ͍ͭͯ σʔλ௨৴ʹ͸εςʔτϑϧͱεςʔτϨεͷ2छྨ͕͋Δ
  2. • Cookie
 • WebStorage • SessionStorage • LocalStorage  ηογϣϯ৘ใͷอଘઌ

    ΫϥΠΞϯτ(ϒϥ΢β)ʹ͸CookieͱWebStorageͷ2छྨ͕ଘࡏ
  3. • ೝূʢAuthenticationʣ • ୭Ͱ͋Δ͔Λ֬ೝ͢Δ͜ͱ • ྫ: ύεϫʔυೝূɺࢦ໲ೝূͳͲ • ೝূʹࣦഊͨ͠ͱ͖ͷΤϥʔ͸ʮ401 Unauthorizedʯ

    • ೝՄʢAuthorizationʣ • ૢ࡞ͷݖݶΛ༩͑Δ͜ͱ • ྫ: Ӿཡ੍ݶͷ͋Δϖʔδ΁ͷΞΫηεͳͲ • ݖݶෆ଍ʹΑΔΤϥʔ͸ʮ403 Forbiddenʯ  ೝূͱೝՄͷҧ͍
  4. • ࣝผࢠܕ • DBʹτʔΫϯͷ৘ใΛอଘ͓ͯ͘͠λΠϓͷτʔΫϯ • ಺แܕ • ΞΫηετʔΫϯʹඥ෇͘৘ใΛΞΫηετʔΫϯࣗମͷதʹຒ ΊࠐΉ΋ͷɻ •

    JWT͸಺แܕ  τʔΫϯϕʔεͷೝূʢ2/3ʣ τʔΫϯͷछྨʹ͍ͭͯ \ lTDPQFzlYYYz  lDMJFOU@JEzlYYYz  lFYQzlYYYz  lJBUzlYYYz  lTVCzlYYYz  lJTTzlYYYz  lKUJzlYYYz ^ ಺แܕ ࣝผࢠܕ
  5. • OAuth2.0ʹ͍ͭͯ • τʔΫϯͷܗࣜ΍ɺτʔΫϯͷཁٻͱͦͷԠ౴ͳͲɺ
 τʔΫϯͷ࢓༷Λඪ४Խͨ͠΋ͷ • ʮೝՄʯΛඪ४Խͨ͠΋ͷͰ͋Γʮೝূʯ෦෼͸
 είʔϓ֎ • OAuth2.0Ͱඪ४Խ͞Ε͍ͯΔϑϩʔ

    • ೝՄίʔυϑϩʔ • ΠϯϓϦγοτϑϩʔ • ϦιʔεΦʔφʔɾύεϫʔυɾΫϨσϯγϟϧζϑϩʔ • ΫϥΠΞϯτɾΫϨσϯγϟϧζϑϩʔ • ϦϑϨογϡτʔΫϯϑϩʔ  τʔΫϯϕʔεͷೝূʢ3/3ʣ
  6. • XSS • ѱҙͷ͋ΔJavaScript͕ΫϥΠΞϯτଆͰ࣮ߦ͞Εɺ
 ػີ৘ใ͕ൈ͔ΕΔͳͲͷඃ֐͕ൃੜ͢Δ੬ऑੑ • ΫϥΠΞϯτଆͰൃੜ͢Δ੬ऑੑ • CSRF •

    ѱҙͷ͋ΔϦΫΤετΛαʔόʔड͚෇͚ɺ
 ҙਤ͠ͳ͍ॲཧ͕ߦΘΕͯ͠·͏੬ऑੑ • αʔόʔଆͰൃੜ͢Δ੬ऑੑ  ೝূɾೝՄʹ͓͚ΔηΩϡϦςΟϦεΫ
  7. • ηογϣϯϕʔε • τʔΫϯϕʔε • CookieʹอଘɺϦΫΤετ࣌ʹCookieΛࣗಈૹ৴ • CookieʹอଘɺAuthorizationϔομʔʹ෇༩ͯ͠ϦΫΤετ • LocalStorageʹอଘɺAuthorizationϔομʔʹ෇༩ͯ͠


    ϦΫΤετ  ೝূɾೝՄͷख๏·ͱΊ ηογϣϯϕʔε1ͭɺτʔΫϯϕʔε3ͭͷ߹ܭ4छྨΛ঺հ ࢀߟIUUQTRJJUBDPN)JSPNJJUFNTFBGGE
  8. • XSSରࡦ • Cookieʹhttp:onlyΛ͚ͭΔ͜ͱͰJavaScriptͰΞΫηε
 Ͱ͖ͳ͍Α͏ʹ͢Δ • CSRFରࡦ • CSRFτʔΫϯ •

    ύεϫʔυΛ࠶౓ೖྗ͢Δ࢓༷ʹ͢Δ  ηογϣϯϕʔε Cookie͸ࣗಈૹ৴͞ΕΔͷͰɺѱҙͷ͋ΔϦΫΤετ͔൑ผ
 ͢ΔͨΊʹCSRFରࡦʹ͍ͭͯߟ͑Δඞཁ͕͋Δ
  9. • XSSରࡦ • Cookieʹhttp:onlyΛ͚ͭΔ͜ͱͰJavaScriptͰΞΫηε
 Ͱ͖ͳ͍Α͏ʹ͢Δ • CSRFରࡦ • CSRFτʔΫϯ •

    ύεϫʔυΛ࠶౓ೖྗ͢Δ࢓༷ʹ͢Δ  τʔΫϯϕʔε: Cookieʹอଘɾૹ৴ ηογϣϯϕʔεͷ࣌ͱಉ͡
  10. • XSSରࡦ • ϑϨʔϜϫʔΫͷػೳΛར༻ͯ͠ϥΠϒϥϦʹ੬ऑੑ͕
 ͳ͍͔νΣοΫ • CSRFରࡦ • CookieͷτʔΫϯ͸ݕূͰར༻͠ͳ͍ͷͰߟྀෆཁ 

    τʔΫϯϕʔε: Cookieʹอଘɾϔομʔૹ৴ ϔομʔʹηοτ͢ΔτʔΫϯΛCookie͔ΒऔΓग़ͨ͢Ίʹ͸ http:falseʹ͠ͳ͍ͱ͍͚ͳ͍ͷͰXSS੬ऑੑ͕ൃੜ͢Δ