Java ベースの Web アプリケーションで LDAP 認証を使用するベスト プラクティスに興味があります。私のアプリでは、ユーザー名\パスワードを保存したくありません。一部のIDのみを保存します。しかし、LDAP カタログに存在する場合は、追加情報 (名前、姓) を取得したいと考えています。
4 に答える
私のチームでは、認証の標準的な方法として LDAP を使用しています。基本的に、LDAP は別のデータベースとして扱います。
ユーザーをアプリケーションに追加するには、LDAP からユーザーを選択するか、LDAP で作成する必要があります。ユーザーがアプリケーションから削除されると、そのユーザーは LDAP に残りますが、アプリケーションにはアクセスできなくなります。
基本的に、LDAP ユーザー名のみをローカルに保存する必要があります。毎回 LDAP から LDAP データ (電子メール、部門など) を読み取るか、何らかの方法でアプリケーションに取り込むことができますが、LDAP データは変更される可能性があるため、LDAP から読み取る方がおそらく簡単でスマートです。もちろん、レポートが必要な場合や LDAP データを広範囲に使用する場合は、LDAP から (手動またはバッチ タスクを使用して) データを取得することをお勧めします。
良い点は、ユーザーが LDAP で無効にされると、すべてのアプリケーションで一度に無効になることです。また、ユーザーはすべてのアプリケーションで同じ資格情報を持っています。多数の内部アプリケーションを使用する企業環境では、これは大きな利点です。1 つのアプリケーションのみのユーザーに LDAP を使用しないでください。そのシナリオでは実際の利点はありません。
LDAP の一般的なベスト プラクティスについては、「LDAP: プログラミング プラクティス」を参照してください。
複数の Web ベースのアプリケーションがあり、LDAP 認証を使用したい場合は、独自の LDAP 認証を作成するよりも、パッケージ化されたシングル サインオン ソリューションの方が適している場合があります。CASは LDAP 認証をサポートしており、アプリケーションに必要なデータを引き出すことができます。
私の大学では、実際に Active Directory サーバーに対するシングル サインオンとして CAS を実装しました。また、CAS を使用して J2EE アプリケーションを認証し、CAS を使用して PHP アプリケーションを認証する作業も行っています。
AD を使用してドメインのユーザーを保持します。ユーザーのタイプに基づいて、特定の OU があります。ユーザーはそれぞれ一意の ID を持っています。これはたまたま学生/従業員 ID であるため、アプリケーションはそれをデータベースの主キーとして使用できます。私たちの PHP アプリケーションには、データベース主導の認証方法があります。J2EE アプリケーションの許可は、LDAP の値から取得されます。
あなたのアプリケーションで頑張ってください。
したがって、ユーザーにIDのみを入力してから、残りの情報をLDAPから取得する必要がありますか?それはとても簡単です。
- LdapInitialコンテキストを作成し、LDAPに接続します
- IDを検索します(属性値として保存する必要があります)-例:(&(userid = john)(objectClass = user))-これは「userid = johnANDobjectClass=user」を意味します
- SearchResultオブジェクトには、すべての属性(または要求した属性)が含まれます
一部のLDAP実装(特にMS ActiveDirectory LDAP)では、匿名ユーザーに接続できません。それらのためにあなたは接続するために技術的なユーザーID/パスワードを持っている必要があります。
上で述べたように、LDAPは通常、多くのアプリケーションがある場合に意味があります。
PS LDAPとは何かを理解するには、ApacheDirectoryStudioを試してください。