身份认证的演进:从LDAP到现代协议

March 28, 2024

Technology

ネットワークアプリケーションのアイデンティティ認証メカニズムを構築する際、エンジニアはさまざまな選択肢に直面します。一つのアプローチは、カスタム認証メカニズムを設計することであり、これは特定の新規開発アプリケーションに適している場合があります。もう一つのアプローチは、広く認知されている人気のある標準を採用することであり、これによりレガシーアプリケーションとの互換性が向上するだけでなく、他のサービスとの相互運用性も確保され、統合プロセスが簡素化されます。したがって、堅牢で相互運用可能なアイデンティティ認証サービスを構築するためには、一般的なアイデンティティ認証技術を深く理解することが重要です。

LDAP / Active Directory

LDAP(Lightweight Directory Access Protocol)は、ディレクトリサービスにアクセスするために特別に設計されたIPベースのプロトコルです。特筆すべきは、MicrosoftのActive Directoryもこのプロトコルをサポートしていることです。

ディレクトリサービスは、ユーザー、組織、デバイスなどのさまざまなリソースを一意の識別子を使用して整理する特殊な形式のデータベースです。この構造化されたデータストレージにより、クライアントは特定の検索構文を使用してデータベース内の必要なリソースをクエリできます。ディレクトリサービスに保存されたリソースは、ユーザーの名前、メールアドレス、電話番号などの豊富な属性情報を含むことができます。特定のLDAPサーバーには、通常、属性キーと値の要件を指定するためのいくつかの組み込みテンプレートがあり、データの正確性が確保されます。

企業環境では、LDAP/Active Directoryアプリケーションが特に広く普及しています。企業は、従業員情報を部門ごとに階層構造で保存し、各「ユーザー」リソースには従業員の基本情報とユーザー資格情報を保存できます。

アプリケーションにおけるLDAPの統合

多くの既存のアプリケーションでは、LDAPプロトコルの統合が重要な機能となっており、組み込みまたは拡張メカニズムに基づいて実装されています。Apache APISIXを例にとると、柔軟なプラグインメカニズムを通じてLDAP統合を成功させています。この統合により、クライアントは基本認証形式でユーザー名とパスワードを送信し、LDAPサーバーでユーザー資格情報をクエリして検証し、APIリクエストを効果的に保護できます。

エンジニアが開発するアプリケーションやサービスでは、LDAPプロトコルを利用してユーザー管理と認証機能を実装することもできます。特定のプログラミング言語が提供するLDAPクライアントライブラリを使用することで、LDAPサービスに簡単に接続できます。接続が確立されると、Search APIを使用してディレクトリ内のリソースをクエリし、必要なユーザー属性を取得できます。

LDAP

LDAPの長所と短所

長所

  • 集中ストレージと効率的なクエリ: データはディレクトリサービスに集中して保存され、その組織構造によりクエリ速度が大幅に向上し、大量の読み取りリクエストを容易に処理できます。

  • 直感的なツリー構造: ディレクトリサービスのツリー構造は、現実世界の組織構造に非常に近く、リソースがリーフノードに便利にインデックス化され、ユーザーの直感に合致します。

  • 広範なアプリケーション統合: その成熟度と安定性により、LDAPプロトコルは多くのソフトウェアで組み込みの統合サポートを提供しています。

短所

  • 時代遅れのプロトコル: LDAPプロトコルは以前に設計され、ASN.1エンコーディングを使用しており、現在の主流であるJSON形式とは大きく異なるため、統合がやや困難です。

  • 機能の制限と互換性の問題: プロトコル自体の機能が限られているため、一部のLDAPサーバーソフトウェアは非標準的な手段で拡張する必要があり、異なるLDAPサーバー間の互換性に影響を与える可能性があります。

  • 複雑な設定とセキュリティの課題: LDAPサーバーの設定には、TLSやデータアクセス制御など多くのセキュリティ要素が関与し、正しい設定を確保するために豊富な経験が必要です。そうでないと、データ漏洩のリスクがあります。

  • アプリケーション実装の難しさ: アプリケーションの観点から、LDAPサーバーへのアクセスはデータベースへのアクセスと似ており、Searchなどの低レベルのAPIを使用してデータにアクセスする必要があり、アプリケーション開発者にとって高い要求が課されます。

LDAPの近代化

現在の技術環境では、LDAPプロトコルはやや時代遅れに見えるかもしれませんが、多くの主流ソフトウェアによって広くサポートされている古典的な標準です。多くの企業は依然としてLDAPに依存して組織内のさまざまなリソースを管理しており、その安定性と信頼性は実際のアプリケーションで検証されています。

