0

イントラネット用の SSO のセットアップに取り組んでいます。ユーザーがアクティブ ディレクトリのユーザー名とパスワードを使用してワークステーションにログインするという考えです。次に、ログイン時に小さなアプリケーションが実行され、一意に識別可能な情報、ユーザー名、およびコンピューターの MAC アドレスがサーバーに送信され、タイムスタンプ付きでデータベースに入力されます。次に、ユーザーがイントラネットにアクセスすると、Java アプレットがユーザーの MAC アドレスをサーバーに送信し、それをデータベース エントリと比較して、指定された時間内に一致するかどうかを確認します。一致する場合は、ユーザーをサインインさせて削除しますデータベースからのエントリ。

残念ながら、私たちのイントラネットは IIS で実行されていないため、NTLM を使用して認証を行うことはできません。これは簡単ですが、要件の 1 つであるクロス ブラウザーとの互換性はありません。私たちのイントラネットは intranet.company.com の形式でしかアクセスできないため、NTLM もオプションではありません。私が知る限り、NTLM はその形式のアドレスでは機能しません。

さて、質問に移りましょう。私は現在、C++ でクライアント認証アプリケーションを作成する過程にあり、正当にログインした Active Directory ユーザーと、アプリケーションを入手してローカル ユーザー名を変更したユーザーを区別する一意の識別子またはトークンを取得する方法が必要です。 ADユーザーに。

はい、これはおそらく間違った方法であることはわかっていますが、今のところそれが唯一の選択肢のようです。やらない以外に何かアドバイスがあれば教えてください。また、NTLM を使用せずにその穴を修正する方法を考えられる場合は、それが作成する巨大な隙間のあるセキュリティ ホールを認識しています。必ず私に知らせてください。

4

1 に答える 1

0

ADは、MicrosoftによるKerberosの実装にすぎません。Kerberosがそのような許可チケットを作成する場合のコア機能の1つ。したがって、その側では、ソリューションはハックではありません。交通事故のように見えるのは検証部分です。

しかし、私はあなたが抱えているクライアント側の問題に完全に迷っています。一般に、ADまたはKerberosの全体的なポイントは、認証されたユーザーをスプーフィングできないことです。ログインしたユーザーのチケットをOSに要求するだけです。誰がアプリを入手するか、または彼のローカルユーザー名が何であるかは関係ありません。OSは、誰がログインしているかを正確に認識しています。

于 2010-07-13T08:15:02.870 に答える