NodeJSを利用した認証システム

Susan Sarandon
Susan Sarandonオリジナル
2025-01-10 10:54:42177ブラウズ

Authentication System Using NodeJS

導入

認証は、ユーザーの身元を特定し、アプリケーションによって提供されるリソースへのアクセスを許可するプロセスです。バックエンド開発では、
認証は、ユーザーに特定のリソースへのアクセスを許可または制限するという重要な役割を果たします。

認証は 2 つの方法で実行できます: -

  • トークンベースの認証。

  • セッションベースの認証。

ここでは、トークンベースの認証について説明します。

トークンベースの認証

トークンベースの認証は、セキュリティを損なうことなくユーザーに堅牢なエクスペリエンスを提供するために広く使用されているセキュリティ メカニズムです。

トークンベースの認証では、ユーザーがログインするとサーバーがユーザーに固有のトークンを生成します。サーバーがトークンを生成すると、トークンはクライアントに送信され、クライアントのシステムにローカルに保存されます。クライアントがリクエストを行うたびに、このトークンが各リクエストに含まれ、ユーザーの身元を確認します。

認証プロセス

  1. REQUEST - ユーザーがアプリケーションにログインすると、ブラウザはユーザーの資格情報を使用してサーバーにリクエストを作成しました。

  2. 検証 - リクエストがサーバーに届くと、サーバーはユーザーを検証し、トークンとして知られる秘密鍵を生成し、HTTP 経由でユーザーに送信します。
    通常、トークンはヘッダー、ペイロード、署名で構成される JWT [jsonWebTokens] オープン標準で送信されます。

  3. VALIDATE TOKEN - ユーザーがトークンのシークレット コードを受信すると、ユーザーがリクエストを行うたびに身元を確認するのに役立つため、そのコードがクライアントのブラウザーに保存されます。このトークンは有効期間が 15 ~ 60 分と短く、アクセス トークン コードとも呼ばれます。ユーザーがアクセス トークン コードを使用できない場合、システムに 3 ~ 4 日間保持されるリフレッシュ トークン コードが要求されます。

  4. RESPONSE - 検証が完了すると、トークンがユーザーに特定のコンテンツへのアクセスを許可または制限します。


例を見てみましょう。登録とログインの方法論を使用してトークンベースの認証を実装します。

まず、ユーザーの登録モジュールの機能を作成します:-

STEP1: - ユーザー登録
登録は、アカウントを作成するためにユーザーからデータを収集します

// FIRSTLY, WE'LL SELECT THE REGISTER FORM
const form = document.querySelector(".register");

// ADDING EVENT LISTENER TO FORM TO COLLECT THE VALUES FROM USER
form.addEventListener("submit", (e) => {

  e.preventDefault();
  const username = e.target.username.value;
  const email = e.target.email.value;
  const password = e.target.password.value;

});

STEP2: - パスワードの暗号化

ユーザーのデータをデータベースに保存する前に、セキュリティ目的でパスワードを暗号化してからデータベースに保存する必要があります。

パスワードの暗号化には、npm package bcryptを使用します。

まず、ターミナルに次のように書いてパッケージをインストールする必要があります: -
npm install bcrypt

次に、パスワードを次のようにハッシュ化します

// FIRSTLY, WE'LL SELECT THE REGISTER FORM
const form = document.querySelector(".register");

// ADDING EVENT LISTENER TO FORM TO COLLECT THE VALUES FROM USER
form.addEventListener("submit", (e) => {

  e.preventDefault();
  const username = e.target.username.value;
  const email = e.target.email.value;
  const password = e.target.password.value;

});

bcrypt.hash はパスワードをソルトラウンドでハッシュ化する関数です。 2 人のユーザーのいずれかが同じパスワードを持つたびに、異なるハッシュ キーを生成します。

ログイン機能

ユーザーがログインしようとすると、データベースからハッシュされたパスワードが取得され、ログイン中にユーザーが指定したパスワードと比較されます

//  IMPORTING BCRYPT MODULE
const bcrypt=require('bcrypt');


// ASSIGNING USERS PASSWORD 
const plainPassword=userPassword

// ENCRYPTING PASSWORD
// BASIC SYNTAX
// bcrypt.hash(plainTextPassword,salt_rounds)

const hashedPassword=bcrypt.hash(plainPassword,10);

if(!hashedPassword){
    throw new Error('Enable to generate password')
}

// NOW WE WILL SAVE USER DETAILS AND PASSWORD TO DATABASE
console.log('Hashed Password is : ',hashedPassword)

以上がNodeJSを利用した認証システムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。