Django Azure广告集成

Django Azure广告集成,django,azure,django-sessions,Django,Azure,Django Sessions,我目前正在使用Azure AD为Django项目集成SSO。我当前正在使用包:。我已经按照文档设置了Azure AD身份验证。在输入应用程序url时,它会将我带到microsoft登录页面,在输入凭据后,它会重定向到应用程序。但是在Azure身份验证之后重定向到应用程序时,代码会在会话中检查“nonce”和“state”变量,这些变量奇怪地返回为None,因此应用程序重定向到失败url @never\u缓存 def认证(请求): backend=AzureActiveDirectoryBacke

我目前正在使用Azure AD为Django项目集成SSO。我当前正在使用包:。我已经按照文档设置了Azure AD身份验证。在输入应用程序url时,它会将我带到microsoft登录页面,在输入凭据后,它会重定向到应用程序。但是在Azure身份验证之后重定向到应用程序时,代码会在会话中检查“nonce”和“state”变量,这些变量奇怪地返回为None,因此应用程序重定向到失败url

@never\u缓存
def认证(请求):
backend=AzureActiveDirectoryBackend()
重定向_uri=request.build_绝对_uri(反向(完成))
nonce=str(uuid.uuid4())
请求。会话['nonce']=nonce
state=str(uuid.uuid4())
请求。会话['state']=状态
login\u url=backend.login\u url(
重定向\u uri=重定向\u uri,
nonce=nonce,
状态=状态
)
返回HttpResponseRedirect(登录地址)
@永不缓存
@豁免
def完成(请求):
backend=AzureActiveDirectoryBackend()
方法='GET'if backend.RESPONSE\u MODE=='fragment'else'POST'
原始状态=request.session.get('state')
state=getattr(请求,方法).get('state')
如果原始状态==状态:
token=getattr(请求,方法).get('id\u token')
nonce=request.session.get('nonce')
user=backend.authenticate(令牌=token,nonce=nonce)
如果用户不是无:
登录(请求、用户)
返回HttpResponseRedirect(获取\u登录\u成功\u url(请求))
返回HttpResponseRedirect('失败')
这是用于身份验证的代码

Settings.py示例如下所示:


身份验证\u后端=(
'django.contrib.auth.backends.ModelBackend',
“azure_ad_auth.backends.AzureActiveDirectoryBackend”,
)
登录\u重定向\u URL='/LOGIN\u successful/'
AAD_租户_ID='d472b4f4-95c5-4eb3-8a9a-3615c837eada'
AAD_客户识别码='75e38b53-8174-4dc6-a8f6-bb7a913f1565'
会话在浏览器处过期关闭=真
SESSION\u SAVE\u EVERY\u REQUEST=True
会话时间=86400秒
会话\u COOKIE\u域=无
会话\u COOKIE\u名称='DSESSIONID'
会话\u COOKIE\u SECURE=True
回溯

TypeError at/TypeError at/project/azure/complete/
必须是str,而不是NoneType
申请方式:邮寄
请求URL:http://testdomain.com/project/azure/complete/
Django版本:2.2.4
异常类型:TypeError
异常值:
必须是str,而不是NoneType
异常位置:/home/project/azure_auth/views.py完整,第57行
Python可执行文件:/home/project/app/venv/bin/python3
Python版本:3.6.8
Python路径:
['/home/project/app/project',
“/home/project/app/venv/bin”,
“/home/project/app/venv/lib64/python36.zip”,
“/home/project/app/venv/lib64/python3.6”,
“/home/project/app/venv/lib64/python3.6/lib dynload”,
“/usr/lib64/python3.6”,
“/usr/lib/python3.6”,
“/home/project/app/venv/lib/python3.6/site packages”]
服务器时间:2019年11月19日星期二05:21:10+0000/azure/完成/
必须是str,而不是NoneType
申请方式:邮寄
请求URL:http://testdomain.com/project/azure/complete/
Django版本:2.2.4
异常类型:TypeError
异常值:
必须是str,而不是NoneType
异常位置:/home/project/app/project/azure_auth/views.py完整,第57行
Python可执行文件:/home/project/app/venv/bin/python3
Python版本:3.6.8
Python路径:
['/home/project/app/project',
“/home/project/app/venv/bin”,
“/home/project/app/venv/lib64/python36.zip”,
“/home/project/app/venv/lib64/python3.6”,
“/home/project/app/venv/lib64/python3.6/lib dynload”,
“/usr/lib64/python3.6”,
“/usr/lib/python3.6”,
“/home/project/app/venv/lib/python3.6/site packages”]
服务器时间:2019年11月19日星期二05:21:10+0000
/home/project/app/project/azure_auth/views.py已完成
f、 写入(“nonce-->”+nonce+“\n”)…
▼ 局部变量
可变值
后端
资料
['82aff4f9-2cc0-4521-aea7-ad3281d20774\n',
'ba821364-86c9-4233-881f-bdc772f7c488\n']
F
方法
“职位”
N
“82aff4f9-2cc0-4521-aea7-ad3281d20774”
暂时
没有一个
原始状态
没有一个
要求
陈述
“fd93da6a-9009-4363-9640-9364df7f64df”
代币
“EYJ0Exiaioijkv1QILJJ0Exiaioijkv1QIIJJZI1NIISING1IKJOENLZXEWCHKDODWVOSKTDRKZMP6DYJ6IKJ6IKJ0Exiaioijkv1IKZI6IKJ6IKJ6IKJ6IKJ6IKJ6IKJ6IKJ6IKJ6IKJ6IKJ0ExiaIKJ0ExiaIKv6IKJJ6IKJ6IKZIKZIKZIK6IK6IK6IK6IK6IKJ6IK6IKJ6IK6IKZZIK6IK6IK6IK6IK6IK6IK6IK6IK6IK6IK6IK6IK6IK6IK6IK6IK6IKZZZ0NDQ2 OSWIYLVIJIWZ1LCQST4TFHQNEDVTJRREWJU3ZOZMF4NxBHY2NP基金会LXMMxNYTYZMJIWQIISMFTCII6WYJWYWYWWWYWWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYZZZZFYWYWYWYWYWYWYWYJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJYI00mmWlT4NjuttixTdHzTdHzTdHzMdHzTdHzMdHzMdHzMdHzTdHzMdHzTdHzMdHzTdHzMdHzTdHzTbIwWk56RhZlRfHvJv3RgV5U3U3DzriIzIzIzIzIzIzIzIzJJJJJjTzTzTzTgHzHzTgHzHzTdHzTzUzHzTzTzTzTzTzTzTzTzTzTzTzTzWnWnWyWyWyWyWyWyWyWyWyWyWyW0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W研究结果表明,这一研究成果是一个基于一个研究成果的研究成果,一个研究成果,一个研究成果,一个研究成果,一个研究成果,一个研究成果,一个研究成果,一个研究成果,一个研究成果,一个研究成果,一个研究成果,一个研究成果,一个研究成果,一个研究成果,一个研究成果,一个研究成果,一个研究一个研究成果,一个研究一个研究成果,一个研究一个研究成果,一个研究一个研究一个研究成果,一个研究一个研究一个研究成果,一个研究一个研究一个研究成果,一个研究一个研究一个研究一个非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非非SVPYEHNRU7FMWO-qj5uRj9FQa45lCZluUV25o_AV1NQ94d5lnFyeMh7uw'
使用者
没有一个

我在尝试将会话变量写入文件(用于调试)时出现上述错误。

我知道这个问题有点老了,但无法检索会话(以及会话的原始状态和nonce),如果浏览器未发送cookie,则比较将失败

这饼干不好吃