見出し画像

LaravelのAPI認証をやくざの「仁義を切る」って似てません?

はじめに

最近業務でLaravel のAPI認証を用いた動作確認を業務でやってたことがありましたので勉強がてらに記事にしていこうかなと思います。


今回は、LaravelのAPI認証をやくざの世界に例えて説明してみます。(Youtubeでたまたまやくざの動画を見たので。。)
やくざの世界では、仁義礼儀が非常に重要です。同様に、APIの世界でも適切な認証権限管理が重要です。では、やくざの「仁義を切る」プロセスになぞらえて、LaravelのAPI認証を見ていきます。

「やくざの仁義を切る」とは?

仁義を切る(じんぎをきる)とは、任侠テキヤ香具師博徒渡世人などが初対面の際に交わす挨拶の形式を表現する言葉[1。「仁義」の元の意義としては、人間の行動規範の根本として孔子の説く博愛を意味する「」に正義を意味する「」を合わせて最高のとして孟子の説いたものである。ただし、江戸時代であっても博徒は必ず仁義を切るものでもなく、鉱山等において過酷な重労働に従事する労働者の人足部屋(飯場寄宿舎)では仁義を切って銭をもらったという話もある。
転じて、事をなすにあたって先任者・関係先などに挨拶することや事情を説明しておくこと、事前に連絡を入れておくことも指す。政治の世界においては、あいさつや説明責任の意味あいとなることもある

https://ja.wikipedia.org/wiki/%E4%BB%81%E7%BE%A9%E3%82%92%E5%88%87%E3%82%8B

LaravelのAPI認証の基礎(やくざの世界で例えると)

LaravelのAPI認証では、主に以下の手順を踏みます。

  • ユーザー登録: 新しいメンバー(ユーザー)を組に迎え入れる。

  • ログイン認証: 組の内部にアクセスするための認証を行う。

  • トークン発行: 認証されたメンバーに専用の通行証(トークン)を発行する。

  • アクセス制御: メンバーが適切なエリア(リソース)にアクセスできるように制御する。

ユーザー登録: 新しいメンバーを迎え入れる

やくざの組に新しいメンバーを迎え入れるように、APIでも新しいユーザーを登録します。Laravelでは、ユーザー登録のためにルートやコントローラー、モデルを設定します。

// ルートの設定
Route::post('register', 'YakuzaController@register');

// コントローラーの実装
class YakuzaController extends Controller
{
    public function register(Request $request)
    {
        // 新しい組員が入る前にしっかりとチェックする
        $validatedData = $request->validate([
            'name' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:8',
        ]);

        // 新しい組員をデータベースに登録する
        $newMember = User::create([
            'name' => $validatedData['name'],
            'email' => $validatedData['email'],
            'password' => bcrypt($validatedData['password']),
        ]);

        // 登録完了のメッセージを返す
        return response()->json(['message' => 'ようこそ、組に迎えられました!'], 201);
    }
}
アクセスする

ログイン認証: 組の内部にアクセスする

新しいメンバーが組に正式に加わるためには、認証が必要です。同様に、ユーザーがAPIにアクセスするためには、ログインして認証される必要があります。

// ルートの設定
Route::post('login', 'YakuzaController@login');

// コントローラーの実装
class YakuzaController extends Controller
{
    public function login(Request $request)
    {
        // 組に入るための資格情報を確認する
        $credentials = $request->only('email', 'password');

        // 資格情報が正しいかどうかを確認する
        if (Auth::attempt($credentials)) {
            $member = Auth::user();
            // 通行証(トークン)を発行する
            $token = $member->createToken('組の通行証')->accessToken;
            return response()->json(['token' => $token, 'message' => '組へのアクセスが許可されました'], 200);
        } else {
            // 認証に失敗した場合
            return response()->json(['message' => '認証に失敗しました。組へのアクセスは拒否されました'], 401);
        }
    }
}

トークン発行: 通行証を渡す

認証が完了すると、やくざの組では新しいメンバーに通行証のようなものを渡します。Laravelでは、これに相当するのがAPIトークンの発行です。このトークンを使って、ユーザーはAPIにアクセスできるようになります。

// やくざの通行証を発行する
$member = Auth::user();
$token = $member->createToken('組の通行証')->accessToken;

アクセス制御: 適切なエリアにアクセスさせる

やくざの世界でも、新しいメンバーがすべてのエリアに自由にアクセスできるわけではありません。同様に、APIでもユーザーが適切な権限を持っているかどうかをチェックし、アクセス制御を行います。

// ミドルウェアの設定
public function handle($request, Closure $next)
{
    // 組員が通行証を持っているか確認する
    if (!Auth::guard('api')->check()) {
        return response()->json(['message' => '通行証が必要です。'], 401);
    }

    return $next($request);
}

// ミドルウェアの登録
protected $routeMiddleware = [
    'auth:api' => \App\Http\Middleware\YakuzaAuthenticate::class,
];

結論

今回は何となくこのような感じで例えて、記事にしてみてましたが、

やくざの「仁義を切る」とLaravel のAPI認証のプロセスってユーザー登録、ログイン認証、トークン発行、そしてアクセス制御の各ステップは、なんか似ているようにかんじました。LaravelのAPI認証を効果的に実装することで、システムのセキュリティと信頼性を確保することができますよね。

これで、LaravelのAPI認証についての解説をやくざの仁義を切る例えで終わります。
今後、記事にすることがあればAPI認証を深堀していこうと思います。


この記事が参加している募集

#今月の振り返り

13,058件

この記事が気に入ったらサポートをしてみませんか?