ADFSトレーニングテキスト全文公開チャレンジ(11) – Office365以外のサービスのSSO

皆さんこんにちは。国井です。
ADFSトレーニングテキスト全文公開チャレンジの11回目となる今回はOffice 365以外のサービスをADFS経由でシングルサインオンする方法についてです。

■ ■ ■

スライド74

この章では一貫して Office 365 の各サービスへのシングルサインオンのために、Azure AD と Active Directory の ID 連携を ADFS サーバーを通じて設定してきました。一方、Office 365 以外のクラウドサービスとの間でも ID 連携によってシングルサインオンを行いたい場合、大きく分けて 2 つの ID 連携のオプションが考えられます。

■ADFS サーバーの証明書利用者信頼にクラウド サービスを登録
ADFS サーバーの証明書利用者信頼に別のクラウドサービスを Office 365 と同じように登録すれば、それぞれの URL にアクセスしたときにシングルサインオンにより、認証プロセスをスキップしてサービスにアクセスできます。

■Azure AD にクラウド サービスを登録
Azure AD では Office 365 以外にも、およそ 2800 種類のクラウドサービスを登録でき、登録されたクラウド サービスは Azure AD にサインインするだけで SAML プロトコルを利用してシングルサインオンが実現します (Google Apps や Salesforce など一部のサービスのみ)。つまり、ADFS サーバーを利用してAzure AD にシングルサインオンし、Azure AD から各種クラウド サービスにシングルサインオンすれば、Active Directory へのサインインだけで、すべてのサービスへアクセスできることになります。この方法は ADFS サーバーに比べて簡単に STS 信頼を設定できるメリットがあります。

Azure AD からシングルサインオンのためのサービスの登録は Microsoft Azure 管理ポータルから Azure AD ドメインを登録して行います。


スライド75

Azure AD にサインインするだけでアクセスできる、連携可能なサービスには次のようなものがあります。

■SaaS アプリ
前のページでも説明したように、2800 種類以上の SaaS アプリがあらかじめ Azure AD には登録されており、連携設定を行うことで、Azure AD にサインインするだけで、それぞれの SaaS アプリへのサインインを省略してアクセスできます。

■PaaS アプリ
自社開発された Web アプリなどにアクセスする際、Web アプリの中に認証機能を持たせるのではなく、Azure AD を利用して認証・認可を行うことで、認証機能の一元化が行えます。Azure Web Apps の機能を利用して Azure AD に認証したユーザーだけが Web アプリにアクセスできるように構成したり、OpenID Connect や OAuth 2.0 を利用して Azure AD で認証・認可を行うように実装したりすることができます。

■社内 Web アプリ
社内で展開している Web サーバーを Azure AD の機能を利用して外部に公開することができます。このとき、Azure AD がリバースプロキシとして動作すると同時に、Azure AD での認証を済ませたユーザーだけが Web サーバーにアクセスできるよう、構成できます。

以上のサービスにアクセス可能な Azure AD ですが、本書では SaaS アプリとの連携について、次のページから詳しく解説します。


スライド76

Azure AD に関連付けてシングルサインオンを行う場合、シングルサインオンのために設定しなければならない項目があります。特に、WS-Federation や SAML プロトコルを利用する場合には、フェデレーションメタデータの交換方法など、指定しなければならない項目が多数存在します。Azure AD ではこうした面倒を省いて、必要最小限の設定でシングルサインオンの設定が完了できるよう、プリセットされた SaaS アプリが用意されています。

また、登録したい SaaS アプリが用意されていない場合、[カスタム] と呼ばれる設定を利用して、登録することができます。[カスタム] 設定では SAML プロトコルを利用したシングルサインオン アクセスの設定や、またはサインインフォーム画面にあらかじめ登録したユーザー名とパスワードの文字列を自動的に流し込んでサインインを自動完了させる方法で、シングルサインオンを実現します。


スライド77

Azure AD に SaaS アプリを関連付けてシングルサインオンを行う場合、ID の関連付け方法には 3 つの方法があります。

■パスワードベースのシングルサインオン
SaaS アプリのサインインフォーム画面に、あらかじめ登録しておいたユーザー名とパスワードを自動的に入力し、サインインを自動完了させるシングルサインオン方法です。この方法は、Facebook や Twitter など SAML プロトコル等によるシングルサインオンをサポートしていないアプリで使われるシングルサインオン方法で、ユーザー名とパスワードは Azure AD に登録しておいて自動的に提示する方法と、クライアント コンピューターに登録しておいて自動的に登録する方法があります。
Azure AD に登録して提示する方法では、ユーザーごとに異なるユーザー名とパスワードを提示する方法と、Azure AD のグループに所属するユーザー全員で同じユーザー名とパスワードを提示する方法があります。
その他の ID の関連付け方法については、次のページ以降で解説します。

登録した資格情報を自動的に提示するプラグイン
Azure AD またはクライアントで登録したパスワード シングルサインオン用の資格情報はブラウザーから透過的に提示できるように専用のプラグインが用意されています。そのプラグインが Access Panel Extension アドオンプログラムで、Internet Explorer や Microsoft Edge など様々なブラウザー種類に対応したバージョンが提供されています。
なお、Access Panel Extension アドオンは Azure AD から初めて SaaS アプリにアクセスするタイミングで自動的にインストールが促されます。


スライド78

■ID 連携ベースのシングルサインオン
Azure AD と SaaS アプリの間で SAML プロトコルによる ID 連携を設定し、シングルサインオンを実現する方法です。この方法は、Google Apps や Salesforce など SAML プロトコルによるシングルサインオンをサポートしているアプリで使われるシングルサインオン方法で、SAML プロトコルによる ID 連携の他、API コールによるプロビジョニングも同時に実現します。

