LDAPActiveDirectoryサーバーを介したユーザー認証を会社のWebサイトに統合することに関するいくつかの質問に遭遇しました。Webサイトは主に、ファイル/PDFへの安全なアクセスを提供するために内部的に使用されます。特定の顧客は注文と確認のためにファイルを表示/アップロードできる必要があるため、このサイトにはネットワークの外部からアクセスできます。内部および外部のサイトへの安全なアクセスのために、SSL証明書を用意しています。
現時点では、サイトはパスワード処理にPHPassを使用し、ユーザー情報をMSSQLServerデータベースに保存しています。サイトへのアクセスが必要なユーザーがこのデータベースに追加され、アカウントレベルが登録され、phpassがパスワードの側面を処理します。この方法は非常に安全であり、現在の使用法(内部の従業員、外部の顧客の分離されたデータ)に対して正常に機能します。ただし、システム全体でより多くの障害点が発生します。IE:ユーザーが覚えておく(または忘れる)ための追加のパスワードと、管理者のための追加のアカウント管理オーバーヘッド。
サイトの認証を合理化することを計画する際に、私はログインに利用されるActiveDirectoryユーザー情報を統合することを任されました。すでにADアカウントを持っているので、これは当社の従業員にとってはうまくいくでしょう。ただし、これは外部のベンダーや顧客には機能しません。これは、外部のベンダーや顧客が認証対象のADアカウントを持っていないためです(すべきではありません)。
これにより、最も簡単な解決策は、(ADに対する)「メイン」形式の認証と、作成済みのSQLユーザーDBに対するフォールバックを使用することであると私は信じています。ADの場合と同じように戻ってきたユーザーは、それらの資格情報を使用します。それ以外の場合は、SQL DBでユーザーを検索します(必要なAD以外のアカウントが含まれます)。
質問:
- 上記の検証方法は論理的で安全な計画ですか?そうでない場合は、代わりに何をすべきですか?
- LDAP攻撃/ブルートフォースからどのように保護しますか?
- PHP / SQLでは、パラメーター化/型キャストクエリ、アカウントのロックアウト/タイムアウト、一般的なエラーメッセージ、適切なパスワードハッシュ方法などを利用して、データベースを保護し、ログインを強制的に試行します。
- ldap_bindの場合、ユーザー名とパスワードはネットワークを介してLDAPサーバーに平文で送信されますか?
- このログインはネットワーク全体を対象としているため、ログイン/サイトがセキュリティの最も弱いリンクではないこと、またはパスワード情報へのアクセスが過度に容易にならないようにするにはどうすればよいですか?
注:私の問題はセキュリティのためにPHP Webサイトをプログラミングすることであるため、これはServerFaultではなくStackOverflowに投稿されました。私の質問は、何よりもまず、ADまたはバックアップデータベースへの認証中のユーザーログインのWebサイトへのアクセス、制限、およびアクセス許可の問題に関連しています。