如何使用RemoteUserBackend

时间:2017-12-14 13:15:12

标签: apache single-sign-on postman django-1.9

我的应用程序需要支持在第三方服务器上通过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,但似乎该人规避了正确的方法。

更新 enter image description here 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相同的命令。该位置似乎暗示它试图重定向到登录页面(这不应该发生)

0 个答案:

没有答案