要確定在原始WSGI環境中傳遞的變量集合,在Django對它們做任何事情之前,將下面的代碼放入WSGI腳本文件中以代替Django的東西。
import StringIO
def application(environ, start_response):
headers = []
headers.append(('Content-type', 'text/plain'))
start_response('200 OK', headers)
input = environ['wsgi.input']
output = StringIO.StringIO()
keys = environ.keys()
keys.sort()
for key in keys:
print >> output, '%s: %s' % (key, repr(environ[key]))
print >> output
length = int(environ.get('CONTENT_LENGTH', '0'))
output.write(input.read(length))
return [output.getvalue()]
它會向瀏覽器顯示一組鍵/值對。
瞭解SSO機制如何工作很重要。如果它明智之舉,您可能會發現它設置了REMOTE_USER和可能的AUTH_TYPE變量。如果設置了REMOTE_USER,則表示在變量中命名的用戶已通過Apache中的某個更高級別的身份驗證機制進行身份驗證。這些變量通常是爲HTTP Basic和摘要式身份驗證設置的,但要使用盡可能多的系統,SSO機制也應該使用它們。
如果將它們設定,然後有一個Django的功能,在描述:
http://docs.djangoproject.com/en/dev/howto/auth-remote-user/
然後可以使用具有Django的接受在更高層次上進行身份驗證。
即使SSO機制不使用REMOTE_USER,而是使用自定義標頭,也可以在整個Django應用程序周圍使用自定義WSGI包裝來將任何自定義標頭轉換爲合適的REMOTE_USER值,然後Django可以使用它。
謝謝,這是非常豐富的。 – 2009-07-20 00:33:12