皆さんこんにちは。国井です。
一時期、Office 365へのサインインの50%はADFS経由と言われるぐらい、Office 365のサインインにはシングルサインオン(SSO)環境を構築し、運用している会社がたくさんあるかと思います。しかし、最近ではADFSでできる大抵のことはAzure ADでもできるようになっており、Azure AD Connectを使えばシームレスSSOもサポートされるので、いよいよサーバーレスで移行しようという話がちらほら出てくるようになりました。
(クラウド!って言っている時代にADFS2台+WAP2台の構成は..)
そこで今日はADFSからAzure ADへSSO環境を移行する方法を紹介しましょう、って書こうと思ったら既にAzure ADへの移行に関するドキュメントが色々と出ていました。
■Resources for migrating applications to Azure Active Directory
https://docs.microsoft.com/ja-jp/azure/active-directory/manage-apps/migration-resources
■ADFS廃止のすすめ (移行手順が分かりやすく書いてあるのでおすすめ!)
https://github.com/teppeiy/AzureAD-Tips/blob/master/ADFS/Goodbye-ADFS.md
2019年11月23日追記
段階的に移行する方法について別のエントリで書かせていただきました
基本的にはここに書いてある手順を参考していただければと思うのですが、
ADFSサーバーのパラメーターシートをもとに各設定をAzure ADに移行しようと思ったら、何をどこへ移行するべきなのか?というところで迷子になるのではないかと思います。
ですので、今回はその辺りを整理してみました。
項目名 | ADFSの設定項目 | Azure ADの設定項目 |
フェデレーションサービス名 | ADFSサーバーのプロパティ | Azure ADで定義されるもので、自由に変更できない |
IdPまたはCP | 要求プロバイダー信頼 | Azure ADそのものが[要求プロバイダー信頼]に相当するが、[要求プロバイダー信頼]レベルでのクレームルールのカスタマイズは不可 (というか必要ない) |
RPまたはSP | 証明書利用者信頼 | [エンタープライズアプリケーション]または[アプリの登録] |
クレームの定義 | 発行要求規則 | [エンタプライズアプリケーション]-[シングルサインオン] |
アクセス制御 | 発行承認規則 または アクセス制御ポリシー |
条件付きアクセス |
証明書認証 | あり [認証方法]でプライマリ認証に証明書認証を選択 |
パスワードレス認証によって、結果的に証明書ベースの認証が利用可能 |
デバイス認証 | あり [認証方法]でプライマリ認証にデバイス認証を選択 |
条件付きアクセス |
フェデレーションメタデータ | https://フェデレーションサービス名/federationmetadata/2007-06/federationmetadata.xml | https://login.windows.net/azure adドメイン名/federationmetadata/2007-06/federationmetadata.xml |
サードパーティのデータストアからクレームを生成 | [属性ストア]でSQL Serverなどを定義 | ない Azure AD Connectなどで事前にAzure ADに必要な属性は同期/インポートさせておく |
SSOに関わる証明書 | ADFSサーバーに ・通信用証明書 ・トークン署名証明書 等を実装 (有効期限は自由に設定可能) |
Azure ADで用意される証明書を利用 (有効期限3年) |
エンドポイントのカスタマイズ | [エンドポイント]項目で有効・無効化が可能 | 不可 |
ユーザー定義のクレーム | [要求記述]で定義 | extentionAttribute1などAzure ADで余っている属性を利用する?? |
アカウントロックアウト | http://azuread.net/2014/06/05/adfsプロキシ経由のアクセスをロックアウト/ | [認証方法] スマートロックアウト |
ログ | イベントビューアから参照 | Azure ADのサインインログ ・ただし、トークンに含まれるクレームの内容を参照することはできない |
バックアップ | あり スクリプトを実行 |
自動的な方法はなく、 Azure AD PowerShellを使ってAzure ADのパラメーターをエクスポート/インポートする (どうしてもやりたい場合) |
サービスアカウント | イベントビューアから参照 | 不要 |
Webアプリケーションプロキシ | サーバーマネージャーから役割を追加 | 不要 |
※ざっくり書いたので間違ってたら、ご指摘いただけるとありがたいです。
こうやってみてみると、だいたいADFSにあるものはAzure ADにもあり、[属性ストア]のカスタマイズができないなど、ほとんどの人にとって無くても困らない?機能しか、ADFSには残されていなかったりします。
ただ、ADFSとAzure ADで機能的には同じでも、アーキテクチャが大きく異なるものがあるので、その点については次回以降で触れていきます。