我的应用程序需要支持在第三方服务器上通过SSO登录的用户。
我根据docs配置settings.py
,即
MIDDLEWARE_CLASSES = [
'...',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.PersistentRemoteUserMiddleware',
'...',
]
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.RemoteUserBackend',
]
我尝试使用Postman对几个应用的URL进行测试,没有使用auth和基本身份验证(用户已定义),当然还有REMOTE_USER
(和/或HTTP_REMOTE_USER
标头组)。
在所有情况下,我都会获得401 - unauthorized
代码。此外,永远不会调用authenticate
中的断点。调用中间件中的process_request
,但REMOTE_USER
标头不在request.META
中。
我还需要配置什么(在Django,Postman中还是更好的Apache),以便设置REMOTE_USER
?
我对Apache的了解很少,因此链接到示例将有很大帮助。
我看到的最接近的“解决方案”是this,但似乎该人规避了正确的方法。
更新
Postman请求只是要求用户登录的基本服务之一(Django中的@login_required
装饰器)
我已尝试过基本身份验证和无身份验证。
回复是401,没有附加信息。
>curl -i -H 'REMOTE_USER: user' localhost:9000/project/files/
HTTP/1.0 401 Unauthorized
Date: Sun, 17 Dec 2017 13:38:38 GMT
Server: WSGIServer/0.1 Python/2.7.10
Expires: Sun, 17 Dec 2017 13:38:38 GMT
Vary: Cookie
Last-Modified: Sun, 17 Dec 2017 13:38:38 GMT
Location: /accounts/login/?next=/project/files/
Cache-Control: no-cache, no-store, must-revalidate, max-age=0
X-Frame-Options: SAMEORIGIN
Content-Type: text/html; charset=utf-8
与cURL相同的命令。该位置似乎暗示它试图重定向到登录页面(这不应该发生)