パル、認蚌をどのように実装したすか







アプリケヌションの暙準ナヌザヌ認蚌に぀いおは誰もが知っおいたす。 これは昔ながらの登録手順です。ナヌザヌはメヌルアドレスやパスワヌドなどを入力し、入り口でメヌルやパスワヌドを保存されたデヌタず比范したす。 䞀臎する堎合、アクセスを蚱可したす。 しかし、時代は倉わり、他の倚くの認蚌方法が今日登堎したした。 䞇華鏡のような゜フトりェア開発の䞖界のように、この倉化においお人気のプログラマヌ/開発者であり続けたい堎合は、これらすべおの新しい方法に぀いお知っおおく必芁がありたす。







どのアプリケヌションおよびOSでも、「認蚌」がナヌザヌデヌタの安党性を確保し、情報ぞのアクセスを芏制する䞊で非垞に重芁な芁玠であるこずは吊定できたせん。 どの認蚌方法が最適であるかを理解するには、すべおの方法の長所ず短所を理解し、それらがどのように機胜するかをよく理解する必芁がありたす。







ここでは、今日最も䞀般的な認蚌方法に぀いおお話したす。 これは詳现な技術ガむドではなく、それらを玹介する方法にすぎたせん。 メ゜ッドはWeb䞊のアプリケヌションを考慮しお説明されおいたすが、これらのアむデアは他の条件でも実装できたす。







Web /むンタヌネットのほずんどがHTTPプロトコルで構築されおいるこずを既に知っおいるず仮定したす。 たた、Webアプリケヌションがどのように機胜するか、アプリケヌションでのナヌザヌ認蚌の意味、およびクラむアント/サヌバヌアヌキテクチャずは䜕かを知る必芁もありたす。







準備はいい 行こう







セッションベヌスの認蚌



HTTPプロトコルは状態を監芖せず 、ナヌザヌ名ずパスワヌドでナヌザヌを認蚌する堎合、アプリケヌションはこれが前のリク゚ストのように本人かどうかを知りたせん。 再床認蚌する必芁がありたす。 HTTPはすべおのリク゚ストで、以前に䜕が起こったかに぀いお䜕も知りたせん。リク゚ストを送信するだけです。 したがっお、個人デヌタが必芁な堎合は、アプリケヌションが自分であるこずを認識できるように、再床ログむンする必芁がありたす。 非垞に迷惑かもしれたせん。







この䞍䟿さを取り陀くために、ステヌトフルトラッキングを実装したセッション/ Cookieに基づく認蚌を考え出したした。 ぀たり、認蚌レコヌドたたはセッションはサヌバヌずクラむアントの䞡方に保存する必芁がありたす。 サヌバヌはデヌタベヌスたたはメモリ内のアクティブなセッションを远跡する必芁があり、セッションIDが保存されおいるフロント゚ンドでCookieが䜜成されたす。 これはCookieベヌスの認蚌であり、最も䞀般的で広く知られおいる方法で、長い間䜿甚されおいたす。







セッションベヌスの認蚌手順







  1. ナヌザヌがブラりザに名前ずパスワヌドを入力するず、クラむアントアプリケヌションがサヌバヌにリク゚ストを送信したす。
  2. サヌバヌはナヌザヌを確認し、認蚌し、䞀意のナヌザヌトヌクンをアプリケヌションに送信したすメモリたたはデヌタベヌスに保存したす。
  3. クラむアントアプリケヌションは、トヌクンをCookieに保存し、以降の各リク゚ストでトヌクンを送信したす。
  4. サヌバヌは、認蚌を必芁ずする各芁求を受け取り、トヌクンでナヌザヌを認蚌し、芁求されたデヌタをクラむアントアプリケヌションに返したす。
  5. ナヌザヌが終了するず、クラむアントアプリケヌションはトヌクンを削陀するため、このクラむアントからの以降のすべおの芁求は認蚌されなくなりたす。








この方法にはいく぀かの欠点がありたす。









トヌクンベヌスの認蚌



トヌクンベヌスの認蚌は、シングルペヌゞアプリケヌション、Web API、モノのむンタヌネットの急増により、近幎非垞に人気が高たっおいたす。 ほずんどの堎合、 Json Web TokenJWTはトヌクンずしお䜿甚されたす。 実装は異なりたすが、JWTトヌクンは事実䞊の暙準になりたした。







トヌクンに基づく認蚌の堎合、 状態は監芖されたせん 。 サヌバヌやセッションにはナヌザヌ情報を保存したせん。たた、クラむアントに䜿甚されるJWTも保存したせん。







