Slide 1

Slide 1 text

۽Ͱ΋Θ͔Δ FIDO2

Slide 2

Slide 2 text

༻ޠղઆ

Slide 3

Slide 3 text

ύεϫʔυΛ࢖ΘͣʹೝূΛߦ͏ʮύεϫʔυϨεʯೝূͷ࠷৽ͷٕज़ن֨ ެ։伴Λࣄલʹొ࿥͢Δ ϩάΠϯͷཁٻ νϟϨϯδίʔυΛ͚ͭͯ ೝূΛґཔ ࢿ֨৘ใͷೖྗ ʢࢦ໲ೝূͳͲʣ νϟϨϯδίʔυʹର͠ ൿີ伴Ͱॺ໊ ެ։伴ʹΑΔݕূ ϩάΠϯڐՄ ൿີ伴ͷอ࣋ ެ։伴ͷอ࣋ '*%0ͱ͸ 8FCαΠτ

Slide 4

Slide 4 text

'*%0ͷ࢓૊Έͷ՝୊ ެ։伴Λࣄલʹొ࿥ࡁ ϩάΠϯͷཁٻ ެ։伴ʹΑΔݕূ ϩάΠϯڐՄ ൿີ伴#ͷอ࣋ ެ։伴ͷอ࣋ ൿີ伴"ͷอ࣋ ެ։伴ະొ࿥ ϩάΠϯͷཁٻ ެ։伴ʹΑΔݕূ ϩάΠϯڐՄͰ͖ͳ͍ ެ։伴ొ࿥ࡁ 1$ͱεϚϗ྆ํ͔ΒΞΫηε͍͕ͨ͠ɺ εϚϗͷൿີ伴͔͠ొ࿥ͯ͠ͳ͍ͷͰ 1$͔ΒϩάΠϯͰ͖ͳ͍ͷͭΒ͍ 8FCαΠτ

Slide 5

Slide 5 text

ύεΩʔʢNVMUJEFWJDF'*%0DSFEFOUJBMʣ Ϋϥ΢υͰൿີ伴Λอଘ͠ڞ༗͢Δ͜ͱͰϚϧνσόΠεରԠ͢Δ๏ํ ൿີ伴ΛΫϥ΢υͰڞ༗ ϩάΠϯͷཁٻ ެ։伴ʹΑΔݕূ ϩάΠϯڐՄ ެ։伴ͷอ࣋ ϩάΠϯͷཁٻ εϚϗͰ࡞ͬͨൿີ伴Λ1$Ͱ΋ ڞ༗Ͱ͖ΔͷͰɺ ྆ํͰ'*%0ͰͷϩάΠϯ͕Ͱ͖Δʂ ެ։伴ʹΑΔݕূ ϩάΠϯڐՄ 8FCαΠτ

Slide 6

Slide 6 text

'*%0ೝূ͢Δ͜ͱʹύεΩʔͱ͍͏จ຺Ͱ ࢖͏ਓ΋͍ΔͷͰؾΛ͚ͭΑ͏ɻ ʢຊ౰ͷҙຯ͸ҧ͏Αʣ

Slide 7

Slide 7 text

࣮૷

Slide 8

Slide 8 text

8FCBVUIO ύϒϦοΫΩʔೝূͷΠϯλʔϑΣΠεΛ8FCΞϓϦέʔγϣϯͰඪ४Խ͢ΔͨΊͷ8FCඪ४ɻ ެ։伴Λࣄલʹొ࿥͢Δ ϩάΠϯͷཁٻ νϟϨϯδίʔυΛ͚ͭͯ ೝূΛґཔ 1*/ͷೖྗ UPVDI*% νϟϨϯδίʔυʹର͠ ൿີ伴Ͱॺ໊ ެ։伴ʹΑΔݕূ ϩάΠϯڐՄ ೝূػ 8FC"VUIO $MJFOU ϒϥ΢β 8FCαΠτ

