サンプルアプリケーションを使って ADFS から Azure AD への認証移行ステップを確認する

# はじめに

本記事では、ADFS アプリケーションのサンプルを利用して、実際に ADFS から Azure AD へアプリケーション認証を移行する時の手順を紹介します。
自社開発の業務アプリケーションを移行する前に、予めサンプルを使ったアプリケーション認証の移行ステップの確認を行っておきたい方へお勧めの方法となります。

> 自社開発以外の SaaS アプリケーションは、Microsoft が数多くのアプリケーションベンダーと協力し、 Azure AD アプリギャラリーへ登録されています。このため、シングルサインオンやプロビジョニングによる Azure AD との認証連携の際は、テンプレートおよび公開された手順を活用して迷うことなく設定を進めていただけます。(以下の記事も合わせて参照してください)

> [SaaS への シングルサインオン(SSO)設定を簡単に実現! Azure AD アプリギャラリー](https://qiita.com/hiyoshino/items/04f1e4e9d4172b47d4e9)

本記事で紹介するサンプルアプリケーションについて説明します。
アプリケーションは SAML に対応したアプリケーションです。SAML の他に Open ID Connect に対応した業務アプリケーションであれば Azure AD へ認証の移行が可能と考えて問題ありません。
Github上に公開された .NET Framework アプリケーションのサンプルですので、下記 URL から入手可能です。

[Azure-Samples/ms-identity-dotnet-adfs-to-aad: Guide to migrate applications from AFDS to AAD (github.com)](https://github.com/Azure-Samples/ms-identity-dotnet-adfs-to-aad)

Visual Studio による .NET Framework の実行環境があればすぐに実行できます。
本デモ環境では、Visual Studio 2019 と  .NET Framework 4.7.2 を使用しました。

# デモの流れ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1879870/fe311ef5-edd5-dc78-0d05-1c0acb50750d.png)

デモによる ADFS から Azure AD への認証移行は 6 つのステップで構成されます。
認証部分にフォーカスすれば、それほど多くの移行作業を行う必要はありません。

* 1. ADFS でユーザーが認証されていることの確認（**START**）
* 2. Azure AD のエンタープライズアプリケーションの登録
* 3. Azure AD のエンタープライズアプリケーションへユーザーの割り当て
* 4. Azure AD のエンタープライズアプリケーションのシングルサインオンの構成
* 5. サンプルアプリケーションの構成ファイルの編集と再ビルド
* 6. Azure AD でユーザーが認証されていることの確認（**GOAL**）

上記ステップを意識して、実際の環境のデモ動画をご覧いただきたく思います。
この動画は、音声による解説はなく、代わりに日本語字幕での解説を行っています。動画の長さは 4 分 30 秒です。
<br>
<iframe width="560" height="315" src="https://www.youtube.com/embed/RS23kEyrlpc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<br>

# Azure AD へアプリケーションを移行した後に行う作業
ADFS アプリケーションを Azure AD へ移行する際の一連のステップをご確認いただいたところで、移行した後の作業について説明します。Azure Portal 上の操作だけで作業が完了します。
環境構成やライセンスなど、実際の状況に合わせて実装を検討してみてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1879870/9fb73150-787e-7bfb-9b62-c02ed298a4c4.png)

アプリケーションを Azure AD へ登録した後、上記の画面が Azure Portal で表示されます。
デモ動画の操作を通して、既に 1 番と 2 番の**ユーザーの割り当て**と**シングルサインオンの設定**が完了しています。
3 番から 5 番の設定作業については、アプリケーションを移行した後の工程となります。
3 番では、Azure ADユーザーをアプリケーションへ**自動プロビジョニング**する設定が可能です。SCIM という標準規格を使っています。
4 番では、適応型アクセス制御のための**条件付きアクセス**を設定します。
5 番でユーザーが**セルフサービス**によってアプリケーションアクセスを要求するための設定を行います。
ポータルの操作を通して、セキュリティの実装、および運用の効率化につながる構成が可能です。
4 番と 5 番の機能を利用するためには、Azure AD Premium Plan1 または Plan2 のライセンス契約が必要です。

> ＊ 2021/11/24 追記
> 適応型アクセス制御という言葉について、最近耳にすることが多くなってきたのではないでしょうか。ぜひ下記の記事もあわせて参考にしてください。

> [Azure AD による適応型アクセス制御の現在](https://qiita.com/NIWAnatsuko/items/7a444317af09e4922584)

# Azure AD の認証が ADFS へリダイレクトされる環境の場合
本デモは、Azure AD のパスワードハッシュ同期を構成し、Azure AD のみで認証が完了する環境で行っています。
Azure AD の認証を ADFS へフェデレーションを行っている環境のケースについても触れておきたいと思います。主に Office 365 を利用中の環境で構成されているのではないでしょうか。
その場合においても、上記のように Azure AD へエンタープライズアプリケーションの登録が可能です。ただし、Azure AD へ登録したアプリケーションも ADFS へ認証がリダイレクトされる点に留意してください。つまり、認証時のログイン画面は、ADFS によるユーザー認証時の画面と同じものが表示されます。
（以下に、例として Salesforce へアクセスした場合の Azure AD 経由の ADFS 認証の流れを図示します。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1879870/f4c9824b-eb91-5a95-b775-508758a14d26.png)


将来的に、Azure AD 自体 (Office 365) の認証を ADFS から移行する予定であれば、先に業務アプリケーションを Azure AD へ登録しておいても良いでしょう。（移行時に行う一部のアプリケーション移行作業を先に実施しておくイメージです。）
また、新しく使い始める SaaS アプリケーションについても、同様に、これから ADFS に対して認証の構成設定を行うのではなく、Azure AD へ登録することをお勧めします。Azure AD (Office 365) が ADFS に対して認証フェデレーションを構成済みの場合は、ADFS へ手を入れる必要がなく、Azure AD アプリギャラリーで SaaS アプリのシングルサインオン設定が構成可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1879870/b9971da6-5d49-d114-7d6b-b3801ecdba21.png)
# まとめ
本記事では、アプリケーションサンプルを利用して、ADFS から Azure AD へ認証を移行するステップについて解説しました。
これからアプリケーション認証を ADFS から移行しようとしている方の参考になれば幸いです。
＊本稿は、個人の見解に基づいた内容であり、所属する会社の公式見解ではありません。また、いかなる保証を与えるものでもありません。

全 3 回にわたって、ADFS から Azure AD への認証移行に関する記事を投稿いたしました。
> 過去の記事は以下のリンクから参照していただけます。
> [ADFS からのアプリ認証移行が必要な理由](https://qiita.com/hiroakimurata/items/7365532a92c5c9b57474)
> [ADFS からアプリケーション認証移行を設計する前に知っておきたい事](https://qiita.com/hiroakimurata/items/f18c63ca6497a8d32b77)

次回は、Azure AD B2B の機能を利用して、Azure AD と認証連携済みのアプリケーションへ、ビジネスパートナーを割り当てるシナリオを紹介する予定です。