Python:如何获取查看页面的Windows用户名?
有没有办法在Python/Django中获取当前登录的Windows用户的用户名,前提是这个应用不是在本地运行的?
更新:抱歉,我想澄清一下,我指的是查看网页的用户的Windows用户名,而不是运行服务器的用户。
我试过这两种方法:
current_user = os.environ.get("USERNAME")
current_user_getpass = getpass.getuser()
但我觉得它们返回的是运行服务器的用户的名字。
谢谢!
进一步更新:我对安全性不是特别在意。用户假装成其他用户名对我来说没什么影响。重要的是方便。我只需要一种方法来获取用户名,而不需要用户去折腾密码或者安装客户端软件。有什么想法吗?
1 个回答
2
有三种方法,但都不太好用。
使用 Ident (AUTH) 协议。从技术上讲,这个协议可以跨平台使用。
...不过,实际上在Windows上根本没有能返回真实用户名的Ident服务器,只有一个固定的字符串。补充:显然 Retina Scan Identd 可以做到这一点。(太棒了。)
要求使用HTTP
NTLM
或Negotiate
认证。这样你能得到的不仅仅是用户名的检查,...但是NTLM不安全,只有Internet Explorer和Firefox支持它,而且默认情况下它只在局域网(内网)中使用。
Negotiate
可以使用更安全的Kerberos,但显然需要服务器和客户端都支持Kerberos。如果Windows电脑在一个域里,那就好。如果不在……如果你 控制所有客户端机器,可以使用简单的SSL客户端证书认证。这在所有现代浏览器中都能用。
...但每个用户都需要自己的证书。创建一个内部使用的CA并发放证书很简单;但在客户端机器上安装和配置这些证书就没那么容易了。