[AAD] WebアプリをAAD認証させる

Microsoft MVP for Data Platform / Azure Machine Learning を受賞致しました。ありがとうございます!

今月発売号の日経クラウドファーストにも、Azure Machine Learning の記事を寄稿させて頂きましたのでぜひご覧下さい。

いつもは機械学習・AI周りばかり講演などをさせて頂いていますが、たまには違う角度から、頻繁に扱う場面のある Azure Active Directory 略して AAD を使って、Web アプリを認証する方法を解説します。

AAD といえば、言わずと知れたID管理&認証のサービスで IDaaS と呼ばれるクラウドサービスですが、もともと Windows サーバに搭載の Active Directory とはまったく違うサービスで、同じ名前が付いて少し混乱を生じているかも知れません。Windows サーバに搭載のものは ADDS = Active Directory Directory Service と呼ばれるもので、いまは AAD の一機能としてプレビューで利用できるようになっています。

■ AAD を認証基盤に使うメリット
AAD はインターネット上のサービスにシングルサインオンしたり、認証をセキュアに統合するためのサービスで、Webアプリやスマホアプリの認証を AAD に処理させると、手間暇かかって面倒な認証基盤の構築やメンテナンスから開放されます。また、多要素認証、セルフサービスのパスワード管理、特権アカウントの管理、ロールベースのアクセス制御、ログインやアプリケーション使用状況の監視や監査、アラート機能など、豊富な機能をレディメイドで活用できます。

また、O365 や Dynamics CRM なども AAD で認証されているので、そのアカウントを管理する AAD テナントでアプリの認証を行うようにすると、そのアプリから O365 のデータにアクセスさせて、メールや予定表、顧客情報と連動したサービスを構築することもできます。

AAD を Web やスマホアプリの認証基盤として利用するためにすることは大きく3つ。

1つ目は、AAD のテナントを取得すること。
2つ目は、AAD のテナントにアプリを登録すること。
3つ目は、アプリ AAD での認証に対応させること。

【1】AAD のテナントを取得する
もし既に Office 365 を使っている場合には、会社の組織アカウントが AAD で管理されていますので、その AAD のテナントを使用することができます。あるいは、Azure のサブスクリプションの中に AAD をセットアップしてあるのであれば、それを使って頂くこともできます。(Azure Portalからセットアップできます。)

最近は Azure の新しいポータルのメニューにも AAD が追加されましたので、旧ポータルを使わなくても新しいポータルでセットアップしても良いですが、まだ動作に不明瞭な部分もありますので、今のところは併用するか、慣れている人は旧ポータルで操作した方が良いかもしれません。

【2】AAD へのアプリの登録
テナントを取得して適宜設定したら、そこにアプリケーション(Webアプリやスマホアプリ)を登録します。

新ポータルで行う場合には、下図のようにメニューから AAD を選択して AAD の管理画面を開きます。

aad%e6%96%b0%e3%83%9d%e3%83%bc%e3%82%bf%e3%83%ab

画面左側に「アプリの登録」メニューが出てきますので、それを選択し、次に真ん中のペインの上の方にある「+新規」をクリックします。次に必要事項を入力します。AAD で認証するアプリには Web アプリとスマホ等のネイティブアプリとがあると思いますので、プルダウンでは適宜選んで下さい。

aad%e3%82%a2%e3%83%97%e3%83%aa%e7%99%bb%e9%8c%b2

登録が完了すると下図のようになり、GUIDのような形式の「アプリケーションID」が発行されます。これを使ってアプリから認証することになります。より高度なセキュリティを確保したい場合には「キー」を発行してセキュリティを高めることもできます。

AADアプリ登録2.png

【3】アプリの認証を AAD に対応させる

AAD は SAML 2.0、Ws-federation、OpenID Connect といった多様なプロトコルに対応しているので、逆にどれをつかったら良いのかわかりにくくなっているかもしれません。

ここでは、一例として AngularJS を使うなどしてシングルページの Web アプリを作る場合の手順を簡単に説明します。こういった場合、JS から Web サービスにアクセスするかと思います。

GitHub のリポジトリに ADAL = Active Directory Authentication Library for JavaScript というライブラリがあり、JavaScript から AAD 認証をするような場合にはこれを利用します。
https://github.com/AzureAD/azure-activedirectory-library-for-js/tree/dev

詳しい説明やサンプルコードもReadmeに記載されていますので、参考にして試してみて下さい。

■ TIPS

認証に行くテナントを識別する際にドメインを指定する場合があります。
AAD のドメインはデフォルトで「***.onmicrosoft.com」となっていますので、通常はこのドメインをしていします。しかし、独自ドメインを AAD に設定している場合はこのドメインではありません。たとえば「contso.com」といったような、オリジナルで指定したドメインがテナントのドメインとなりますので、注意しましょう。

 

お読み頂き、ありがとうございました!

One thought on “[AAD] WebアプリをAAD認証させる

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中