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

## 概要

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

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

※詳しい全体構成については、[【第0回】Azureで社内システム再現（オンプレ編）｜構成図と動作の流れ](https://qiita.com/saba_infra/items/a5e58ded68973e4551ee) で紹介しています。

---

## システム構成（今回の対象範囲）
![ADFS_dousaのtest12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/73530254-4e1a-477b-a842-af84b0d6faae.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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/4f3c1e02-81c8-4144-a9ff-51d259f9b585.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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/95f089d3-04e5-4fed-ada4-353a3c4c05a3.png)


---

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

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


![スクリーンショット 2025-03-27 14.51.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/5b68a4a1-37e7-4e6f-8e13-7b35faf9ace4.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.28.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/82ef51e2-2d78-468b-8165-efc36b032bf1.png)



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

---

#### EnableIdPInitiatedSignonPage を有効化

PowerShellで以下のコマンドを実行し、**IdPInitiatedSignonPage**を`True` に変更します：

```powershell
Set-AdfsProperties -EnableIdPInitiatedSignonPage $true
```

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

![スクリーンショット 2025-03-28 16.34.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/0065ca9d-13c3-46f8-b87c-fa4c59571bdd.png)


---

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

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

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

![スクリーンショット 2025-04-08 16.06.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/c22d23d4-f457-494b-8a14-192b0a52a8a0.png)


---

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

SPへのリダイレクト後、クレーム情報が渡され、  
ログイン済みの状態で SP の保護されたページが表示されます。
![スクリーンショット 2025-04-14 15.33.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/9cc21b64-ea39-419a-8b06-ebd676b5d017.png)



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

---