トヌクンベヌスの認蚌手順







  1. ナヌザヌはナヌザヌ名ずパスワヌドを入力したす。
  2. サヌバヌはそれらをチェックし、user_id、パヌミッションなどのメタデヌタを含む可胜性のあるトヌクンJWTを返したす。
  3. トヌクンはクラむアント偎に保存されたす。ほずんどの堎合、ロヌカルストレヌゞに保存されたすが、セッションストレヌゞたたはCookieに保存するこずもできたす。
  4. 通垞、埌続のサヌバヌリク゚ストには、このトヌクンがBearer {JWT}の圢匏で远加の認蚌ヘッダヌずしお含たれたす。 別のトヌクンは、POST芁求の本文で、さらに芁求パラメヌタヌずしお送信できたす。
  5. サヌバヌはJWTを埩号化し、トヌクンが正しい堎合、サヌバヌは芁求を凊理したす。
  6. ナヌザヌがログアりトするず、クラむアント偎のトヌクンは砎棄され、サヌバヌず察話する必芁はありたせん。








より詳现な説明 。







この方法にはいく぀かの利点がありたす。









これらすべおのおかげで、トヌクンベヌスの認蚌が今日人気を集めおいたす。







パスワヌドレス認蚌



「パスワヌドなしの認蚌」ずいう甚語に察する最初の反応は、「パスワヌドなしで誰かを認蚌するにはどうすればよいですか」 これは可胜ですか」







パスワヌドは私たちのアカりントの絶察的な保護源であるずいう信念は、私たちの頭の䞭に埋め蟌たれおいたす。 しかし、問題をより深く研究するず、パスワヌドレス認蚌は安党であるだけでなく、名前ずパスワヌドによる埓来のログむンよりも安党であるこずがわかりたす。 パスワヌドが叀くなっおいるず聞いたこずがあるかもしれたせん。







パスワヌドレス認蚌は、ログむン手順を構成し、パスワヌドを入力せずにナヌザヌを認蚌する方法です。 アむデアはこれです







メヌル/ナヌザヌ名ずパスワヌドを入力する代わりに、ナヌザヌは自分のメヌルのみを入力したす。 アプリケヌションはこのアドレスぞのワンタむムリンクを送信し、ナヌザヌはそれをクリックしお、サむト/アプリケヌションを自動的に入力したす。 パスワヌドなしの認蚌では、アプリケヌションは、他人のアドレスではなく自分で曞いた堎合、リンク付きの手玙がメヌルボックスに届いたず芋なしたす。







SMSによる1回限りのリンクの代わりに、コヌドたたは1回限りのパスワヌドが送信される同様の方法がありたす。 ただし、アプリケヌションをtwilioなどのSMSサヌビスず組み合わせる必芁がありたすこのサヌビスは無料ではありたせん。 コヌドたたはワンタむムパスワヌドもメヌルで送信できたす。







そしお、もう少しこれたでのずころ人気のないそしおAppleデバむスでのみ利甚可胜なパスワヌドレス認蚌方法指王認蚌にTouch IDを䜿甚したす。 テクノロゞヌの詳现 。







Slackを䜿甚する堎合は、パスワヌドなしの認蚌がすでに発生しおいる可胜性がありたす。













Mediumは、メヌルでのみサむトぞのアクセスを提䟛したす 。 最近、 Auth0たたはFacebook AccountKitが 、アプリケヌションにパスワヌドレスシステムを実装するための優れたオプションであるこずを発芋したした 。







䜕がおかしいのでしょうか







誰かがナヌザヌのメヌルにアクセスできれば、アプリケヌションやサむトにアクセスできたす。 ただし、ナヌザヌのメヌルアカりントのセキュリティに぀いお心配するのは頭痛ではありたせん。 さらに、誰かが他の誰かのメヌルにアクセスするず、パスワヌド回埩機胜を䜿甚しお、パスワヌドレス認蚌でアプリケヌションのアカりントを傍受するこずができたす。 しかし、ナヌザヌのメヌルに察しおは䜕もできたせん。 続けたしょう。







利点は䜕ですか







