Azure ADのアプリの登録とは

皆さんこんにちは。国井です。
今日はAzure ADの管理メニューにある
[アプリの登録]ってなに?
どう使うの?
についてみていきます。

■ ■ ■

Azure ADを利用する目的っていろいろあると思いますが、多くの方が様々なアプリへのシングルサインオンを実現したいという目的を持っているのではないかと思います。
ここでいう「アプリ」にはSaaS型のクラウドサービスの場合もあれば、PaaSで動作するWebアプリケーションだったり、IaaSの仮想マシンだったりする場合もあるでしょう。

SaaS型のクラウドサービスの場合はSAMLプロトコルを使ってシングルサインオンを実現する「エンタープライズアプリケーション」という設定があるので、これを使います。
これに対して主にWebアプリケーションで認証を行いたい場合や、Webアプリケーション経由でマイクロソフトのクラウドサービスへAPIアクセスしたい、などというときに利用するのが「アプリの登録」というメニューです。

WebアプリケーションからAzure ADで認証をさせてもらう場合、Azure ADからしてみれば、誰だかわからないWebアプリケーションからの認証要求は受け付けたくありません。
そこで、Azure ADでは「アプリの登録」という機能を使ってあらかじめ登録されているWebアプリケーションからであれば認証要求は受け付けるよ!という機能なのです。
ちなみに、このような機能のことを一般的な用語ではサービスプリンシパルと呼んでいます。
ですので、アプリの登録というのはサービスプリンシパルのことなのです。

実装して使い方を確認

他のブログなどでもアプリの登録を使ったWebアプリケーションの登録方法は紹介されているので、ここでは最も簡単にWebアプリケーションを登録し、動作する様子を見てみましょう。

今回用意する材料は次の通りです。

・Webアプリケーション
・Windows Server
・Azure AD

まずWebアプリケーションですが、GitHubにSingle Page ApplicationタイプのWebアプリケーションがあるので、これを入手しましょう。ファイルはapp.js, index.html, msalconfig.js の3つが必要です。

続いてWindows Serverですが、バージョンは何でもいいです。インターネットにつながる環境のWindows Serverを用意しましょう。

用意できたらIISをインストールしておいてください。IISをインストールするときはCGIも一緒にインストールしておきましょう。

無題1

IISのインストールが完了したら、前にダウンロードしたapp.js, index.html, msalconfig.js の3つのファイルをIISをインストールしたサーバーに保存しておきます。ここではc:\spaフォルダーを作って保存しておきました。

次にIISでWebサイトを追加します。c:\spaをサイトのルートとなるような、ご覧のようなサイトを作りました。

無題2

アプリの登録を設定

ここまでの準備ができたら、いよいよアプリの登録を作成します。IISのWebサイトに対応するように、Azure ADの[アプリの登録]からWebアプリケーションを登録します。
無題3

アプリの登録画面ではIISのWebサイトへのURLを[リダイレクトURI]に登録します。このとき、localhostを設定していますが、localhost以外のURLになるとhttpsでなければなりません。そうなると、証明書を用意して、、とか面倒なことになるので、今回はlocalhostにしました。

無題4

登録が完了したら、クライアントIDが生成されるので、これを控えておきましょう。
(ちなみに今回の実装ではクライアントIDだけあればOKですが、一般的なケースでは他のパラメータも必要になります。他のたいていのパラメータは[エンドポイント]というボタンから入手できます)

無題5

それから今回の実装ではOAuth2.0のインプリシットフローと呼ばれる処理を行います。そのため、インプリシットフローに合わせた設定を行うので、アプリの登録内の[認証]項目から[アクセストークン]と[IDトークン]にチェックを付けておきます。

無題9

IISのWebサイトに戻ります。
前にコピーしたmsalconfig.jsファイルを開いて、クライアントIDを張り付けてください。

無題6

ここまでの設定で、Webサイトとアプリの登録の間での連携は完了です。
早速アクセスしてみましょう。
作成したWebサイトのURLにアクセスして、

無題7

ボタンを押すと、Microsoft GraphというAPIを使ってAzure ADユーザーのプロファイル情報を収集しようとするので、この時点でAzure ADの認証が始まります。

無題8

認証が完了すると、初めてアクセスするときだけ「同意」の画面が表示されます。
[承諾]ボタンを押してアクセス許可を与えると、

無題10

ご覧のようにAzure ADにAPIアクセスして、その結果(プロファイル情報)がブラウザに表示されたことがわかります。

無題11

このようにアプリの登録を利用してAzure ADとWebアプリケーションの関連付けすることで、Webアプリケーションの認証・認可にAzure ADが簡単に利用できるようになるのです。

【参考】
https://github.com/MicrosoftDocs/azure-docs.ja-jp/blob/master/articles/active-directory/develop/active-directory-how-applications-are-added.md