現代のアプリケーションにおけるLDAPプロトコルのいくつかの制限を克服するために、いくつかのミドルウェア製品が登場しています。これらのミドルウェアは内部でLDAPプロトコルをカプセル化し、より近代的で使いやすいプロトコルインターフェースを提供します。例えば、OpenID Connectなどです:

これらはプロトコルの変換と適応を処理し、アプリケーション開発者の統合作業量を減らすために近代的なプロトコルを提供します。

これらのミドルウェア製品は、プロトコルの変換と適応を担当し、アプリケーション開発者により近代的で効率的な統合方法を提供し、LDAPを統合するために必要な作業量を効果的に削減します。

HTTPベースのアイデンティティ認証メカニズム

アイデンティティ認証の分野では、HTTPベースのプロトコルが重要な役割を果たしています。OpenID Connect(OIDC)、SAML、CASなどがその代表です。

OpenID Connect

OpenID Connectは、OAuth 2の拡張であり、認可機能だけでなく、アイデンティティ認証機能も強化しています。OAuth 2の機能が限られているのに対し、OIDCはより豊富な機能を提供します。例えば、コアのid_token機能やOIDCディスカバリ標準などです。

OIDCの利点は、その広範なアプリケーションと豊富なエコシステムにあります。成熟したサーバーとクライアントの実装がさまざまなプログラミング言語で利用可能であり、統合と展開が容易です。さらに、OIDCは他の技術と組み合わせることができます。例えば、JSON Web Tokens(JWT)をトークンとして使用し、そのステートレス性を活用してアイデンティティ認証サービスの負荷を軽減できます。

CAS

CAS(Central Authentication Service)は、Webシナリオで広く使用されているアイデンティティ認証プロトコルであり、シングルサインオン機能を実装するために使用されます。CASプロトコルは設計が比較的シンプルで、さまざまなアプリケーションに簡単に統合できます。さらに、これは本番環境で使用できます。Keycloakなどのアイデンティティ認証管理プラットフォームもCASプロトコルをサポートしており、そのアプリケーション範囲をさらに拡大しています。

SAML

SAML(Security Assertion Markup Language)は、長年にわたって使用されているアイデンティティ認証プロトコルであり、現在のバージョンであるSAML 2.0は2005年にリリースされました。このプロトコルは、サービス間通信のエンコーディング方法としてXMLを使用し、独自のデータ構造を定義しています。しかし、SAMLの実装が比較的複雑で、使用が直感的でないため、OIDCやCASなどの近代的なアイデンティティ認証プロトコルと比較すると、その利点はあまり目立ちません。

それでも、Keycloakなどのアイデンティティとアクセス管理ソリューションは、特定のシナリオでのアイデンティティ認証ニーズを満たすために、SAMLのサーバー実装を提供しています。

Cyber Security

ユーザーアイデンティティの同期と管理

一般的なシナリオを考えてみましょう:企業は従業員に複数の内部アプリケーションシステムを提供し、シングルサインオンを採用してユーザーエクスペリエンスを向上させています。しかし、新しい従業員が加入したり、古い従業員が退職したりするたびに、IT管理者はさまざまなシステムで手動でアカウントを作成または削除する必要があり、このプロセスは煩雑であるだけでなく、潜在的なセキュリティリスクも伴います。

この問題に対処するために、IT管理者は標準化された自動化されたユーザーアカウント管理ツールを緊急に必要としています。このような状況で、SCIM(System for Cross-domain Identity Management)標準が登場しました。

SCIM標準は、IDP(アイデンティティプロバイダー)とアプリケーションシステムまたはSaaSサービス間のシームレスな相互運用性を実現するために設計された一連の特定のREST APIを定義しています。これらのAPIを通じて、ユーザーはアカウントを自動的に設定でき、アカウントの作成、更新、削除のプロセスを大幅に簡素化します。

SCIMプロトコルは、その導入以来、広く採用され、応用されています。例えば、Microsoft Entra ID(旧Azure Active Directory)やOktaなどの有名なアイデンティティ管理ソリューションは、SCIMプロトコルをサポートしています。さらに、Keycloakなどのオープンソースのアイデンティティとアクセス管理プラットフォームも、SCIMサーバー/クライアント拡張機能を提供し、そのアプリケーションシナリオをさらに豊かにしています。

結論

この記事では、アイデンティティ認証シナリオで広く使用されている主要な技術を簡単に概説しました。効率的で安全なアイデンティティ認証サービスを構築する過程で、これらの成熟した技術ソリューションは重要な役割を果たします。これらは統合作業を大幅に簡素化し、作業効率を向上させるだけでなく、セキュリティリスクを効果的に低減し、企業データとユーザー情報の安全性を確保します。これらの技術ソリューションを活用することで、現代のアイデンティティ認証の要求によりよく応え、企業とユーザーにより便利で安全なエクスペリエンスを提供できます。

Tags: