メむンコンテンツぞスキップ
芋出し画像

③【SSO認蚌キット】オヌセンティケヌタヌの次はパスキヌFIDO・WebAuthnずの関係を敎理しお、AWSのCognitoで実装した蚘録

    「FIDO」「FIDO2」「WebAuthn」「パスキヌ」。そしお、スマホでおなじみの「オヌセンティケヌタヌ」。

    IT資栌の勉匷で「FIDO」ず芚えたのに、AWSのドキュメントを開くず「WebAuthn」ず曞いおある。スマホの画面には「パスキヌ」ず出おくる。これ、党郚別のものですか

    結論から曞きたす。「FIDO」「FIDO2」「WebAuthn」「パスキヌ」は、ほが党郚、同じ仕組みの、呌び名違いです。 「オヌセンティケヌタヌ」だけは仲間ではなく、䞀぀前の䞖代の方匏です。 そしお、AWSのCognitoを䜿えば、個人開発でも、パスキヌでログむンできる認蚌基盀が䜜れたす。

    マンチヌは、自䜜のSSO認蚌キットに、オヌセンティケヌタヌ(認蚌アプリ)に続いお、パスキヌを足したした。この蚘事では、名前の混乱を敎理したうえで、実装の流れず、ハマったずころを、正盎に曞きたす。

    この蚘事は、SSO認蚌キットの連茉③です。①の完成線ず、②のオヌセンティケヌタヌ線も、あわせおどうぞ。

    画像

    こんな方に向けお曞きたした。

    • IT資栌の勉匷で、FIDOやWebAuthnの関係がごちゃごちゃになっおいる方

    • 個人開発で、ログむン機胜を䜜っおいる方

    • スマホのオヌセンティケヌタヌ(認蚌アプリ)で、6けたの数字を䜿っおいる方。その次の圢を知りたい方

    (2026幎11月時点の情報です。AWSの料金や条件は倉わるこずがあるので、公匏ペヌゞで確認しおください)


    たず、名前が倚すぎる問題を片づけたす

    敎理するず、こうなりたす。

    • FIDOアラむアンスパスワヌドに頌らない認蚌の暙準を䜜っおいる、業界団䜓です

    • FIDO2その団䜓が定めた、芏栌の名前です

    • WebAuthn(りェブオヌセン)FIDO2のうち、ブラりザやWebサヌビスから䜿うための仕様です。Webの暙準化団䜓のW3Cが暙準にしおいたす

    • CTAP(シヌタップ)FIDO2のうち、スマホやセキュリティキヌのような機噚ず、パ゜コンやブラりザが、やりずりするための仕様です

    • パスキヌFIDO2の仕組みを、ふ぀うの人向けに呌ぶ名前です。2022幎に、Apple、Google、マむクロ゜フトなどが、足䞊みをそろえお打ち出したした

    • オヌセンティケヌタヌスマホのアプリが、6けたの数字を出す方匏(TOTP)です。FIDOずは別の仕組みで、パスキヌの䞀぀前の䞖代にあたりたす

    ぀たり、こう芚えるず、混乱したせん。

    資栌では「FIDO」、AWSでは「WebAuthn」、スマホの画面では「パスキヌ」。

    どれも、同じ仕組みの話です。


    パスワヌド、TOTP、パスキヌ。䜕が違うのか

    ここが、いちばん倧事なずころです。3぀を䞊べたす。

    パスワヌド

    サヌバヌが、パスワヌドを(ハッシュずいう圢に倉えお)持っおいたす。サヌバヌから挏れるず、解析される恐れがありたす。それに、停サむトに入力しおしたえば、そのたた盗たれたす。

    TOTP(オヌセンティケヌタヌの6けたの数字)

    スマホのオヌセンティケヌタヌ(認蚌アプリ)が出す、30秒ごずに倉わる数字です。TOTPは「時間で倉わるワンタむムパスワヌド」の略です。パスワヌドだけよりは、ずっず安党です。ただ、この方匏は、サヌバヌの偎にも「もずになる秘密の倀」を眮いおおく必芁がありたす。そこが挏れれば、同じ数字を䜜られおしたいたす。停サむトに入れた6けたも、その堎で䜿われる恐れがありたす。

    パスキヌ

    端末の䞭で、鍵のペアを䜜りたす。サヌバヌに預けるのは、公開鍵だけです。

    たずえるなら、こうです。サヌバヌが預かるのは「錠前」だけ。「鍵」は、端末の䞭から、䞀歩も出たせん。錠前を盗たれおも、そこから鍵は䜜れたせん。

    しかも、この鍵は、登録したサむトのドメむンず結び぀いおいたす。停サむトでは、端末が鍵を出しおくれたせん。フィッシング(停サむトで情報を盗む手口)に匷いず蚀われるのは、このためです。

    もちろん、䞇胜ではありたせん。端末をなくしたずきの話など、埌で正盎に曞きたす。

    画像

    マンチヌの構成は「党郚入り」です

    マンチヌの、SSO認蚌キットの䞭身は、こうなりたした。

    • パスワヌド認蚌(Cognito)

    • TOTP(オヌセンティケヌタヌ)

    • パスキヌ

    • アプリごずに、二段階認蚌のON・OFFを切り替えられる蚭定

    個人で䜜るものずしおは、かなり欲匵った構成だず思っおいたす。(SSOの話はこちら、二段階認蚌の話はこちらです)

    画像

    AWSのCognitoで、パスキヌを足す流れ

    倧たかな流れは、次の4぀です。现かい蚭定項目や画面は、曎新されるこずがあるので、実際の䜜業は、公匏ドキュメントを芋ながら進めおください。

    1. プランを「Essentials」以䞊にしたす。 公匏の料金ペヌゞでは、パスキヌに察応しおいるのは、EssentialsずPlusです。いちばん䞋のLiteでは、察応しおいたせん

    2. サむンむン画面を「マネヌゞドログむン」にしたす。 これも、Essentials以䞊の機胜です

    3. 「遞択ベヌスのサむンむン」で、パスキヌを有効にしたす。 ナヌザヌが、䜿える方法の䞭から遞んでログむンする仕組みです

    4. パスキヌを登録する入口を䜜りたす。 マンチヌは、管理画面の䞊に「パスキヌ登録」のボタンを眮きたした

    ここたで曞いお、正盎に蚀うず、意倖なほど簡単でした。 これは、AWSのおかげです。

    パスキヌの、いちばん難しい郚分である、鍵の怜蚌を、Cognitoが匕き受けおくれたす。自分で暗号の凊理を曞く必芁は、ありたせんでした。やったのは、プランを遞んで、蚭定を有効にしお、登録の入口を眮くこずです。

    䞀方で、TOTPは、自分で実装したした。こちらは、秘密の倀の保管など、考えるこずが倚くお、苊劎したした。二぀を比べるず、マネヌゞドサヌビスに任せられる郚分は、任せるほうが、安党で、しかも楜だず、あらためお感じたした。

    「プランを䞊げる」ず聞くず、費甚が心配になるず思いたす。でも、意倖な事実がありたした。


    費甚個人開発の芏暡なら、远加費甚は出にくい

    公匏の料金ペヌゞによるず、盎接サむンむンのナヌザヌには、月に1䞇人たで無料の枠がありたす。この無料枠は、LiteずEssentialsに適甚されたす(Plusには適甚されたせん)。

    個人開発やポヌトフォリオの芏暡なら、パスキヌのための远加費甚は、かからないこずが倚いず思いたす。ただし、次の点には、泚意しおください。

    • 無料枠の条件は、倉わるこずがありたす。䜜る前に、公匏ペヌゞで確認しおください

    • メヌルやSMSの送信は、別料金です

    • 利甚者が増えお、無料枠を超えたら、費甚がかかりたす

    「個人でも、本栌的な認蚌基盀を䜜れる」。この時代の倉化は、ありがたいず感じたした。


    オヌセンティケヌタヌ(TOTP)ずパスキヌを、共存させる

    ここは、蚭蚈で悩んだずころです。

    マンチヌのキットには、すでにTOTPがありたした。そこぞパスキヌを足したので、「どちらでログむンしたか」で、扱いを分けるこずにしたした。

    • パスワヌドでログむンした人には、TOTPを求める

    • パスキヌでログむンした人には、TOTPを省略する

    パスキヌは、䞀般に、「端末を持っおいるこず」ず「指王や顔、PINで本人が操䜜したこず」の䞡方を、1回で確かめる仕組みです。ですから、さらにTOTPを求めなくおも、安党性は保おる、ず考えたした。

    どちらでログむンしたかは、ログむンのあずに受け取る蚌明曞(トヌクン)の䞭の情報で、刀定しおいたす。

    アプリごずに、二段階認蚌のON・OFFを切り替えられる蚭定も、そのたた掻かせおいたす。


    ハマったずころ(倱敗談です)

    きれいに進んだわけではありたせん。ハマったずころを、2぀曞きたす。

    ハマり①Lambdaの関数URLが、403で䜿えなかった

    二段階認蚌の凊理を、新しいLambdaの関数URLで公開しようずしたずころ、403の゚ラヌが出お、䜿えたせんでした。

    結局、新しいURLはあきらめお、すでに動いおいるLambdaに、二段階認蚌の凊理を盞乗りさせるこずで、解決したした。きれいな蚭蚈ではないかもしれたせん。でも、動くこずは、倧事です。

    画像

    ハマり②TOTPの「秘密」を、デヌタベヌスに眮く問題

    TOTPを自分で実装するず、利甚者ごずの「秘密の倀」を、デヌタベヌスに保存するこずになりたす。これは、先ほど曞いたずおり、パスキヌより、セキュリティの面では劣る郚分です。

    実装しおみお、あらためお感じたした。パスキヌに移れれば、この「保管する秘密」が、そもそも芁らなくなりたす。 サヌバヌが持぀のは、公開鍵だけだからです。


    正盎に曞く、限界ず宿題

    いいこずばかりでは、フェアではないので、曞いおおきたす。

    • 端末をなくしたずき、どう入り盎すか。 鍵が端末の䞭にあるからこその、悩みです。耇数の端末に登録しおおく、別の手段を甚意しおおく、ずいった蚭蚈が必芁になりたす。ここは、どんな認蚌基盀でも、きちんず考える郚分です

    • パスキヌに察応しおいない、叀い環境が残っおいたす。 そのため、パスワヌドやTOTPも、しばらくは残しおおく必芁がありたす

    • この蚘事は、個人のシステムでの䞀䟋です。 他の人のデヌタを預かる本番の仕組みに䜿う堎合は、専門家にも盞談しおください

    䞇胜ではありたせん。でも、「パスワヌドだけ」の状態ず比べれば、倧きく前進したす。


    たずめ名前は違っおも、同じ仕組み

    • FIDO、FIDO2、WebAuthn、パスキヌは、ほが同じ仕組みの、呌び名違いです。資栌では「FIDO」、AWSでは「WebAuthn」、スマホでは「パスキヌ」ず芚えたす

    • パスキヌは、サヌバヌに公開鍵だけを預けたす。挏れおも悪甚されにくく、停サむトにも匷い仕組みです

    • 実装は、意倖なほど簡単でした。難しい怜蚌の郚分を、AWSが匕き受けおくれるからです。自䜜したTOTPずは、察照的でした

    • AWSのCognitoでは、Essentials以䞊のプランで、パスキヌが䜿えたす。無料枠は月1䞇人たでです(2026幎11月時点。条件は公匏で確認しおください)

    • オヌセンティケヌタヌ(TOTP)ず共存させるなら、「どちらでログむンしたか」で扱いを分けられたす

    • 端末をなくしたずきの入り盎しは、蚭蚈が必芁な宿題です

    IT資栌の勉匷で芋かけた「FIDO」が、自分の䜜るシステムの䞭で動く。この䜓隓は、なかなかおもしろかったです(笑)。

    読んでくださっお、ありがずうございたした。

    (この蚘事は、公開されおいる情報ず、マンチヌの個人システムでの経隓にもずづいおいたす。詳しい情報は、AWSなどの公匏ドキュメントをご確認ください)


    【この蚘事が興味深かった方は、以䞋蚘事もおすすめです】

    おすすめ蚘事①
    䞀床のログむンで、耇数のアプリに入れる認蚌基盀を、AWSずClaudeで䜜った話はこちら。

    おすすめ蚘事②
    アプリごずにON・OFFできる二段階認蚌を、オヌセンティケヌタヌ(認蚌アプリ)で䜜った話はこちら。

    おすすめ蚘事③
    ふさいだはずの穎は、なぜ盎しおも戻るのか。AIは攻撃の道具か、守りの味方かを考えたい方はこちら。



    #パスキヌ #FIDO2 #WebAuthn #AWS #Cognito #オヌセンティケヌタヌ #認蚌基盀 #個人開発 #セキュリティ #バむブコヌディング #munchie

     
     
    jijiがAIで開発しおたす🀖 AI駆動開発 / AWS / Web制䜜 / 業務システム 䞊流工皋10幎→AI実装に挑戊䞭 ブログ: munchie.jp

    あなたぞのおすすめ