Slide 9

Slide 9 text

8FCBVUIO ඞཁͳཁ݅ 1*/ͷೖྗ UPVDI*% ೝূػ 8FC"VUIO $MJFOU ϒϥ΢β 8FCαΠτ WebAuthn Relying Partyʹ४ڌ͢Δ͜ͱ WebAutn Clientʹ ରԠ͢Δ͜ͱ FIDO2 authenticaterͱ ޓ׵ੑΛอͭ͜ͱ

Slide 10

Slide 10 text

8FCBVUIO ϒϥ΢βͷରԠঢ়گ V67ʙ V87ʙ V13ʙ V60ʙ Vʙ &EHF)5.-࣌୅ʹ ରԠࡁΈ 2023/5 V113 2023/5 V16 2023/5 V113 2023/5 V40

Slide 11

Slide 11 text

8FCBVUIO࣮૷લ४උ ࢀߟ63- pedz/rails-7-passkey-demo https://github.com/pedz/rails-7-passkey-demo cedarcode/webauthn-ruby https://github.com/cedarcode/webauthn-ruby 'SPOUFOE #BDLFOE $npm install webauthn-json $gem install webauthn-ruby

Slide 12

Slide 12 text

8FCBVUIO ೝূػ 8FC"VUIO $MJFOU ϒϥ΢β 8FCαΠτ Θ͚ͯߟ͑ΔͱΘ͔Γ΍͍͢Ͱ͢ Web Backend Database Web Frontend

Slide 13

Slide 13 text

8FCBVUIO࣮૷ొ࿥࣌ WebAuthn Client (ϒϥ΢β) Web Backend Web Frontend Database webauth register API webautn callback API Home API ৽نొ࿥ ϩάΠϯ໊ཁٻ ϩάΠϯ໊1045 ϩάΠϯ໊1045 ϩάΠϯ໊ͷ6TFSΛ࡞੒ 8FCBVUO*%Λ࡞੒͠%#ʹอଘ DBMMCBDL"1*Λฦ͢ ެ։伴࡞੒ґཔ ެ։伴࡞੒ґཔ ೝূঢ়͚ͭͯ1045 ύϥϝʔλ͔Βೝূ৘ใΛอଘ ϩάΠϯ0, ϩάΠϯ0, ೝূ෇͖ϖʔδ΁ΞΫηε ೝূ෇͖"1*΁ ΞΫηε ೝূ෇͖৘ใΛ ฦ͢ ೝূ෇͖৘ใΛ දࣔ

Slide 14

Slide 14 text

8FCBVUIO࣮૷όοΫΤϯυͰ࣮૷͢Δ΋ͷ Web Backend Database webauth register API webautn callback API Home API register API Ϣʔβొ࿥ˍνϟϨϯδίʔυൃߦ"1* register callback API ൿີ伴ͷొ࿥ηογϣϯ։࢝"1* session API طଘͷϢʔβݕࡧˍνϟϨϯδίʔυൃߦ"1* session callback API ൿີ伴ͷ֬ೝɾηογϣϯ։࢝"1* ͭ"1*Λ࣮૷͢Δඞཁ͕͋Γɻ த਎͸طଘͷ΋ͷΛࢀর͢Δ͔৽ن࡞੒͔ͷҧ͍͔͠ͳ͠ɻ ͜Ε͸طଘͷೝূඞਢ"1*ͳͷͰ ৽ͨʹ࣮૷͸͍Βͳ͍Α

Slide 15

Slide 15 text

