こんにちは。
ここでは、Azure Active Directory について、セットアップ方法やプログラム コードなどを開発者の視点で紹介します。(数回にわけて紹介します。)
まず今回は、Azure Active Directory の位置づけと、利用環境に関する基本情報を記載します。
開発者にとっての Azure Active Directory (Microsoft Entra ID)
- Azure Active Directory とは (事前準備)
- Web SSO 開発 – .NET 編 (WS-Fed)
- Web SSO 開発 – PHP, Node.js 編 (SAML) ※英語
- SaaS 連携 : Google Apps (SAML)
- SaaS 連携 : kintone (SAML)
- OpenID Connect サポート (OpenID)
- OAuth による Client の開発 (OAuth)
- OAuth による Service の開発 (OAuth)
- Common Consent Framework – Client 側 (OAuth)
- Common Consent Framework – Service 側 (OAuth)
- Application Role の使用 (OAuth)
- Backend Server-Side アプリの開発 (OAuth)
- Federated Credentials (OAuth) ※英語
- Login UI が表示できない場合のフロー (OAuth)
- JavaScript Application の開発 (OAuth)
- Windows 10 との SSO 開発 (Web Account Manager API)
- Active Directory (企業内 Windows 環境) との Federation と同期
- Multi-Factor Authentication
- Graph API
Azure Active Directory とは
Windows Server Active Directory (いわゆる Domain Controller, Domain Services) をご存じの方は多いと思いますが、Microsoft Azure Active Directory (Azure AD, AAD) を使用すると、クラウド上で提供されているサービスを使って (つまり、サーバーをインストールすることなく)、ユーザー管理、認証、認可などのアイデンティティ基盤を利用できます。
その一方で、内部実装は、Windows Server Active Directory とはまったく異なっており、例えば、Google Account や Facebook Account を使う場合、そもそも「Windows ドメイン」のような独自な概念は使わず、OpenID Connect や OAuth などのオープンな仕様に基づいて周辺と連携しますが、Azure Active Directory (Azure AD) も、むしろ こうしたクラウド上のオープン プラットフォームを強く意識して設計されています。
補足 : Windows 10 から Azure AD によるマシンの参加 (Azure AD Join) が可能になりました。
Google Account や Facebook Account のように、「Google アプリケーションを使うためのアカウント」、「Facebook アプリケーションを使うためのアカウント」ではなく、特定のアプリケーションとは無関係に、一般の企業や学校などの組織のユーザーと、そこで使用される各種アプリケーションなどを管理できる汎用的なアイデンティティ基盤 (入れ物) として提供されています。
また、クラウドで Microsoft が提供しているもう 1 つのアイデンティティ基盤として Microsoft Account (Microsoft アカウント) がありますが、Azure Active Directory で管理されるアカウントは Organization Account (組織アカウント, Work or School Account, 職場または学校のアカウント) と表現され、管理者不要で使用する Microsoft Account (Microsoft アカウント) とは異なり、組織ごとに「管理者」を立て、そこに属するユーザー (複数) を管理するような使い方を想定しています。
以下に、この Azure Active Directory の特徴を箇条書きします。
- Identity as a Service :
サーバーのインストールやセットアップ、プロトコルの開発などもいっさい不要で、契約ベースで利用可能なクラウド上のアイデンティティ基盤です。
Identity Provider としてユーザーやその属性情報を管理したり、その組織で使う (SSO などで使用可能な) アプリケーションを管理できます。 - Open, Connective, and Pluggable :
さまざまな方式 (OpenID Connect など)、さまざまな利用シーン (バックエンド接続など)、さまざまな開発環境 (開発言語など) といった多くの周辺環境における相互利用を意識しています。
利用者アプリケーション (Relying Party, または SaaS アプリ) の接続プロトコルとしても、現在、WS-Fed, SAML-P, OpenID Connect (ベースの OAuth 含む) をサポートします。
また、同期可能なアイデンティティ・プロバイダー (Identity Provider) としては、Windows Server Active Directory、Shibboleth、その他のカスタムな Identity Provider (Office 365 Identity program で Certify されたプロバイダー) を選択できます。カスタム Provider の実装手順については「Office 365 SAML 2.0 Federation Implementers Guide」を参照してください。(SAML 2.0、LDAP v3 によるカスタム Provider とのディレクトリー同期も可能です。) - クラウド ベースの統一的アイデンティティ基盤 :
また、Office 365、Dynamics CRM Online、Windows Intune、そして Windows といった Microsoft 製品 (サービス) においても、そのベースとして (統一的な ID 基盤として) Azure AD を使用しています。
これら Office 365 や Dynamics CRM Online は、あくまで接続されている「アプリケーションの 1 つ」であり、Google Apps、Salesforce など、その他のさまざまなアプリケーションも接続可能です。Azure AD は「Microsoft アプリのアイデンティティ基盤を借りている」のではなく、「皆さん自身の組織におけるアイデンティティ基盤」として周辺アプリと連携して使用できます。
上述の通り、Office 365 を使用している方は、既に Azure AD を使用しており、管理画面などを使って独自のセットアップも可能です。
Azure AD の Edition
Azure AD には無償版 (Free) と、有償版の Basic、Premium、さらに Office 365 契約者用 の 4 つの Edition があります。
Azure AD の一般的利用は無償版 (Free) で可能ですが、有償版 (Basic, Premium) を使うことで Enterprise レベルの管理 (Group を使った一括設定、詳細のセキュリティ レポートなど) や追加の高付加価値の機能 (多要素認証、Application Proxy など) が利用できます。
また、Office 365 用の Edition は、無償版 (Free) の全機能はもちろん、有償版の一部の機能 (Self-Service Password Reset, 多要素認証, など) と MDM (Mobile Device Management) の一部機能が Build-in されています。
なお、本連載で紹介する開発・テスト レベルの利用であれば、無償版 (Free) で充分です。
ディレクトリの準備
Azure Active Directory を使用するには、まず、ディレクトリー (テナント) を作成する必要がありますが、これは、Office 365、Azure などを契約 (利用開始) することで自動で作成されます。また、Azure Portal を使って新規にディレクトリー (テナント) を作成することも可能です。(複数のディレクトリを持っている場合、または、複数のディレクトリに権限付与されている場合の管理方法については後述します。)
また、Microsoft Account を使って Azure のテナントを使用している場合、一点 注意があります。既定で登録されているユーザー (下図) が 1 名存在していると思いますが、このユーザーは、このテナント (*****.onmicrosoft.com) の組織アカウントではなく、 このテナントの管理者権限が付与された外部のアカウント (Microsoft Account) です。
このユーザーでは Azure Active Directory の PowerShell にログインできないなど、Azure AD そのものを管理する上でいろいろ問題が発生してしまうので、あらかじめ、Global Administrator (全体管理者) の権限を持つ組織ユーザーを作成して、特に PowerShell を使用する場合は、この Global Administrator (全体管理者) のユーザーで以降の管理をおこなってください。
Azure Active Directory の管理 (画面の場合)
画面 (UI) を使用した Azure Active Directory の管理方法を簡単に見てみましょう。
前述の通り、多くの機能が無償で使用できるため、この投稿で紹介する基本的な確認であれば課金されることはありません。
まず、Azure Portal (https://portal.azure.com/) にアクセスし、管理者のアカウントでログインします。
補足 : Azure の Classic Portal (https://manage.windowsazure.com/) の頃と異なり、Azure Portal では Microsoft Azure のサブスクリプションは不要です。例えば Office 365, Enterprise Mobility & Security などを使用している場合、これらサブスクリプション (契約) のみで使用できます。
補足 : Microsoft Account を使った既にお持ちの Azure サブスクリプションでも、Azure Active Directory の管理画面で Office 365 のディレクトリーを管理できます。この手順は「MSDN Subscriber 向け Office 365 API Dev 環境作成」に記載しました。
Azure Portal にログインしたら、ナビゲーションから [Azure Active Directory] を選択します。
画面を使って、ユーザー/グループの管理 (作成/編集/削除)、ドメインの管理 (既定は ***.onmicrosoft.com。カスタム ドメインも使用可能)、使用するアプリケーションの管理、Windows Server Active Directory との Sync の設定など、Directory の管理がおこなえます。(画面を見ればわかるので、詳細解説は省略します。)
なお、ここで登録したユーザーやアプリケーションなどは、もちろん、他の Directory からは参照できません。(Multi-tenancy が維持されています。)
いずれ紹介しますが、アプリケーションを作成 (プログラミング) して Azure AD で使えるようにするには、事前にアプリケーションを Azure AD に登録しておきます。
アプリケーションを登録するには、[App registrations] メニューをクリックして、表示される画面で [New application registration] ボタンを押します。
補足 : なお、Office 365 のアカウントを使用して、ここでユーザーの新規作成をおこなっただけでは、Exchange Online のメールボックス (Mailbox) などは作成されません。(ライセンスが割り当てられていないためです。) 例えば、Outlook Online でログインして確認する場合は、Office 365 管理センターで作成したユーザーのメールボックス設定なども追加でおこなう必要があります。
なお、ディレクトリを新規作成したり、ユーザーに権限を付与することによって、1 人のユーザーで複数の Directory (Tenant) を管理できます。この場合、Azure Portal の右上をクリックすることで、管理対象の Azure Active Directory のテナントを変更できます。
Azure Active Directory の管理 (PowerShell の場合)
つぎに、PowerShell を使用した設定方法をみてみましょう。
特に開発者の方は、細かなトラブルシュートなどで PowerShell が必要になることがあるので、この PowerShell のコマンドはおぼえておくと便利です。
Azure AD の PowerShell コマンドを使用するには、PowerShell を起動し、下記のコマンドでモジュールを追加します。
# Install AzureAD in PowerShellInstall-Module -Name AzureAD
つぎに、Azure AD の Directory (Tenant) に接続します。下記 (Get-Credential) を実行すると UserName と Password を入力する画面が表示されるので、Global Administrator (全体管理者) 権限を持つユーザーの ID / パスワードを入力します。
# Set credential with admin username and password$cr=Get-Credential# Connect to Tenant (Directory)Connect-AzureAD -Credential $cr
例えば、この Directory に Application を登録してみましょう。
以下では、SSO などを使用した連携をおこなう Application を新規に登録します。
New-AzureADApplication -DisplayName "TestApp1"
ObjectId AppIdDisplayName-------- ----------------e5a5ef78-44d6-41cd-86ba-c69b1ee20b6a a8d503a7-157e-4a41-8c0b-8331c1ddbf5b TestApp1
この Directory に登録されている Application をすべて確認するには、以下のコマンドを入力します。
Get-AzureADApplication -All $true
ObjectId AppIdDisplayName-------- ----------------e5a5ef78-44d6-41cd-86ba-c69b1ee20b6a a8d503a7-157e-4a41-8c0b-8331c1ddbf5b TestApp125e7dbb2-74c8-46b1-9a7e-c40b80894770 8ea2fe64-9b46-4858-a58a-85843e12abbf TestApp2...
同様に、Directory に登録されている Service Principal をすべて取得するには下記を実行します。いくつかの Service Principal があらかじめ登録されているのが確認できます。(Office 365 を使用している方は、ここに Exchange や SharePoint なども表示されます。)
例えば、下記の AppId 00000003-0000-0000-c000-000000000000 の Service Principal は、Microsoft Graph のサービスです。
Get-AzureADServicePrincipal -All $true
ObjectId AppIdDisplayName-------- ----------------44c3274e-3651-49e3-8aaf-5f9bfa741e6b 00000002-0000-0ff1-ce00-000000000000 Office 365 Exchange Online7cfac7c0-003e-453a-8865-669130c451e6 0000000f-0000-0000-c000-000000000000 Microsoft.Azure.GraphExplorer9bb14ccb-eb00-4eaf-93b4-96f7f56a792f 00000002-0000-0000-c000-000000000000 Microsoft.Azure.ActiveDirectorye3e22230-762e-4431-bd89-e2742b504948 00000003-0000-0000-c000-000000000000 Microsoft Graph...
Directory の Object Id (tenant id と呼ばれるもの) は、下記のスクリプトで取得できます。
この値も、domain の代わりに使用するなど、よく使うのでおぼえておきましょう。
$tenantId = (Get-AzureADTenantDetail).objectIdecho $tenantId
なお、Azure AD の PowerShell コマンド一覧やコマンドのヘルプは、下記で取得できます。
# Get a list of commands in AzureAD moduleget-command -module AzureAD# Get a help for some commandget-help New-AzureADApplication
例えば、画面から Application (ServicePrincipal) を登録すると、内部では、ServicePrincipal の作成と、Azure Active Directory Graph (本連載で後述します) の Application 登録の双方がおこなわれます。
次回以降は、今回設定したテナントを使って、SSO や API 接続の手法を紹介します。
今後も、特に Office 365 の開発者にとっては、Azure のアイデンティティ基盤の理解が重要になってきますので、是非、背景など理解しておいてください。
※ 変更履歴 :
2017/05/26 画面を新ポータル (https://portal.azure.com) に変更
2020/04/20 PowerShell を最新版の Azure Active Directory PowerShell Module version 2 (AzureAD v2) に変更
Categories: Uncategorized
14 replies»