2

Kerberos 5NegotiateAuthenticationを使用してユーザーを認証するPerlベースのWebアプリケーションを作成しようとしています。私が使用しているPerlWebフレームワークは、非CGIの自己完結型の動作モードのPerlDancerです。LinuxのFedoraディストリビューションでこれを実行しています。

Negotiate Authenticationは、ユーザーのブラウザーから転送された既存のKerberosチケットを使用するか、通常の基本認証を使用して、ユーザーが最初のKerberosチケットを確立できるようにすることができます。これの最終的な効果は、ネゴシエート認証をサポートするサイトがSSO環境にシームレスに統合されることです。

CPANにはAuthen::Krb5モジュールがあります。これは、ネゴシエート認証を提供するための基盤になると思いますが、CPANではクライアント側のモジュールしか見つかりません。これらのクライアント側モジュールは、非常に単純な基本認証のバックエンドとして、または最初のネゴシエート認証チケットを確立するために使用できますが、ネゴシエート認証自体を実行することはできません(例:Authen :: Krb5 :: Easy)。

ここでPHPの実装を見つけました。付属のガイド方法は、Negotiate Authenticationがどのように機能するか、およびPerl(または任意の言語)用に作成されたNegotiateAuthenticationライブラリがWebアプリケーションでどのように使用されるかについての優れた高レベルのアイデアを提供します。理想的には、このPHPライブラリと同様のインターフェイスを持つPerlライブラリを使用したいと思います。

Perl Negotiate Authenticationサーバー側ライブラリは存在しますか?何も存在しない場合、それを書くための最良の方法は何でしょうか?

4

2 に答える 2

0

mod_auth_kerbまたは、サーバー環境からmod_auth_spnego読み取ります。REMOTE_USERあなたは終わった。

于 2012-12-14T22:28:39.753 に答える
0

さらに検索を行ったところ、基本的に Negotiate/SPENGO/RFC4559 のサーバー側を実装するすべてのライブラリは C で記述されており、通常は Apache の mod_auth_kerb に基づいています。

Perl ライブラリは表示されませんでしたが、PyKerberosと呼ばれる Python 2 用のライブラリを見つけました。これはソースで十分に説明されているようで (他のライブラリにはまったく欠けているもの)、おまけとして、この Python 2 モジュールはディストリビューション パッケージ リポジトリ (Fedora の python-kerberos) から広く入手できるようです。

現在、私の質問に対する最良の答えは、Perl の Inline::Python モジュールを介して Perl から PyKerberos を呼び出すことです。このソリューションはおそらく遅い (Perl -> Python -> C) ですが、私のアプリケーションには重大なパフォーマンス要件がないため、十分なはずです。

于 2012-12-17T15:55:40.577 に答える