Azure上にもActiveDirectoryがあることはご存知でしょうか。このAzureADの紹介としてよく聞く話は以下の感じでしょうか。
- アプリケーションの認証をAzureADに任せられます
- オンプレのActiveDirectoryと連携できます
- 多要素認証が可能です
それ以外にもAzure アクセス制御(Access Control Service略してACS)という今にも消えてしまいそうな(AzureADに移行される予定)機能もありますが、メインは上の3つだと思います。
オンプレのActiveDirectoryが出てきてしまうと気軽に試すにはハードルが高いので、オンプレ連携は後回しにしてまずはAzureADだけでどれぐらい簡単にユーザー認証ができるのかをご紹介したいと思います。
AzureADを利用した場合の認証フローのイメージになります。(イメージです!正確じゃないです!)
背景が緑色の箇所がAzureADに処理を任せている部分です。
認証機能を実現するためには、Id/Passwordを入力する画面と、認証ロジックが必要ですがその部分をまるっとAzureADに任せられるという感じです。
緑色の箇所を手で覆って、丸々なくなった場合を考えてみてください。認証がないWebアプリですよね。
では早速やってみましょう。
AzureActiveDirectoryを作る
Azure管理ポータルの新規ボタンクリックで下図のように選択し、「カスタム作成」をクリックします。
新規のディレクトリ情報を入れていきます。
ここでは
- 名称:uesaka-directory
- ディレクトリ名:uesaka01
- 国/地域:日本
と入力しました。
次に、ユーザーを登録します。作ったばかりのディレクトリから、ユーザーをクリックします。
下段の「ユーザーの追加」をクリックして、ユーザー情報を入力します。
ここでは次のように入力しました。
- ユーザーの種類:組織内の新しいユーザー
- ユーザー名:testuser@uesaka01.onmicrosoft.com
- 名:たかし
- 姓:うえさか
- 表示名:うえさかたかし
- ロール:ユーザー
入力していくと、最後に一時パスワードの取得画面になります。作成ボタンをクリックしてください。
すると、生成されたパスワードが画面に表示されます。このパスワードをメモっておきます。
この画面では一時パスワードを送信するメールアドレスを指定することができます。
つまり、アプリケーションにアクセスするユーザーが増えたとき、そのユーザーに一時パスワードを送信する運用のための機能ですね。
Azure側の準備はこれでおしまいです。それでは認証を委譲するWeb画面を作りましょう。
認証をAzureADに任せるWebアプリケーションを作る
ASP.NET Webアプリケーションを選びます。
次のダイアログで「認証の変更」ボタンをクリックします。ここが今回のポイントになります。
認証の種類を「組織アカウント」にします。そしてドメインのところに最初にAzureADを作ったときに指定した「ドメイン名.onmicrosoft.com」を入力して下さい。
そのほかはそのままです。
OKボタンを押すと、認証画面が突然立ち上がります。この画面では、AzureADに対する管理者権限を持つユーザーで認証する必要があります。
さきほど作ったユーザーは管理者ではありませんので、ここではAzureADを作ったときのMicrosoftアカウントで認証しておいてください。
(管理ポータルにログインするときのMicrosoftアカウントです)
無事に認証が終わってダイアログに戻ると、組織認証としてさきほど入力したドメインが表示されているはずです。MVCを選択の上OKボタンをクリックして、プロジェクトを作成してください。
さて、これだけでもう認証機能が完成しました!めちゃくちゃ簡単ですね。
テストする
F5押して早速実行してみましょう。
すると、いきなり認証画面が現れるかと思います。色々と認証しまくっているとご覧のとおりIDの履歴が表示されちゃいますが、今回は「別のアカウントを使用する」を選択します。
ユーザー作成時のIdと、一時パスワード作成ボタンで自動生成されたパスワード(メモっておいたやつ)を入力します。
良く見ると、
「職場または学校アカウントでサインインする」
と記載されていますね。組織認証にしっかりなっています。
すると、パスワードを一時的なものから正式なパスワードに更新する画面が出てきます。
当たり前っちゃ当たり前の機能ですが、これを自前で実装するのはかなり面倒です。
サインインすると、無事に初期画面が表示されました。
なんて簡単なんでしょうか!!びっくりしますね。
いかがでしたでしょうか。とても簡単なことがお分かりいただけたかと思います。AzureADには
- アプリケーションの認証をAzureADに任せられます
- オンプレのActiveDirectoryと連携できます
- 多要素認証が可能です