概要
これまでの「オンプレ編」では、Azure の仮想マシン(IaaS)を使って、社員番号から名前を検索できるシンプルな社内システムを構築してきました。Active Directory、SQL Server、ADFS などを組み合わせ、オンプレミスの構成を仮想的に再現しています。
※全体構成の詳細は、【第0回】Azureで社内システム再現(オンプレ編)|構成図と動作の流れ をご参照ください。
クラウド編では、これまでの構成をベースにしつつ、Azure のマネージドサービス(PaaS)を中心とした構成へ段階的に移行していきます。
※クラウド移行全体の設計方針については、【第10.5回】Azureで社内システム再現(クラウド編)|オンプレ構成をどうクラウドに移行するか? にまとめています。
システム構成(今回の対象範囲)
今回のテーマは、Azure App Service にデプロイした自作Webアプリに対して、Microsoft Entra IDを用いたSSO(シングルサインオン)構成を実現することです。
まず、下図は「クラウド編」におけるシステム全体の構成を示したものです。
このうち、赤枠で示している App Service と Entra ID を利用したSSO認証の部分が、今回の対象範囲です。
今回は以下の作業を行いました。
- App Service に対して Entra ID を ID プロバイダーとして構成
- Azureポータルにサインインした状態でWebアプリにアクセスし、SSOが成立することを確認
App Service で ID プロバイダーを追加する
Azure App Service に SSO(シングルサインオン)機能を組み込むために、認証の設定から「ID プロバイダー」を追加します。
ここで言う「ID プロバイダー」とは、ログイン処理を行う外部の認証基盤(=IdP)を指定するという意味になります。
Entra ID を ID プロバイダーとして指定する
今回は、Microsoftを認証プロバイダーとして使用します。
Web アプリは社内用のため、「従業員用(この組織のアカウントのみ)」という構成を選択しています。
アプリ登録はまだ行っていなかったため、「新しいアプリの登録」を選択しました。
アプリ登録設定(デフォルト)
アプリ登録時の各項目は以下の通りです。
-
名前:Entra ID 上に登録されるアプリの名前。ここでは
employee-app
としています。 - クライアントシークレットの有効期限:180日が推奨値です。
-
サポートされているアカウントの種類:今回は自社のテナント
azuretest0905.com
内のユーザーのみを対象とするため、「現在のテナント - 単一テナント」を選択しています。
付与されるアクセス権(User.Read)
アプリ登録と同時に、Microsoft Graph API に対して User.Read
のアクセス許可が自動で付与されます。
ただし、今回のアプリでは Graph API を通じて Entra ID のユーザー情報にアクセスする予定はなく、この権限は実際には使用されません。
SSOの動作確認(Azureポータル → 自作Webアプリ)
今回は、Entra IDによるSSO構成が正しく機能しているかを確認するために、
Azureポータルへ一度ログインした後、自作Webアプリ
(https://www.azuretest0905.com)に
認証なしでアクセスできるかどうかを検証しました。
使用ユーザー:user1007@azuretest0905.com
今回の確認には、テスト用ユーザー user1007
を使用しました。
このユーザーは事前に Entra ID に登録済みで、今回のSSO構成の検証対象となるユーザーです。
Azureポータルにログイン
まず、VNet上に作成したVMから、Azureポータルにアクセスします。
ユーザーIDを入力するとサインイン画面が表示されるため、パスワードを入力し「はい」を選択してログインを許可します。
ログインに成功すると、Azureポータルのトップページが表示されました。
この時点で、ブラウザにはEntra IDの認証セッション(SSO用Cookie)が保持されている状態になります。
自作Webアプリにアクセス
続けて、自作Webアプリである https://www.azuretest0905.com
にアクセスしました。
ログイン画面は表示されず、自動的にEntra IDにリダイレクト → 認証済みとしてWebアプリのページが表示されました。
これで、同一ブラウザセッション内でEntra IDのSSOが成立していることを確認できました。