SAML/OIDC は認証結果の連携手段
- SAML(Security Assertion Markup Language)やOIDC(OpenID Connect)は、IdP(Identity Provider)で行われた認証の結果を、アプリケーションに伝達するプロトコルです。
- そのため、アプリケーション側でトークンの検証、ユーザー認可の実装、セッション管理が不適切であれば、SAML/OIDCを利用していてもセキュリティは担保されません。
SAML/OIDC が「高セキュリティ」であるという印象は、機能の豊富さによるもの
- SAML/OIDC は MFA(多要素認証)、SSO(シングルサインオン)、認証ログの一元化、ログインルールのポリシー制御などに対応しやすいため、「セキュリティが高い」という印象を持たれがちです。
- しかし、これらは IdP の機能や運用によるものであり、プロトコルそのものが安全というわけではない。
LDAPは「古くて脆弱な認証方式」という認識は誤り
- LDAP はそもそも認証プロトコルではなく、ディレクトリ情報(ユーザー名やハッシュ化されたパスワードなど)を管理するためのデータベースインタフェースです。
- LDAP を用いた認証は、アプリケーションが
bind
などを用いて明示的に行う。これはアプリ側で認証制御が可能であることを意味し、運用次第では非常に堅牢な構成となり得ます。 - 適切に TLS を用い、アカウントロック・ログ監査などを導入すれば、LDAP ベースの認証が「低セキュリティ」であるという評価は当たりません。
本質は「プロトコル」ではなく「実装と運用」の品質にある
- SAML/OIDC も LDAP も、それぞれの使い方次第で安全にも危険にもなる。
- セキュリティの高さは、利用するプロトコルの種類ではなく、設計・実装・運用・可視化・監査体制の全体で決まる。
もっというと目的が違う
SAML/OIDC も LDAP も、どのようなシーンでも使用できるが、SAML/OIDC は基本的に Web アプリケーションが前提であり、そしてインターネット上での連携で多く使われると思います。
LDAP は Linux 認証を含め多くの用途で利用可能です。どちらかというと、プライベート空間での利用が多いとも言えます。
個人的な観点では、システム管理を行うレイヤでは LDAP 認証が適しており、一般ユーザーレイヤでは SAML/OIDC が良いのではと思います。
LDAP 連携はシンプルですが、SAML/OIDC はやたらと面倒なことが多く、OSS 系であれば割としっかりしていますが、古めのプロダクトだとかなり中途半端な対応、または情報が非常に不足が多いです。
LDAP より SAML/OIDC の方が高セキュリティであるという幻想