ADFSトレーニングテキスト全文公開チャレンジ(3) – ADFSのコンポーネント

皆さんこんにちは。国井です。
3日目にして早くも公開するのを忘れそうになりましたw 今日は第2章「ADFSのインストールと初期設定」からADFSのコンポーネントについて解説します。

■ ■ ■

スライド22

第 2 章では、ADFS サーバーをインストールする環境として活用する Azure 仮想マシンと仮想ネットワークの概要、そして ADFS をインストールするために必要な前提条件や効果的なインストール方法について確認します。


スライド23

自組織とクラウドサービス間で ID 連携を行う場合、それぞれの環境に STS を用意する必要があります。このとき、クラウドサービスでは Azure AD、自組織では ADFSサーバーを利用して STS の機能を提供します。

ADFS サーバーを実装する場合、ADFS サーバー以外にも、ADFS サーバー用のデータベースサーバー、トークンを発行するユーザーを識別するために使用する Active Directory ドメインサービス、外部からのトークン発行要求を受け付ける Web アプリケーションプロキシが必要になります。以下に、それぞれのコンポーネントの特徴について紹介します。

■Active Directory
Windows Server 2016 の ADFS では Active Directory だけでなく、OpenLDAP 等のサード パーティー製ディレクトリ サービスを利用することもできますが、一般的には Active Directory を利用して認証機能を実装します。

■ADFS サーバー
ADFS サーバーはオンプレミスの STS (IdP/CP) として動作します。ADFS サーバーは負荷分散装置を利用することで、2台目以降のサーバーを実装し、高可用性構成を実装することも可能です。

■ADFS サーバー用データベース
ADFS サーバーで使用するデータベースには SQL Server または組み込みのデータベース (WID) を利用できます。SQL Server を利用する場合には SQL Server のクラスタリング機能で、WID の場合には ADFS サーバーの機能で複数台のサーバーによるデータベースの提供が可能です。

■Web アプリケーションプロキシ
Webアプリケーションプロキシはインターネットから ADFS サーバーへのアクセスを受け付ける、ADFSのプロキシ サーバーとして動作します。また、Webアプリケーションプロキシは ADFS サーバーと同じく、Web サービスとして提供されるため、負荷分散装置を利用することで高可用性構成を実装することも可能です。

■Azure AD Connect
Azure AD に対するプロビジョニングを行う役割としてマイクロソフトの Web サイトより提供されるAzure Active Directory Connect (Azure AD Connect) を利用します。Azure AD Connect は新規または既存のサーバーにインストールして利用することができ、インストールが完了すると自動的に Azure AD に対するディレクトリの同期を実行します。AAD Connect は複数のサーバーにインストールすることはできますが、複数のサーバーで同時にサービスを実行することができません。そのため、ステージングモードを利用して、アクティブなサーバー以外ではサービスを実行しないように構成します。また、アクティブなサーバーで障害が発生した時には、手動でアクティブなサーバーを切り替える必要がある点にも注意してください。


スライド24

Microsoft Azure における仮想マシンの実装方法が確認できたら、続いて ADFS サーバーで必要となるコンポーネントについて確認します。ADFS サーバーでは以下のコンポーネントを使用します。

■証明書の定義
ADFS ではトークンの署名や通信の暗号化などに証明書を利用します。そのため、それぞれの通信等で必要となる証明書を事前に用意しておきます。

■フェデレーションメタデータの定義
フェデレーション メタデータとは、ADFS サーバー等で利用可能なサービス コンポーネントを定義した XML ファイルです。ADFS サーバーでは、セットアップを行うことにより、自動的に生成されます。

■RP の信頼関係構築
STS 信頼を設定し、クラウドサービス (Azure AD) との間で ID 連携が行えるよう、構成します。

■クレームルールの定義 (CP と RP で実装)
クレーム ルールとは、トークンの中で扱うクレームの情報を定義するためのコンポーネントです。

次のページから、それぞれのコンポーネントについて、詳しく解説します。


スライド25

ADFS では、次の 3 種類の証明書を利用します。既定では、自己署名の証明書が実装されていますが、必要に応じて認証局から発行された証明書に変更して、利用することができます。

■SSL 証明書
ADFS サーバーとクライアントコンピューターの間で行われる通信を SSL 暗号化するために必要な証明書で、ADFS サーバーに証明書を実装し、利用します。ADFS サーバーを外部からのアクセスを受け付けるように構成する場合、SSL 証明書には公的な認証局から発行された証明書を利用する必要があります。

■トークン署名証明書
ADFS サーバーで作成されたトークンを悪意の第三者によって改ざんされることを防ぐためにトークンはデジタル署名されます。デジタル署名を行うときに利用される証明書がトークン署名証明書です。トークン署名証明書は ADFS サーバーに証明書を実装し、利用します。

■トークン暗号化解除証明書
クライアントから送られる認証関連情報を暗号化する際、ADFS サーバーはトークン暗号化解除証明書を利用してクライアントが施した暗号化を解除します。


スライド26

フェデレーション メタデータには、エンドポイントの定義、クレームベース認証を行うために利用可能なクレーム情報、証明書の公開キーが含まれており、ADFS を利用するときには、フェデレーションメタデータを参照し、どのようなクレーム ベース認証が可能であるか識別します。

■エンドポイントの定義
エンドポイントは、ADFS のサービスを利用するための「接続口」としての役割を果たします。フェデレーション メタデータでは、エンドポイントの場所が記されているため、クライアントコンピューターはADFS サーバーに接続し、クレーム ベース認証を行うために必要な様々なサービスを利用することができます。

■クレームベース認証を行うために利用可能なクレーム情報
トークンに追加するクレームの情報は、あらかじめフェデレーションメタデータで定義した情報だけが登録可能です。

■証明書の公開鍵
ADFS サーバーに接続し、通信するためには様々な証明書を利用します。そのときに必要な証明書の公開鍵の情報がフェデレーションメタデータには記載されています。

これらの情報が含まれるフェデレーション メタデータは、STS の信頼関係を設定するときに使用します。ADFS サーバーで信頼する相手のフェデレーション メタデータをインポートすることにより、フェデレーション メタデータに記された STS とのクレーム ベース認証や ID 連携が実現できるようになります。また、フェデレーション メタデータは WS-Federation パッシブ プロファイルまたは SAML 2.0 Web SSO プロファイルで使用します。


スライド27

ADFS サーバーの各種サービスに接続するためのエンドポイントは、すべて Web サービスとして提供されており、それぞれ別々の URL が提供されています。ADFS エンドポイントは、ADFS 管理ツールの [サービス] – [エンドポイント] から確認できます。

編集後記

今回はADFSサーバーのコンポーネントについて解説をしました。Active Directoryドメインコントローラーの他、ADFSサーバー、ADFSプロキシ、Azure AD Connectのサーバーが必要になり、さらにADFSサーバーとADFSプロキシは冗長化のために2台ずつ用意するという、シングルサインオンだけで何台サーバー用意するんだ!と言いたくなるような構成ですね。冗長化については別のトレーニングコースで扱っていたため、このコースでは詳細について触れないのですが、このあたりの情報は当時は本当に少なく、みんな苦労したものです。今でも苦労されている方がもしいらしたらコメントやTwitterなどで反応をいただければ追記するかもしれません。ではまた明日!