ここまでの説明で、Azure ADへ参加することにより、デバイス−アプリケーション間のシングルサインオンがクラウドサービスにおいても実現でき、Microsoft Intuneを使うことである程度のデバイス管理ができることが分かる。
次に、Azure AD参加によるデバイス−アプリケーション間のシングルサインオンを裏側で支えている「Microsoft Passport」について、オンプレミスのActive Directoryへの参加と統合Windows認証と対比しながら解説する。
結論から述べると、いかにしてパスワードなどの認証情報を拡散させずに利便性を向上するか、が焦点となっている。実はデバイス−アプリケーション間のシングルサインオンを実現するための基本的な考え方はオンプレミスのActive Directory参加でもAzure AD参加でも大きな違いはない。異なるのは利用しているプロトコル(Kerberos対HTTPベース)と、サインイン時に初期チケットを取得する際のユーザー認証の考え方の2点である。
まずは考え方を理解するために、これまで統合Windows認証を支えてきたKerberosによるデバイス−アプリケーション間のシングルサインオンの仕組みを整理しておく。
最初に、統合Windows認証の処理の流れを解説する。詳細は省くが、PCへのサインインからリソースへのアクセスは以下のようなステップとなっている。
これに対して、Azure AD参加時のシングルサインオンについては、TGTの代わりに「PRT(Primary Refresh Token)」、STの代わりに「Access Token」を使用する。この仕組みを、後述のデバイス登録の仕組みと合わせて「Microsoft Passport」と呼ぶ。
このように従来の統合Windows認証でもMicrosoft Passportでも、サインイン時に取得した初期チケット(TGT/PRT)をリソースへアクセスするための個別チケット(ST/AT)へ交換して利用するという点において、考え方に大きな違いはないことが分かる。
同様に、ドメインへの参加しているデバイスの識別についても、両者は非常に類似した仕組みになっている。
オンプレミスのActive Directory参加ではコンピューターをドメイン上に登録する際、コンピューターアカウントとパスワードの生成が行われる。以後、生成されたアカウントとパスワードでコンピューターを認証することにより、信頼済みのコンピューターでのみユーザーがサインインできるようになっている。
それに対してAzure AD参加では、鍵ペアを利用したコンピューター認証を行っている。Azure ADへの参加の際、PC上で鍵ペアを生成し、秘密鍵をデバイス上のTPM上へ、公開鍵をAzure ADのDRS(Device Registration Service)へそれぞれ登録する。以後は、先に述べた通り、ログオンする際はPC上の秘密鍵による署名をAzure AD側の公開鍵で検証することで、サインイン〜PRTの発行が行われることとなる。
最後に、一番の変化点となっているデバイスへのサインイン時のユーザー認証の役割について解説する。
先に述べたようにAzure AD参加済みデバイスへログオンする際は、あくまでTPM上の秘密鍵によって署名されたリクエストをAzure AD側がペアとなる公開鍵で検証することで完結している。そのため、ユーザー自身の認証がAzure AD側で行われているわけではない。この点で、従来のActive DirectoryでのKerberos認証のように、ユーザーIDとパスワードを暗号化してドメインコントローラーへ送付する仕組みとは大きく異なる。
Microsoft Passportを利用したログオンプロセスでは、ユーザー認証はあくまでTPM上の秘密鍵を取り出す目的で行われ、デバイス上で完結する。そのため、ユーザーは新規デバイスでサインインする都度、そのコンピューターでのみ通用するPINコードの登録を行う必要がある。
このように、TPM上から秘密鍵を取り出すための手段としてのみユーザー認証が行われるため、認証手段についてはデバイスの特徴に合わせてさまざまな方法を選択できるようになっている。このための手段の一つが「Windows Hello」と呼ばれる生体認証のフレームワークである。
このように、鍵ペアを使ったデバイス認証の仕組みと、TPMから秘密鍵を取り出すためにデバイス側で行われるユーザー認証を組み合わせることにより、ネットワーク上を流れるユーザー自身の認証情報(パスワード)は極小化され、全体としてセキュリティが向上されている。これもIDaaSとデバイスの連携が強化されたことにより得られるメリットの一つである。
ここまでの解説してきた相違点をまとめると、以下の表の通りとなる。
フェーズ | Azure AD参加 | オンプレミスAD参加 | ||
デバイス−アプリケーション間のシングルサインオン | 認証後の元チケット | PRT(Primary Refresh Token) | TGT(Ticket Granting Ticket) | |
リソースアクセス用チケット | Access Token | ST(Service Ticket) | ||
デバイス登録 | 認証情報の生成と登録 | 鍵ペアの生成と登録 | コンピューターアカウントとパスワードの生成と登録 | |
サインイン | ユーザー認証 | デバイス内で実施(ネットワークを経由しない) | ドメインコントローラーで実施(ネットワーク経由) | |
コンピューターの認証 | 秘密鍵による署名を公開鍵で検証 | コンピューターアカウントのパスワードによる認証 | ||
オンプレミスAD参加とAzure AD参加の技術的な比較 |
従来のAzure ADとAD FSの組み合わせによるハイブリッド構成では、社内でドメインに参加したPCでAzure ADと連携したアプリケーションにアクセスする際、IDだけは入力する必要があった(IDを入力するとAzure ADによりAD FSへリダイレクトされ、統合Windows認証によりシングルサインオンされる)。
しかし、「Azure AD Connect」を使うと、ドメインに登録されたWindows 10デバイスの情報をAzure ADへ同期することでMicrosoft Passportに必要な公開鍵の情報がAzure ADに登録される。そのため、再度IDを入力することなくアプリケーションを利用することが可能になっている。
Windows 10とAzure ADを使ったデバイスとアプリケーションの間のシングルサインオン、およびWindows Helloについては、筆者が制作した動画やブログ記事で解説しているので参考にしていただきたい。
■Channel 9で公開している筆者の解説ビデオ
■筆者ブログ「IdM実験室」の関連記事
■SlideShareで公開している筆者のスライド
Copyright© Digital Advantage Corp. All Rights Reserved.