0Pricing
AI SaaS Builder · レッスン

ユーザー認証と認可

安全なログインシステムを実装し、さまざまな機能やデータへのユーザーアクセスを制御します

「ユーザー認証と認可」はCoddyKit上の無料AI SaaS Builderレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI SaaS Builder学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI SaaS Builderコースには全4レッスンが含まれています。

安全なアクセスへようこそ

このレッスンでは、ユーザー認証と認可について詳しく学びます。適切なユーザーだけが適切な機能にアクセスできるようにするため、特にAI SaaSを含む安全なアプリケーションには欠かせません。

限定されたAIクラブの用心棒と招待者リストをイメージしてください。

本人確認

認証(AuthN)とは、ユーザーの身元を確認するプロセスです。これは「あなたは本当に名乗っている本人ですか」という問いに答えるものです。

  • ユーザー名/パスワード: 最も一般的な方法です。
  • OAuth: GoogleやFacebookなどのアカウントでログインします。
  • 生体認証: 指紋認証や顔認証です。

認証が完了すると、システムはユーザーが誰なのかを把握できます。

何が許可されていますか

認可(AuthZ)は、認証されたユーザーが何を実行またはアクセスできるかを決定します。これは「あなたが誰か分かったところで、どのような権限がありますか」という問いに答えるものです。

たとえば、管理者ユーザーはすべての設定にアクセスできますが、一般ユーザーは自分のデータだけを閲覧できます。

パスワードを安全に保管する

ユーザーのパスワードを平文で保存してはいけません。代わりに、ハッシュ化と呼ばれる一方向の暗号学的関数を使用します。ハッシュ化によって、パスワードは固定長の文字列に変換されます。

データベースが侵害されても、攻撃者が入手できるのは実際のパスワードではなく、そのハッシュだけです。ハッシュから元のパスワードを復元することはできません。

ハッシュ化を実際に試す

これは、パスワードをハッシュ化する方法を示す簡略化したJavaの例です。実際のアプリケーションでは、bcryptやArgon2などのより堅牢なアルゴリズムを使用し、セキュリティをさらに高めるために「ソルト」を追加することがよくあります。

この例を実行してみましょう。

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.nio.charset.StandardCharsets;

public class Main {
  public static void main(String[] args) {
    String password = "mySecretPassword123";
    try {
      MessageDigest digest = MessageDigest.getInstance("SHA-256");
      byte[] encodedhash = digest.digest(
        password.getBytes(StandardCharsets.UTF_8));

      StringBuilder hexString = new StringBuilder(2 * encodedhash.length);
      for (int i = 0; i < encodedhash.length; i++) {
        String hex = Integer.toHexString(0xff & encodedhash[i]);
        if(hex.length() == 1) {
          hexString.append('0');
        }
        hexString.append(hex);
      }
      System.out.println("Original: " + password);
      System.out.println("Hashed:   " + hexString.toString());
    } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
    }
  }
}

従来のセッション

多くのWebアプリケーションでは、セッションベース認証が使用されています。ユーザーがログインすると、サーバーは一意のセッションIDを作成して(多くの場合はデータベースに)保存し、それをCookieとしてクライアントに送信します。

以降のリクエストでは、クライアントがセッションIDを送信し、サーバーがそれを検証します。この方法では、状態をサーバー側で管理します。

JWTの概要

スケーラブルなAPI、特にマイクロサービスでは、JSON Web Token(JWT)がよく使われます。JWTはステートレスであるため、サーバーがセッション情報を保存する必要はありません。

JWTにはユーザーに関する情報(クレーム)が含まれ、サーバーによって署名されてクライアントに送信されます。クライアントはすべてのリクエストにJWTを含めます。

JWTの構造

JWTは、ドットで区切られた3つの部分で構成されます。

  • Header: トークンの種類(JWT)と署名アルゴリズム(例: HS256)です。
  • Payload: ユーザーID、ロール、有効期限などの「クレーム」が含まれます。
  • Signature: トークンが改ざんされていないことを検証するために使用します。Header、Payload、秘密鍵を使って作成されます。

Signatureはセキュリティにおいて重要な役割を果たします。

RBACによるアクセス管理

ロールベースアクセス制御(RBAC)は、一般的な認可モデルです。ユーザーにロール(例: 「admin」「editor」「viewer」)を割り当て、ロールに特定の操作を実行する権限を付与します。

  • Admin: あらゆるデータの作成、読み取り、更新、削除ができます。
  • Editor: 自分のデータを作成、更新できます。
  • Viewer: データの読み取りだけができます。

これにより、多数のユーザーの権限を簡単に管理できます。

APIの認可ロジック

バックエンドでは、ユーザーの認証後に、特定のAPIエンドポイントへのアクセス権を確認します。通常は、次の処理を行うミドルウェアやインターセプターを使用します。

  1. JWTまたはセッションからユーザーのロール/権限を取り出します。
  2. ユーザーのロールに、要求された操作の権限があるか確認します。
  3. 権限がなければアクセスを拒否します(例: 403 Forbiddenエラーを返します)。

確認してみましょう

AI SaaSでプレミアム機能にアクセスしようとしているユーザーについて考えてみましょう。

バックエンドを保護する

よくできました。これで、ユーザー認証と認可の基本概念を学びました。

  • 認証: ユーザーが「誰であるか」を確認します。
  • 認可: ユーザーが「何をできるか」を決定します。
  • 安全なパスワードハッシュ化、セッションベース認証とステートレスなJWT認証の違い、権限管理のためのRBACについて学びました。

これらを正しく実装することは、安全でスケーラブルなAI SaaSバックエンドを構築するうえで不可欠です。

よくある質問

「ユーザー認証と認可」レッスンは無料ですか?

はい。「ユーザー認証と認可」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI SaaS Builderコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI SaaS Builderコースには全4レッスンが含まれています。

「ユーザー認証と認可」で何を学びますか?

安全なログインシステムを実装し、さまざまな機能やデータへのユーザーアクセスを制御します ブラウザで直接実行するハンズオンコードでAI SaaS Builderを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AI SaaS Builderを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAI SaaS Builderは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「ユーザー認証と認可」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAI SaaS Builderレッスンでコードを書いて実行できますか?

はい。すべてのAI SaaS Builderレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. RESTful APIの設計
  2. SaaSのデータベース管理
  3. ユーザー認証と認可
  4. AIリクエストのレート制限とキューイング
← AI SaaS Builderに戻る