我至少有2个Django应用程序与SAML SSO一起使用,其中simplePAMLphp作为IDP,而Djangosaml2作为SP。
尽管有一些与此问题无关的问题,但一般来说auth仍在工作。两种应用都使用不同的用户模型。
这是我用于一个应用程序的SAML映射:
SAML_ATTRIBUTE_MAPPING = {
'uid': ('username', ),
'mail': ('email', ),
'givenName': ('first_name', ),
'sn': ('last_name', ),
'is_staff': ('is_staff', ),
'is_superuser': ('is_superuser', ),
}
这里是另一个
SAML_ATTRIBUTE_MAPPING = {
'mail': ('email', ),
'givenName': ('nick', ),
'sn': ('name', ),
'is_staff': ('is_staff', ),
'is_superuser': ('is_superuser', ),
}
这正常。 但是这些字段不是它们的意图。
我想要实现的是结合
givenName
和
sn
转换为一个值,我可以将其保存在用户模型的名称字段中。
在查看Djangosaml2文档时,它提到了可以用于它的信号
from djangosaml2.signals import pre_user_save
def custom_update_user(sender=User, instance, attributes, user_modified, **kargs)
...
return True # I modified the user object
但是我不知道这应该去哪里,以及如何处理该信号接收到的数据。 还是有人知道更好的方法吗? 非常感谢。