Laravel Socialite を使って Entra ID で SSO できるようにする(準備編)

タイトルの通りなのですが、Laravel Socialite を使って Entra ID で Laravel に SAML2 で SSO できるようにするのにけっこうハマってしまったので、手順をまとめておきます。使用した Laravel のバージョンは 11 です。

目指すゴール

開発環境で動作確認できるところをいったんのゴールとしますが、SSL の設定で悩んだりしないので、おそらく本番環境のほうが構築は楽だと思います。

事前準備(開発環境側)

今回は開発環境として、Virtual Box を使って Ubuntu 24.04 Server を立ち上げ、その環境で Laravel 11 をセットアップしています。そして、開発環境には http://192.168.56.100/ でアクセスできるようになっていると仮定します。ここまでの設定については割愛しますが、やっていることはComposer のインストールから Laravel 6.0 開発環境の構築までUbuntu 22.04 で Laravel 9 を使うために必要なパッケージあたりを参考にしていただければ。

さて、Entra ID で SSO するためには、応答 URL (Assertion Consumer Service URL) に https:// で始まる URL を設定する必要があります。そのため、開発環境に SSL で接続できるようにする必要があるのですが、これをやろうとすると、プライベート認証局(オレオレ認証局)を構築して、Web サーバー向けのサーバー証明書を発行する、みたいなことをやる必要があります。これだけで結構なボリュームの作業になるのですが、実は Ubuntu では必要ありません。Apache と一緒にインストールされ、自動実行される make-ssl-cert コマンドによって証明書が作成されているのです。そのため、以下のコマンドを実行するだけで準備完了です(/etc/apache2/sites-available/default-ssl.conf は適宜編集する必要がありますが)。

$ sudo a2enmod ssl
$ sudo a2ensite default-ssl.conf
$ sudo service apache2 restart

事前準備(Entra ID 側)

Entra ID 側ではアプリケーションの登録が必要です。Entra 管理センターにログインして、メニューを [ID] > [アプリケーション] > [エンタープライズ アプリケーション] と移動し、上部メニューの [新しいアプリケーション] を選びます。表示されたMicrosoft Entra ギャラリーを参照するで [独自のアプリケーションの作成] を選び、任意の名前を付け、[ギャラリーに見つからないその他のアプリケーションを統合します] を選びます。

作成後の画面で [シングルサインオン] を選び、シングルサインオン方式の選択で SAML を選んでください。SAML の設定画面では、識別子と応答 URL のみ入力すれば OK です。

入力する値は、以下の通りです。

識別子 (エンティティ ID)https://192.168.56.100/auth/saml2
応答 URL (Assertion Consumer Service URL)https://192.168.56.100/auth/callback

最後に SAML 証明書の欄にある [アプリのフェデレーション メタデータ URL] をコピーしておいてください。後の Laravel Socialite の設定で使用します。

次回予告

次回は Laravel 側の設定から実装までを紹介します。

この記事を書いた人
グッドネイバー

“ Webに悩むお客さまの「よき隣人」でありたい ” をモットーに、Web システム開発(主に Laravel)、Web マーケティング支援の仕事をしています。お仕事のご依頼・ご相談はこちらからお気軽にどうぞ。