対象読者
- Windows Azureに興味がある方
- Windows Azure Active Directoryに興味がある方
必要な環境
- Windows Azureサブスクリプション
- Microsoft Visual Studio 2013
- .NET Framework 4.5以上
Windows Azure Active Directoryとは
Windows Azure Active Directory(以下、WA AD)は、認証と認可を提供するサービスです。Active Directoryというと、従来のWindows Server Active Directoryを連想される方が多いと思いますが、WA ADは、従来のActive Directoryにおけるドメインサービス、その中でもアイデンティティ管理の部分に特化した機能と言ってよいでしょう。また、ユーザ情報へのアクセスやユーザ認証に利用されていたプロトコルであるLDAPやKerberosなどに代わり、WA ADではREST APIやSAML-P、WS-Federationなどのプロトコルを採用しています。
こう書くと全く異なるもののように聞こえるかもしれませんが、既存のADとWA ADのディレクトリサービスを同期させて(*1)、グループやユーザ情報をクラウド側に保持することなども可能です。
それでは、それぞれの機能について、紹介していきます。WA ADは、大きくは2つのサービスから構成されています。
- アクセスコントロールサービス
- ディレクトリサービス
アクセスコントロールサービスは、ADをはじめ、GoogleやFacebookなどのユーザ情報を所持/提供する機構(Identity Provider)と、提供されたユーザ情報を利用するアプリケーションやサービス(Relying Party)を仲介する機能です。
図1の通り、Identity Providerごとのプロトコルの差分を吸収し、統一のプロトコルでアプリケーションにユーザ情報を提供します。そのため、アプリケーション側では、連携したいIdentity Providerごとに個別設定を行う必要がありません。また、新たなIdentity Providerと連携する場合にも、アクセスコントロールサービスが対応していれば、すぐに利用可能となります。
2つめのディレクトリサービスとは、ユーザ情報を保持/提供する機能と認証サーバの役割を持っています。ユーザ情報を保持/提供しているという意味では、アクセスコントロールの紹介の中で記載した、GoogleやFacebookなどと同様にIdentity Providerとして考えられます。
また、ディレクトリサービスでは多要素認証に対応しています。通常のID/パスワード認証方法に加えて、ワンタイムパスワードなどのモバイルアプリケーション/電話/テキストメッセージなどにより、セキュリティ強化を実現しています。
ディレクトリサービスの操作には、Windows Azure Active Directory Graph(以下、Graph)およびWindows Azure Active Directory Authentication Library(以下、ADAL)が用意されています。
Graphは、Windows Server Active Directoryに対して、ADSIやADO.NETを利用してプログラムからユーザ情報の操作していたのと同様に、REST APIのエンドポイントを利用して、ユーザやグループ情報に対して、プログラムから生成・読み込み・変更・削除(CRUD操作)操作を行う際に利用します。
一方、ADALは、オンプレミスまはたクラウドのActive Directoryに対して、簡易かつ安全に認証やアクセストークンを取得するためのライブラリです。現時点では、.NET Framework/Windowsストアアプリ/Node.js用のライブラリが用意されています。
それでは、WA ADの機能を用いたサンプルアプリケーションを作成してみましょう。