1. ホーム
  2. 記事一覧
  3. 【脱初心者】ログイン機能の仕組み説明できますか?

2023.01.07

【脱初心者】ログイン機能の仕組み説明できますか?

「ログイン機能」という言葉を聞いて、どんな機能なのかがわかる方は多いと思います。しかし「ログイン機能の仕組みを説明せよ」と言われると困ってしまう方もたくさんいるのではないでしょうか?

そもそもログイン機能とは?

まずはログイン機能と、その必要性について説明します。

ログイン機能とは「ユーザーと、データーベースの持つユーザー情報を結びつけるために行う認証作業」です。ログイン機能があることによりユーザーそれぞれの画面を表示させたり、閲覧できる人を制限するなどの機能を付与することが出来ます。

Twitterを例に挙げてみましょう。

Twitterには自分のツイートを投稿したり、自分以外の投稿を見て「いいね」を押したりする機能があります。ではもし、Twitterにログイン機能がなければどうなるでしょうか?

「”A”という投稿は”B”さんが投稿したもの」という紐付けが出来なくなってしまいます。これでは自分の投稿の履歴はもちろん見れませんし、自分以外の投稿も「誰が」投稿したものか分かりません。「いいね」機能に関しても、誰に「いいね」をしたのか、誰から「いいね」を押されたのか、認識できません。このように、ログイン機能とはそれぞれのユーザーが個別に行った変更を反映したり、履歴を見たりするために必要な機能です。また、データーベースに登録されている情報を守るという大事な役割もあります。

ログインの仕組み

では、ログインの仕組みはどうなっているのでしょうか?ログインの仕組みはいくつかありますが、今回はCookieを使ったログインの仕組みについて説明します。

ログインは、ユーザーが入力したユーザーIDとパスワードをユーザー情報が登録されているデーターベースに問い合わせ、一致した場合にログイン完了後のページを送信します。ログインに使う情報は「ユーザーID+パスワード」の組み合わせ以外にも「メールアドレス+パスワード」など、アプリによって様々です。

セッションとは?

ログインの仕組みを説明するときに、必ずと言っていいほど出てくる言葉に「セッション」と呼ばれるものがあります。

例えばショッピングサイトでの買い物を例に挙げます。ユーザーは以下の作業を行います。

  1. ショッピングサイトにアクセスする
  2. ログインする
  3. 買い物かごに商品を入れる
  4. 購入する
  5. ログアウトする

この一連の流れをセッションと呼びます。

もしくは、ショッピングサイトにアクセスしたユーザーとWebサーバー間の状態を管理する仕組みとしてセッションという言葉が使われたり、通信の始まりから終わりという意味合いもあります。

このセッションを実現するために欠かせないのが「セッションID」です。

セッションIDはサーバーが生成するIDで、「ログインしたユーザー」と「生成したセッションID」を紐づけた状態でサーバーに保存されます。セッションIDはログイン後のページと一緒にユーザーのブラウザに送られます。

送られたセッションIDは「Cookie」と呼ばれる場所に保管され、ブラウザを閉じるか、サーバーが指定した有効期限まで有効になります。

Cookieとは?

先ほどセッションの説明の時に「Cookie(クッキー)」という言葉が出てきました。このCookieとはユーザーのコンピュータに保存される小さなファイルのことで、CookieにはIDやWebサイトの閲覧情報などを一時的に記録することができます。HTTPというのは通信状態を維持することが出来ないプロトコルです。しかしショッピングサイトのようにログイン状態を維持したい場面があり、それに対応するためにCookieが生まれました。このCookieの中に情報が残っているため、しばらく時間が経ってから再度Webサイトを訪問した時に自動的にログインすることが出来ます。(Cookieの有効期限や、サーバーによってどのくらいの時間ログイン状態を維持できるのかは異なります。)

そのままのパスワード(平文)は危険

先ほど「ユーザーが入力したユーザーIDとパスワードをユーザー情報のあるサーバーに問い合わせ、一致した場合にログイン完了後のページを送信します」と記載しましたが、実はこれをそのまま行ってしまうのはとても危険です。なぜなら悪意のある攻撃者が侵入してきてデーターベースの中を見たときに、パスワードが丸見えの状態になるからです。侵入者はユーザー本人になりすましてログインが出来るようになってしまいます。

特に、ショッピングサイトなどではクレジットカードの情報、住所や個人情報など、第三者に見られると困る情報をたくさん登録しています。それらの情報を悪意のある第三者が見るかもしれないと思うと、安心してショッピングサイトを利用できなくなってしまいます。そこで、セキュリティを高めるために利用されるのが、「ハッシュ化」です。

ハッシュ化とは?

ハッシュ化とは、簡単に説明すると「パスワードを不規則な文字列に置換する処理」の事を指します。ハッシュ化を施すアルゴリズムは「ハッシュ関数」と呼ばれ、ハッシュ関数によって生成されるランダムな文字列は「ハッシュ値」と呼ばれます。

このハッシュ化と混同されがちなのが「暗号化」です。暗号化も、ハッシュ化と同じようにデータが読み取られないようにする技術ですが、全く別の技術です。

暗号化は「鍵」と呼ばれるものを使って、暗号化したり暗号化したものを元に戻したり(複合化)します。つまり、両方向に変換が可能です。

一方のハッシュ化はハッシュ値への変換は簡単にできますが、元に戻すことは非常に困難です。暗号化との大きな違いは、この「一方向か」「両方向か」です。

まとめ

今回は、ログインの機能や仕組みについて解説しました。

「どういう仕組みなのか」を理解できると、自分でアプリを作るときにとても役に立ちます。

ログインの仕組みをなんとなく理解しているという方も、今回の記事を機に、是非より深い知識を身に着けていただけると幸いです。

【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

IT未経験者必見 USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。

「フリーランスエンジニア」

近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。

「成功する人とそうでない人の違いは何か?」

私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。

比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。

多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、

note記事3000いいね超えの殿堂記事 今すぐ読む

エンベーダー編集部

エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

RareTECH 無料体験授業開催中! オンラインにて実施中! Top10%のエンジニアになる秘訣を伝授します! RareTECH講師への質疑応答可

関連記事