2010-07-14 5 views
0

필론 (Pylons)으로 작성된 인트라넷 웹 응용 프로그램으로 SSO (Single Sign-On)를 시도하고 있는데 repoze.what를 사용하여 승인하고 싶습니다. mod_sspi로 구성된 아파치를 가지고 있고 그것은 사용자를 올바르게 인증하고 REMOTE_USER 환경 변수를 설정합니다. 그러나, 나는 repoze를 설득하는 방법을 알아낼 수 없다. 그것은 실제로 사용자가 인증 된 것이다.repoze.who/repoze.what를 SPNEGO와 함께 사용하려면 어떻게해야합니까?

class NtlmIdentifier(object):  
    def identify(self, environ):   
     if environ['AUTH_TYPE'] == 'NTLM': 
      return { 'repoze.who.userid': environ['REMOTE_USER'] } 

     return None 

    def remember(self, environ, identity): 
     pass 

    def forget(self, environ, identity): 
     pass 

그리고 같은 나중에 미들웨어를 등록 :

나는이처럼 보이는 식별자를 만들려고

return setup_auth(app, groups, permissions, identifiers=identifiers, authenticators=[], challengers=[]) 

을하지만 내 식별자의 identify 메소드가 호출되지 않습니다 보인다 뼈대.

어떻게 SPNEGO/SSPI를 repoze.who 및 repoze.what와 통합합니까?

답변

1

미리 (예 : 웹 서버에서) REMOTE_USER 변수를 설정하면 repoze.who는 아무 것도하지 않으며 등록 된 플러그인을 호출하지도 않습니다.

repoze.what v1은 repoze.who 플러그인으로 설정되므로 repoze.what 자격 증명을 사용할 수 없으므로 사용자는 항상 익명으로 처리됩니다. 이것은 repoze.what 2 (개발 중)에 문제가되지 않습니다.

은 예상대로 당신은 당신이 쓴 식별자를 유지할 수있는 모든 일을하고 remote_user_key 인수가 setup_auth에 전달할 :

return setup_auth(app, groups, permissions, remote_user_key=None, identifiers=identifiers, authenticators=[], challengers=[]) 

HTH를.

+0

Brilliant! 무리 감사 :) –

관련 문제