2013-05-24 4 views
1

내 조직은 OpenAM SSO를 인증에 사용하고 내 앱은 Pyramid로 작성되었습니다. 사용자 ID는 HTTP 헤더로 전달됩니다. 또한 그룹 및 사용 권한을 전달하도록 구성 할 수도 있습니다. acl에서 사용할 수 있습니다. 이렇게하면 피라미드에서 인증이 중복됩니다. Authenticaion Policy (인증 정책)를 완전히 없애고 승인만으로 갈 수 있습니까?피라미드 : 인증없이 권한 부여를 사용할 수 있습니까?

+2

사용자 이름을 헤더로 전달하는 것은 Athentication의 한 유형입니다. –

답변

4

피라미드의 권한 부여 시스템에 그 사람이 누구인지 (그들의 효과적인 주체)를 알리는 방법이 필요합니다. 이것은 헤더를 파싱하는 것과 같은 간단한 작업이라 할지라도 인증 정책의 책임입니다.

class CustomAuthenticationPolicy(object): 
    def effective_principals(self, request): 
     principals = [Everyone] 

     identity = request.headers.get('x-identity') 
     # validate the identity somehow 
     if is_valid(identity): 
      principals += [Authenticated, identity, 'g:editors'] 
     return principals 

config.set_authentication_policy(CustomAuthenticationPolicy()) 
+0

귀하의 솔루션을 사용하여 문제를 해결할 수있었습니다. 처음에'CustomAuthenticationPolicy'는'unauthenticated_userid' 속성을 가지고 있지 않다고 불평했습니다. 그래서 나는이 메소드를 추가하여 사용자 아이디를 반환했다. @ michael-merickel에 감사드립니다. –

+1

예, 제 솔루션은 승인 권한을 얻기위한 것입니다. 'authenticated_userid' 또는'unauthenticated_userid'를 호출하는 다른 코드가 있다면 다른 메소드를 정의해야합니다. –

관련 문제