■既存のシングルサインオン
Azure AD は SaaS アプリへのリンクのみを提供し、シングルサインオンはサードパーティ製の仕組みを利用して実現する方法です。例えば、ADFSサーバーで ID 連携のための設定を既に行っている場合、Azure AD で ID 連携のための設定を行う必要はありません。このように、他の仕組みでシングルサインオンを既に実現している場合にこの方法を選択します。


スライド79

Salesforce を例に Azure AD に SaaS アプリを関連付け、SAML プロトコルによるシングルサインオンを実現する方法について解説します。
Azure AD で ADFS サーバーを利用した ID 連携環境を構築しているケースにおいて、Azure AD と Salesforce でシングルサインオンを実現する場合、クライアントは 3 つの STS を経由して Salesforce へのアクセスを実現します。
ここでは、ADFS – Azure AD – Salesforce の連携でシングルサインオンを実現する場合の認証と認可の処理について確認します。

① アプリケーションにアクセスすると、セキュリティ トークンを要求される
クライアント コンピューターから Salesforce のサインインページに接続し、Azure AD を利用したサインインを行う選択肢を選択すると、トークンが必要であることをクライアントに通知 (リダイレクト) します。

② Azure AD にアクセスし、認証先を指定される
トークンが必要であることを知ったクライアント コンピューターは①で得た情報をもとに Azure AD に接続します。ここで、クライアント コンピューターが認証を行う先として ADFS サーバーを紹介します。この情報に基づき、クライアントの通信は ADFS サーバーへリダイレクトされます。

③ ADFS サーバーにアクセスし、認証を開始
ADFS サーバーにリダイレクトされたユーザーは認証を開始します。もし、ドメイン参加しているコンピューターが既にドメインにサインインしている場合、Kerberos チケットを保有しているため、Kerberos チケットをもとに ADFS サーバーはトークンを発行します。Kerberos チケットを保有していないクライアントの場合は資格情報を入力する認証が行われ、その結果に基づいて ADFS サーバーからトークンが発行されます。

④ ADFS サーバーが発行したトークンを持って Azure AD にアクセス
ADFS サーバーが発行したトークンを受け取ると、クライアントコンピューターは Azure AD にアクセスします。Azure AD は ADFS サーバー発行のトークンを受け取ると、その内容を確認し、Azure AD が改めてトークンを発行します。

⑤ Azure AD が発行したトークンを持って Salesforce Identity へアクセス
クライアントは Azure AD が発行したトークンを持って Salesforce の STS である Salesforce Identity にアクセスします。Salesforce Identity はトークンの内容を確認し、Salesforce Identity が改めてトークンを発行します。

⑥ 認証結果をもとに特定のクレームが含まれるトークンを発行
クライアントは Salesforce Identity が発行したトークンを持って Salesforceにアクセスします。Salesforce はトークンの内容を確認し、アクセス可否の判断を行います。

以上のように、STS によるトークンの受け渡しは ADFS – Azure AD 間だけでなく、3 つ以上の STS を経由して行うことができます。これにより、ドメイン参加し、ドメインにサインインしているユーザーは改めてユーザー名とパスワードを入力することなく、Azure AD へのアクセスや Salesforce へのアクセスが実現します。


スライド80

Azure AD と Salesforce で SAML プロトコルによる ID 連携を行う場合、Azure AD と Salesforce でそれぞれ必要な設定は次のとおりです。

① オンプレミスの設定:ADFS サーバーと Azure AD による SSO 設定
Office 365 のシングルサインオンを行うため必要な設定を行います。

② オンプレミスの設定 : AAD Connect による Azure AD への同期
Active Directory に登録されているユーザーを Azure AD へ同期します。これにより、Azure AD 経由で Salesforce にアクセスする場合でも Active Directory ユーザーを引き続き利用できます。なお、この設定は Office 365 の SSO設定の一環で既に行っている場合は不要です。

③ Azure AD の設定 : Azure AD ディレクトリの登録
Azure AD と SaaS アプリの連携は Azure AD 管理センターから設定します。Office 365を利用している場合、https://aad.portal.azure.com より利用開始できます。

④ Azure AD の設定 : SaaS アプリとして Salesforce の登録
Salesforce をアプリとして Azure AD に登録します。

⑤ Azure AD の設定 : ID 連携の設定
Azure AD と Salesforce の間での ID 連携を行うための設定をします。

⑥ Azure AD の設定 : プロビジョニングの設定
Azure AD に登録されたユーザーを Salesforce に同期するために必要なプロビジョニング設定を行います。

⑦ Azure AD の設定 : アクセス許可の割り当て
Azure AD から Salesforce へのアクセスを許可するユーザー/グループを定義し、アクセス許可のあるユーザー/グループだけにトークンが発行されるよう、構成します。

⑧ Salesforce の設定 : ID 連携の設定
Azure AD で設定した ID 連携の設定に対応する設定を Salesforce 側でも行います。

⑨ Salesforce の設定 : プロビジョニングの設定
Azure AD で設定したプロビジョニングの設定に対応する設定を Salesforce 側でも行います。

⑩ Salesforce の設定 : ライセンスの割り当て
Azure AD から同期されたユーザーに対してライセンスを割り当て、認証・認可を済ませたユーザーが Salesforce にアクセスできるようにします。

次のページから④から⑩の項目について、具体的な設定を確認します。
<続く>

編集後記

Salesforceを例にOffice365以外のクラウドサービスとのSAMLプロトコルによる連携法右方について解説しました。ADFS – Azure AD – Salesforce という接続方法なので、Azure AD – Salesforce という接続を考えている方でも役立つのではないかなと思いました。
参考になれば幸いです。
次回は具体的な設定方法を紹介します。