2012-12-14 2 views
2

Kerberos 5 협상 인증을 사용하여 사용자를 인증하는 Perl 기반 웹 응용 프로그램을 작성하려고합니다. 필자가 사용하고있는 Perl 웹 프레임 워크는 Perl Dancer이며 CGI가 아닌 독립적 인 운영 모드입니다. 나는 리눅스의 Fedora 배포판에서 이것을 실행하고있다.Kerberos 협상 인증 HTTP Server-Side with Perl을 제공하는 방법

협상 인증은 사용자의 브라우저에서 전달 된 기존 Kerberos 티켓을 사용하거나 일반 기본 인증을 사용하여 사용자가 첫 번째 Kerberos 티켓을 설정할 수있게합니다. 이것의 최종 효과는 협상 인증을 지원하는 사이트가 SSO 환경에 완벽하게 통합된다는 것입니다.

CPAN에는 Authen :: Krb5 모듈이 있습니다.이 모듈은 Negotiate Authentication을 제공하는 토대가 될 것으로 생각되지만 CPAN에서는 클라이언트 측 모듈 만 찾을 수 있습니다. 이러한 클라이언트 측 모듈은 간단한 기본 인증을위한 백엔드 또는 첫 번째 협상 인증 티켓을 설정하는 데 사용할 수 있지만 협상 인증 자체는 수행 할 수 없습니다 (예 : Authen :: Krb5 :: Easy).

PHP here에 대한 구현을 발견했습니다. 동봉 된 how to guide은 협상 인증이 어떻게 작동해야하는지, Perl (또는 다른 언어) 용으로 작성된 협상 인증 라이브러리가 웹 응용 프로그램에서 어떻게 사용될 수 있는지에 대해 높은 수준의 아이디어를 제공합니다. 이상적으로이 PHP 인터페이스와 비슷한 인터페이스를 가진 Perl 라이브러리를 사용하고 싶습니다.

Perl 협상 인증 서버 측 라이브러리가 있습니까? 존재하지 않는 경우 하나를 쓰는 가장 좋은 방법은 무엇입니까?

답변

0

나는 좀 더 검색을했고 기본적으로 Negotiate/SPENGO/RFC4559의 서버 측을 구현하는 모든 라이브러리는 C로 작성되었으며 일반적으로 Apache의 mod_auth_kerb를 기반으로합니다.

비록 펄 라이브러리가 등장하지 않았지만, 나는 PyKerberos라고 불리는 파이썬 2를 찾았습니다. 소스 (다른 라이브러리에서 부족한 부분)에서 잘 설명되어 있으며, 보너스로 Python 2 모듈이 배포 패키지 저장소 (Fedora의 python-kerberos)에서 널리 사용되는 것으로 보입니다.

현재 내 질문에 가장 적합한 대답은 Perl의 Inline :: Python 모듈을 통해 PerK에서 PyKerberos를 호출하는 것입니다. 이 솔루션은 아마도 느릴 수 있습니다 (Perl -> Python -> C). 그러나 애플리케이션에 심각한 성능 요구 사항이 없으므로 충분해야합니다.

0

귀하는 mod_auth_kerb 또는 mod_auth_spnego이며 서버 env에서 REMOTE_USER을 읽습니다. 너 끝났어.

+0

답변 주셔서 감사 합니다만, 중요한 것은이 응용 프로그램이 CGI를 통해 작동하지 않으며 Apache 모듈을 사용할 수 없다는 것입니다. 나는 아파치 또는 이와 유사한 HTTPD를 포함하지 않는 독립형 솔루션을 선호한다. CGI가 아닌 솔루션이없는 경우 이것이 내가 취한 경로 일 수 있습니다. –

+0

글쎄, 나는 펄 모듈에 대한 경험이 없다. 작동 여부를 확인하기 위해 빠른 코드 검토를 할 수 있습니다. –

관련 문제