🙄

【第7回】Azureで社内システム再現(オンプレ編)|ADFS & ShibbolethでSSOを実装⑤

2025/04/14に公開

概要

「Azureで社内システム再現(オンプレ編)」では、
Azure の IaaS サービスを使って簡単な社内システムを再現します。

機能としては、社員番号を入力して検索ボタンを押すと、
対応する名前を表示するだけのシンプルなものです。

※詳しい全体構成については、【第0回】Azureで社内システム再現(オンプレ編)|構成図と動作の流れで紹介しています。


システム構成(今回の対象範囲)

ADFS_dousaのtest12.png

今回は、これまでに構成してきた ADFS(IdP)と 2つの SP サイトとの連携が
正しく動作するかをテストします。

以下の 2 つの方式で、SAML ベースのシングルサインオン(SSO)が機能するかを検証します。


① SP Initiated SSO(SP 起点)

  • Shibboleth SP を導入した社内 Web サイトにアクセス
  • ADFS にリダイレクトされ、認証を実施
  • 認証後、外部のテスト SP サイトにリダイレクトされ、SSO が完了しているかを確認

② IDP Initiated SSO(IdP 起点)

  • ADFS のログインポータルにアクセス
  • 表示されるリンクから、SP サイトへ遷移
  • SSO によりログインが完了するかを確認

SP Initiated SSO のテスト

Shibboleth SP を組み込んだ社内 Web サイトにアクセスし、ADFS を経由してログインが開始されるかを確認します。


リダイレクトとアクセスの確認(社内WEBサイト)

以下の Web サイトにアクセスします。

https://web-vm1.domain.local/employee-app/

スクリーンショット 2025-04-08 15.36.44.png


HTTP ステータスによる動作確認

① 302 Found(リダイレクト)

  • SP は、SAML 認証要求(SAMLRequest)を含む URL を生成し、302 Found を返します。
  • このレスポンスの Location ヘッダーには ADFS のログインエンドポイントが含まれています。

例:

https://adfs.domain.local/adfs/ls/?SAMLRequest=...
  • ブラウザはこの URL に自動的に遷移します。

② 200 OK(ログインページの取得)

  • ブラウザが ADFS にアクセスすると、HTTP 200 OK が返されます。
  • レスポンスにはログインフォームの HTML や CSS が含まれ、ユーザーの画面にログインページが表示されます。

認証後の画面

無事にログインが完了すると、以下のような「社員一覧」画面が表示されました。
スクリーンショット 2025-03-27 14.53.24.png


テストSPサイトへのアクセスとSSOの確認

社内Webサイト(Shibboleth SP)で一度ログインを済ませた状態で、
続けて外部のテストSPサイトにアクセスします。

スクリーンショット 2025-03-27 14.51.42.png


テスト SP サイトへのアクセス結果

外部のテスト SP サイトにアクセスすると、
認証操作は発生せず**、そのままログイン処理が完了しました。

これは、社内 Web サイトで一度 ADFS による認証を済ませていたため、認証状態がブラウザに維持され、再認証なしでSSOが成立したことを示しています。

また表示されたページに、次のような内容が含まれていました:

Hello user02

これは、ADFS 側で設定したクレームルール(SAM-Account-Name → 名前 ID)によって、user02 という情報が SAML アサーションを通じて正しくSPに渡されたことを確認できました。

以下に、あなたの流れに沿った IDP Initiated SSO(IdP 起点)テストの手順 をマークダウン形式でまとめました:


IDP Initiated SSO(IdP 起点)のテスト

ADFS(IdP)のログインポータルから SPサイト へ遷移し、SSOが成功するかどうかを確認します。


ADFS のログインページにアクセス

まず以下のURLにアクセスします:

https://adfs.domain.local/adfs/ls/IdpInitiatedSignOn.aspx

しかし、以下のようなエラーが表示されました。
スクリーンショット 2025-04-14 15.12.29.png

これは、デフォルトでIdP Initiatedのログインページが無効化されているためです。


EnableIdPInitiatedSignonPage を有効化

PowerShellで以下のコマンドを実行し、IdPInitiatedSignonPageTrue に変更します:

Set-AdfsProperties -EnableIdPInitiatedSignonPage $true

設定後、再度 Get-AdfsProperties で確認すると True に変わっていることが確認できます。

スクリーンショット 2025-03-28 16.34.09.png


ADFSのログイン画面からSPを選択

設定が完了すると、ログインページにアクセスできるようになり、
登録済みの証明書利用者信頼(SP)がリストで表示されます。

今回は Test-SP を選択します。

スクリーンショット 2025-04-08 16.06.36.png


SSOが完了し、ログイン後の画面が表示される

SPへのリダイレクト後、
ログイン済みの状態で SP の保護されたページが表示されます。
スクリーンショット 2025-04-14 15.11.20.png

このようにして、IdPを起点としたSSOも正常に動作していることが確認できました。


Discussion