Active Directoryを通して知る認証・認可(承認)

記事タイトルとURLをコピーする

技術2課の鎌田です。
前回記事で、AWSとActive Directoryとの連携をご紹介しました。
今回は、仕組みを見てみたいと思います。
※なお、この記事では広く用いられているSAMLプロトコルの用語をベースとし、Active Directoryの用語は()書きで補足しています。

目次はこちら。

  1. 認証と認可(承認)
  2. ADFSサーバーの仕組みと用語
  3. ADFSでサポートされるプロコトル
  4. まとめ

1.認証と認可(承認)

まず、アクセスしてきたユーザーの確認に関わる用語と中身を見ていきましょう。

認証」とは、本人確認の機能を指します。
一般的には、ユーザー名とパスワードを入力して、本人かどうかの確認をします。
認証を行うシステムとして、Active Directoryがある、という訳ですね。
認証では、認証に成功すると、TGT(Ticket Granting Ticket)というチケットをActive Directoryに発行してもらえます。

一方、「認可(承認)」とは、ユーザーがリソースにアクセス可能か確認する機能を指します。
例えばですが、ファイルサーバーのアクセスなどは、認可(承認)が行われています。
同じドメインに参加している場合、認可(承認)を行うシステムとして、やはりActive Directoryが使われています。
認可(承認)では、認可(承認)されるとSTというチケットがActive Directoryによって発行され、ST(Service Ticket)の有無によって、アクセス可能かどうかを判定しています。

f:id:swx-chiba:20200715162734p:plain
image-1

しかし、外部のSaaSサービスなどは、当然同一ドメインということはないので、認可(承認)を実施できません。
そこで登場するのが、Active Directory Federation Service(ADFS)サーバーです。
ADFSサーバーが、認可(承認)に必要な情報を生成して、やり取りを行います。

2.ADFSサーバーの仕組みと用語

ADFSを使った認可(承認)では、認可(承認)されると「トークン」と呼ばれる情報を生成し、やり取りが行われます。
トークンはADFSサーバーによって、改ざん防止のためデジタル署名されます。
このデジタル署名の時に使われるのが、「トークン証明書」です。
トークンの中身の1つ1つの情報を「クレーム」と呼びます。

このクレームに入れることが出来る情報のソースとして、Active Directoryの情報を使うことが出来ます

トークンが発行され外部サービスに提示されるまでは、以下のような流れで行われています。

f:id:swx-chiba:20200715162820p:plain
image-2

このADFSサーバーを使った方式では、外部サービス側ではID情報を作りません。
(前回のブログでも、AWSにはIAMロールを作成したのみで、IAMアカウントは作成しませんでしたね。)
この連携方式を、「クレームベースセキュリティ」と呼びます。
この方式では、外部サービス側は信頼されたトークンのみを受け付けるようになっていないと、大変です。
この時、ADFSサーバーと外部サービスとの間で、STS信頼という信頼関係を構築しておくことで、
ID情報を作らなくてもID情報が外部サービスになくても大丈夫なようになっているのです。

一方、外部サービス側にもアカウントを作成する方式は、「ID連携」と呼ばれます。
(当社で取り扱っているOne LoginなどがID連携を行うことができます。)
ID連携の際に、外部サービス側にIDを登録するプロセスが「プロビジョニング」という名前で呼ばれています。

f:id:swx-chiba:20200715162847p:plain
image-3

ADFSで、認証を行う側はClaim Provider(CP)、認可を行う側はRelying Party(RP)と呼びます。
CP側はActive Directory、RP側はSaaSサービス、と考えると分かりやすいでしょう。

先ほどの流れの図で当てはめると、以下のようになります。

f:id:swx-chiba:20200715162914p:plain
image-4

3.ADFSでサポートされるプロコトル

ADFSサーバーでは、WS-FederationとSAMLプロトコルに対応しています。
使われる用語も異なるので、表に整理しました。
なお、単にSAMLと言ってしまうと、SAMLプロトコルなのか、SAMLトークンなのかが判然としないため、プロトコルを指す場合は「SAMLプロトコル」と明示しましょう。

プロトコル WS-Federation SAMLプロトコル
トークンの種類 SAMLトークン など SAMLトークン など
主なID連携の動作 パッシブ(HTTP/HTTPS) WebSSO(HTTP/HTTPS)
認証/認可(承認)のシステム名 認証側:Claim Provier(CP)
認可(承認)側:Relying Party(RP)
認証側:IDプロバイダ(Idp)
認可側:サービスプロバイダ(SP)
実装されているアプリケーション Office365 AWS
Salesforce
Google Appsなど

4.まとめ

  • 認証と認可(承認)にはActive Directoryを使うことができるが、外部サービスとの連携にはADFSサーバーが必要。
  • ADFSサーバーの主な役割は、「トークンの生成」しての認可(承認)、トークンのデジタル署名。
  • ADFSサーバーでの連携方式は「クレームベースセキュリティ」という。

たくさん用語があって、少し分かりづらいかも知れませんね。
それぞれの用語は、前回のブログと並べて見ていただくと、少し分かり易くなると思います。

ADFSを中心としたシングルサインオン環境は、正しく構築・運用すれば、大変便利なものです。
お悩みのことなどありましたら、是非当社にご相談ください。