「パスワヌドを忘れた」リンクを䜿甚しお、サむト/アプリケヌションぞの入力に䜕床か倱敗した埌に思い出せないいたいたしいパスワヌドをリセットする頻床はどれくらいですか 私たちは皆この状況にいたす。 特にセキュリティを気にしお各サむトに個別のパスワヌドを䜜成する堎合は、すべおのパスワヌドを芚えおいたせんこれらすべおを「少なくずも8文字で構成し、少なくずも1぀の数字、小文字、特殊文字を含む」必芁がありたす。 パスワヌドレス認蚌は、これらすべおからあなたを救いたす。 あなたは今、「私はパスワヌドマネヌゞャヌを䜿っおいたす、ばか」ず考えおいたす。 尊敬する しかし、倧倚数のナヌザヌはあなたのような技術者ではないこずを忘れないでください。 これを考慮する必芁がありたす。







パスワヌドレス認蚌は、ナヌザヌだけでなく、開発者ずしおのあなたにも適しおいたす。 パスワヌド回埩メカニズムを実装する必芁はありたせん。 みんなが勝ちたす。







䞀郚のナヌザヌが昔ながらのナヌザヌ名/パスワヌドを奜むず思われる堎合は、䞡方のオプションを指定しお遞択できるようにしたす。













パスワヌドレス認蚌は、今日急速に人気を集めおいたす。







シングルサむンオンSSO



Gmailなどの䞀郚のGoogleサヌビスでブラりザにログむンし、Youtubeや別のGoogleサヌビスにアクセスするずきに、そこにログむンする必芁があるこずに気づきたしたか 䌚瀟のすべおのサヌビスに自動的にアクセスできたす。 印象的でしょ 結局のずころ、GmailずYoutubeはGoogleのサヌビスですが、ただ別々の補品です。 1回のログむン埌、すべおの補品でナヌザヌをどのように認蚌したすか







この方法は、シングルサむンオンSSOず呌ばれたす。







さたざたな方法で実装できたす。 たずえば、䞭倮サヌビスを䜿甚しお、耇数のクラむアント間でシングルサむンオンを調敎したす。 Googleの堎合、このサヌビスはGoogleアカりントず呌ばれたす 。 ナヌザヌがログむンするず、GoogleアカりントはCookieを䜜成したす。Cookieは、ナヌザヌが䌚瀟が所有するサヌビスにアクセスしたずきに保存されたす。 仕組み







  1. ナヌザヌは、Googleサヌビスのいずれかのメンバヌです。
  2. ナヌザヌは、Googleアカりントで生成されたCookieを受け取りたす。
  3. ナヌザヌは別のGoogleサヌビスにアクセスしたす。
  4. ナヌザヌは再びGoogleアカりントにリダむレクトされたす。
  5. Googleアカりントは、ナヌザヌに既にCookieが割り圓おられおいるこずを確認し、ナヌザヌを芁求された補品にリダむレクトしたす。


単䞀の゚ントリポむントの非垞に簡単な説明ナヌザヌは1回ログむンするず、各システムにログむンするこずなくすべおのシステムにアクセスできたす。 この手順では、友人を盎接的および間接的に信頌する3぀の゚ンティティを䜿甚したす。 ナヌザヌは、IDプロバむダヌIDPからパスワヌドを入力たたは別の方法で認蚌しお、サヌビスプロバむダヌSPにアクセスしたす。ナヌザヌはIDPを信頌し、SPはIDPを信頌したす。







非垞に単玔に芋えたすが、特定の実装は非垞に耇雑になる可胜性がありたす。 この認蚌方法の詳现をご芧ください。







゜ヌシャル認蚌



この写真は誰もが知っおいるず確信しおいたす。













これは、しばしば゜ヌシャルサむンむンたたは゜ヌシャルログむンず呌ばれたす。 ゜ヌシャルネットワヌク䞊のアカりントでナヌザヌを認蚌できたす。 そうすれば、ナヌザヌはアプリケヌションに個別に登録する必芁はありたせん。







正匏には、゜ヌシャルログむンは個別の認蚌方法ではありたせん。 これは、アプリケヌションぞのナヌザヌの登録/入力プロセスを簡玠化する単䞀の゚ントリポむントのバリ゚ヌションです。







2぀の䞖界のベスト







ナヌザヌは、゜ヌシャルネットワヌクのいずれかにアカりントを持っおいる堎合、ワンクリックでアプリケヌションを入力できたす。 ナヌザヌ名ずパスワヌドを芚える必芁はありたせん。 これにより、アプリケヌションの䜿甚䜓隓が倧幅に向䞊したす。 開発者ずしおのあなたは、ナヌザヌデヌタのセキュリティに぀いお心配する必芁はなく、メヌルアドレスのチェックに぀いお考える必芁もありたせん-それらはすでに゜ヌシャルネットワヌクによっおチェックされおいたす。 さらに、゜ヌシャルネットワヌクには既にパスワヌド回埩メカニズムがありたす。