8FCBVUIO࣮૷ϑϩϯτΤϯυͰ࣮૷͢Δ΋ͷ Sign Up Ϣʔβొ࿥ ൿີ伴࡞੒ґཔ SFHJTUFS"1*ͱDBMMCBDL"1*Λೋ࣮ͭߦ͢Δ Sign In طଘͷϢʔβͰϩάΠϯ ൿີ伴ݕࡧґཔ TFTTJPO"1*ͱDBMMCBDL"1*Λೋ࣮ͭߦ͢Δ Credentials Management Page ൿີ伴ͷ؅ཧϖʔδ ͭը໘Λ࣮૷͢Δඞཁ͕͋Γɻ ͨͩϩάΠϯ಺෦ͷϩδοΫ͕1045͢Δ͚ͩͰ͸ͳ͍ͷͰ஫ҙɻ 8FC"VUIO+TPOΛ࢖ͬͯൿີ伴ͷ࡞੒Λϒϥ΢βʹଅ࣮͢૷͕ඞཁɻ Web Frontend

Slide 16

Slide 16 text

8FCBVUO՝୊

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

8FCαΠτ 1$ 4BGBSJൿີ伴 $ISPNFൿີ伴 ൿີ伴ೝূ ϩάΠϯ0, ൿີ伴ೝূ ϩάΠϯ/( ൿີ伴ͷڞ༗ ϒϥ΢βؒͰ͸ ڞ༗ͯ͘͠Εͳ͍ ϒϥ΢βؒͰͷڞ༗͸ߦΘΕͳ͍

Slide 19

Slide 19 text

8FCαΠτ macOS 4BGBS࡞੒ൿີ伴 $ISPNF࡞੒ൿີ伴 ൿີ伴ೝূ ϩάΠϯ0, ൿີ伴ೝূ ϩάΠϯ0, ൿີ伴ͷڞ༗ "QQMF͸1BTT,FZͱ͍͏࢓૊ΈͰJ$MPVEܦ༝ͰσόΠεؒڞ༗͕Մೳ iOS ൿີ伴ೝূ ϩάΠϯ0,

Slide 20

Slide 20 text

8FCαΠτ macOS ࡞੒ͨ͠ൿີ伴 ൿີ伴ೝূ ϩάΠϯ0, ൿີ伴ͷཧ૝ iOS

Slide 21

Slide 21 text

8FCαΠτ macOS ࡞੒ͨ͠ൿີ伴 ൿີ伴ೝূ ϩάΠϯ0, ൿີ伴ͷཧ૝ iOS Windows Andoid

Slide 22

Slide 22 text

ݱঢ়ͷղܾࡦ 8FCαΠτ NBD04J04ͷެ։伴 $ISPNFͷެ։伴 8JOEPXTͷެ։伴 macOS ࡞੒ͨ͠ൿີ伴 iOS Windows Andoid "OESPJEͷެ։伴 αΠτଆͰҰਓͷϢʔβʹରͯ͠ެ։伴Λෳ਺࣋ͭ

Slide 23

Slide 23 text

'*%0ͷ·ͱΊͱײ૝ w ൿີ伴ͷڞ༗ํ๏Λ͏·͘΍ΕΕ͹*1"44ํࣜʹऔͬͯมΘΔͰ͠ΐ͏ w Ϣʔβ໊ͱૹ৴Ϙλϯԡͤ͹ηογϣϯ։࢝͸࢖͍खଆ͔Β͢ΔͱϚδͰָ w ෳ਺伴؅ཧ͸Ϣʔβଆ΋αʔϏεఏڙଆ΋໘౗ͳͷͰϢʔβެ։伴ʹ͍ͨ͠

Slide 24

Slide 24 text

Blog: https://www.srockstyle.com/ • Twitterɿhttps://twitter.com/srockstyle • Facebookɿhttps://www.facebook.com/srockstyle • Githubɿhttps://github.com/srockstyle • Qiitaɿhttp://qiita.com/srockstyle • Wantedlyɿhttps://www.wantedly.com/users/2279 • YOUTRUST: https://youtrust.jp/users/srockstyle • Slideshareɿhttp://www.slideshare.net/srockstyle ۀ຿ҕୗͷ࢓ࣄ΋ɺਖ਼ࣾһͱͯ͠ͷεΧ΢τ΋͓଴ͪͯ͠·͢