我正在尝试将SAML2身份验证添加到我的Django项目中。 现在,我可以与用户取得SAML响应,并且可以解析响应了。
我在SAML2请求的返回URL中,这是我的SAML2模块的特定视图。
在视图中,我有以下代码:
if 'samlUserdata' in request.session:
if len(request.session['samlUserdata']) > 0:
attributes = request.session['samlUserdata'].items()
user = saml_authenticate(attributes)
saml_authentication是一种简单的方法,它可以获取SAML响应的属性,获取用户名并在数据库上进行搜索并返回用户模型。
现在还不清楚我必须做什么才能有效地登录软件。我不希望重定向到软件的主页,而是在其中自动登录,而不是登录页面。
我在Google上搜索时发现了自定义身份验证。
因此,我创建了一个新的后端身份验证并将其添加到设置中。 像这样:
def authenticate(self, request, username):
try:
logger.debug("Authenticating user '%s'" % (username))
user = User.objects.get(username=username)
if not user.is_active:
syslog.syslog("User '%s' not active" % (username))
return None
logger.debug("User '%s': authenticated" % (username))
return user
except User.DoesNotExist as e:
logger.debug("User '%s' not found" % (username))
return None
但是我不知道如何正确使用。我已经有一个用户模型。 在Django DOC上,有一个示例,但(一如既往)只是添加经典用户名/密码登录的简单示例。
我遇到这样的情况,用户名/密码由外部机构验证,并且我只有一个受信任的响应,说我可以信任在响应中找到的用户名。