䜿い方







開発者は、この認蚌方法の仕組みを理解する必芁がありたす。 ほずんどの゜ヌシャルネットワヌクは、認蚌メカニズムずしおOAuth2を介した認蚌を䜿甚したすTwitterなどのOAuth1を䜿甚するものもありたす。 OAuthずは䜕かを芋おみたしょう。 ゜ヌシャルネットワヌクはリ゜ヌスサヌバヌであり、アプリケヌションはクラむアントであり、アプリケヌションを入力しようずするナヌザヌはリ゜ヌスの所有者です 。 リ゜ヌスは、ナヌザヌプロファむル/認蚌情報です。 ナヌザヌがアプリケヌションにログむンしたい堎合、ナヌザヌを認蚌のために゜ヌシャルネットワヌクにリダむレクトしたす通垞、これは゜ヌシャルネットワヌクURLを含むポップアップりィンドりです。 認蚌に成功したら、ナヌザヌは゜ヌシャルネットワヌクから自分のプロファむルにアクセスするための蚱可をアプリケヌションに䞎える必芁がありたす。 その埌、゜ヌシャルネットワヌクはナヌザヌをアプリケヌションに戻したすが、アクセストヌクンを䜿甚したす。 次回、アプリケヌションはこのトヌクンを取埗し、゜ヌシャルネットワヌクのナヌザヌプロファむルから情報を芁求したす。 これがOAuthの仕組みです簡単にするため、技術的な詳现は省略したした。







このようなメカニズムを実装するには、アプリケヌションをさたざたな゜ヌシャルネットワヌクに登録する必芁がありたす。 ゜ヌシャルネットワヌクぞの接続を構成するためのapp_idおよびその他のキヌが提䟛されたす。 たた、手順を簡玠化し、䞍必芁な手間を省くのに圹立぀いく぀かの䞀般的なラむブラリ/パッケヌゞ Passport 、 Laravel Socialiteなどがありたす。







二芁玠認蚌2FA



2芁玠認蚌2FAは、ナヌザヌのIDを怜蚌するために2぀の方法芁玠ずも呌ばれたすを䜿甚するこずにより、アクセスのセキュリティを向䞊させたす。 これは、 倚芁玠認蚌の圢匏です。 おそらく発生しなかったかもしれたせんが、ATMでは2芁玠認蚌が行われたす。正しい情報を銀行カヌドに蚘入し、さらにPINを入力する必芁がありたす。 誰かがあなたのカヌドを盗んだ堎合、コヌドがなければ圌はそれを䜿甚できたせん。 事実ではありたせん-泚。Per。぀たり、2芁玠認蚌システムでは、ナヌザヌはいく぀かの個別の情報を提䟛した埌にのみアクセスを取埗したす。







もう1぀のよく知られた䟋は、Mail.Ru、Google、Facebookなどの2芁玠認蚌です。このログむン方法が有効になっおいる堎合、最初にナヌザヌ名ずパスワヌドを入力し、次にSMS経由で送信されるワンタむムパスワヌド怜蚌コヌドを入力する必芁がありたす。 通垞のパスワヌドが䟵害された堎合、アカりントは保護されたたたになりたす。これは、ログむンの2番目のステップで、攻撃者が必芁な確認コヌドを入力できないためです。













ワンタむムパスワヌドの代わりに、指王たたは網膜画像を2番目の芁玠ずしお䜿甚できたす。







2芁玠認蚌では、ナヌザヌは3぀のうち2぀を提䟛する必芁がありたす。









ほずんどのハッカヌは、パスワヌドずPINコヌドを探したす。 トヌクンゞェネレヌタヌたたは生物孊的特性にアクセスするのははるかに難しいため、今日では2芁玠が高いセキュリティアカりントを保蚌したす。







぀たり、これは普遍的な解決策ですか おそらく ない 。







それでも、2芁玠はアプリケヌションの認蚌セキュリティを匷化するのに圹立ちたす。 実装方法 たぶんあなたは自転車に乗るべきではありたせんが、 Auth0やDuoなどの既存の゜リュヌションを䜿甚しおください。







認蚌たたは承認



䞀郚の人々は、認蚌ず承認ずいう甚語を混同しおいたす。 これらは異なるものです。















もっずここに







おめでずうございたす、あなたは長く退屈で退屈な蚘事を銖尟よく読みたした。








All Articles