3

mod_auth_kerbサーバーへの認証に使用する理由を理解するのに問題がありKerberosます。

を使用してWebサイトを開発していDjango + mod_wsgi + Apacheます。

私の Web サイトの最初のページでは、ユーザーに入力username/passwordを求めます。私の Django の 1 つappが取得し、ユーザーを kerberos サーバーに認証するためにusername/password使用します。Python kerberos module

ここでどこを使用する必要がありmod_auth_kerbますか?

を有利に使用する力があることは理解していますが、username/passwordこれが を使用する理由mod_auth_kerbですか?

4

1 に答える 1

5

mod_auth_kerb は次の 2 つのことを行うことができます。

  1. HTTP Basic を介してユーザーにユーザー名とパスワードの入力を求め、サーバー側で Kerberos を使用してそれらを検証する、または

  2. HTTP ネゴシエートを介して、ブラウザが両側で Kerberos を使用して認証できるようにします。クライアントが Kerberos をサポートしている場合、シングル サインオンが提供されます。クライアントは、ユーザーがログインしたときに取得した資格情報を使用して、パスワードの入力を求めることなく、Kerberos システムを介してサーバーに対して自動的に認証を行います。

あなたはアプリケーションで #1 を実行しています。これを Apache に移行すると、すべてのアプリに対して 1 回一貫して実行できるようになると便利な場合があります。#2 まったく行っていませんが、Kerberos インフラストラクチャが利用可能な環境でのみ役立ちます。

警告の言葉: 「Python kerberos モジュール」については知りませんが、パスワードの検証が安全に行われていない可能性が非常に高いです。これを行うと主張する多くのことは、「kinit」と同等のことを行います。ユーザー名とパスワードを使用して、最初の Kerberos 資格情報 (TGT) を取得し、動作しているように見える場合は成功を主張します。問題は、サード パーティ (Kerberos 認証サーバー (キー配布センター)、または KDC) にパスワードの検証を依頼したことですが、実際に実際の KDC と通信していることを確認していません。パスワードを教えてくれたのと同じユーザーからメッセージを受け取ったのかもしれません。もちろん、そのメッセージには「パスワードは正しいです」と書かれています。これを適切に行うために、検証者は Kerberos レルム (「プリンシパル」) で独自の ID を必要とします。TGT を使用してそれ自体のチケットを取得し、それを検証するという追加の手順を実行します。これにより、返信が本物の KDC からのものであることが保証されます。

これを行うもう 1 つの一般的な方法は、KDC が Windows ドメイン コントローラーの場合、LDAP を使用することです。LDAP 経由でドメイン コントローラーに接続し、パスワードで認証します。DC は Kerberos 自体に対してパスワードをチェックします。もちろん、同じ問題があります。正規のドメイン コントローラと通信していることを確認する必要がありますが、証明書を介して TLS を使用すると、より簡単にそれを行うことができます。

于 2013-07-27T06:13:55.677 に答える