2014-02-21 5 views
1

djangosaml2 패키지를 사용하여 SAML 어설 션을 통해 기본 Django/pysaml2 통합을 성공적으로 구현했습니다. 성공적인 인증을 기반으로 사용자가 동적으로 생성됩니다. 이제 내 맞춤 속성의 짧은 목록을 내 Django 1.6 "extended" user model에 삽입하고 싶습니다. 나는 제공 장고 신호를 사용한다 :Django SAML 사용자 정의 사용자 속성 및 신호 저장

djangosaml2 문서 상태 (https://pypi.python.org/pypi/djangosaml2#user-attributes 참조) : 당신이 을들을 수 있습니다 장고 신호를 제공 djangosaml2 이러한 경우에 대한

.... 당신이 당신의 응용 프로그램에 다음 코드를 추가 할 수 있습니다 그렇게하기 위해서는 :

여기
from djangosaml2.signals import pre_user_save 

def custom_update_user(sender=user, attributes=attributes, user_modified=user_modified) 
    ... 
    return True # I modified the user object 

내 질문이 있습니다 : 나는 위의 신호 코드를 삽입 할

  • 은?
  • 확장 사용자 모델이 이와 같이 보이면 확장 사용자 모델에서 직원 ID를 설정하도록 어떻게 지정합니까?

models.py 신호 방식의 대안이 this pull requestsettings.py 코드를 사용하는 것이다

from django.db import models 
from django.contrib.auth.models import User 

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    employee_id = models.CharField(blank=True,max_length=150) 

답변

0

정의 : SAML_ATTRIBUTE_MAPPING

SAML_PROFILE_MODULE = 'app.UserProfile' 

SAML_ATTRIBUTE_MAPPING = { 
    'samlAttributeThatDefinesID': ('employee_id',), 
} 

된 값의 필드 이름 튜플되어야 app.UserProfile 또는 auth.User 키로 제공된 saml 속성으로 채우려는 모델.

면책 조항 :이 PR은 아직 열리지 않았으며 업스트림 리포로가는 길은 문제가됩니다.

+0

위대한 솔루션 @Bula! 확장 된 사용자 프로필이 이미 존재하면 솔루션이 잘 작동하지만 SAML_CREATE_UNKNOWN_USER가 True 인 경우 djangosaml2 패키지가 사용자를 만들지 만 프로필을 만들지는 않습니다. 나는이 [article] (http://stackoverflow.com/questions/1910359/creating-a-extended-user-profile)와 비슷한 프로젝트에서 post_save 신호를 사용하여이 문제를 해결했다. –

+0

감사합니다 @DerekNutile,이 솔루션은 당신에게 유용했기 때문에 기쁩니다. – Bula