如何使用cgi python脚本获取基本身份验证用户名?

时间:2017-12-14 03:04:06

标签: javascript python apache authentication

让我先说一下,我是一家大公司的工程师,而不是程序员,所以如果我离开的话,我很抱歉。这个问题确实难以谷歌答案,这通常意味着我非常问这个问题。因此,如果您愿意,我会尝试回复用户以寻求解决方案。

我还标记了多种语言,因为我不确定这是一个javascript解决方案还是python解决方案。我道歉。

基本上,当用户填写表单时,它会运行一个python cgi脚本,该脚本将信息存储到数据库中。我想自动编写用户名,这样用户就不必手动填写(不是为了安全,只是为了方便使用)

我的程序在apache RedHat服务器上,在/ etc / httpd / conf中我将以下内容放在我的httpd.conf文件中:

<Directory /var/www/html/program>
##### LDAP Login #######################
AuthType Basic
AuthName "ProbeEng Webserver: Enter Your BIGCOMPANY Username and Password"
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthLDAPURL "ldap://ldap.city.bigcompany.com/ou=mtworkers,o=bigcompany.com?uid"

##### Require Authentication
Require valid-user

Order deny,allow
Allow from all

</Directory>

当用户访问我的程序时,他们需要输入 BIGCOMPANY 用户名和密码。如何将该用户名发送到我的python cgi-script。他们启动表单的程序也是一个生成html的python cgi脚本。

我尝试了以下内容:

try:
   username = getpass.getuser()

但这似乎不起作用。

使用cgi脚本时是否可以,如果可以,我该如何访问用户的用户名?

由于

1 个答案:

答案 0 :(得分:1)

如果网络服务器对用户进行了身份验证,通常用户名将位于标头中,并在Python CGI脚本中显示为os.environ中的环境变量。通常,此标头名称为REMOTE_USER

您可以尝试打印所有环境变量,只是为了查看那里的内容。

import os
for key, value in os.environ.items():
    print(key, value)

一旦你知道你正在寻找什么密钥(可能是'REMOTE_USER'),就像检索它一样

import os
username = os.environ.get('REMOTE_USER')

虽然,CGI模块可能不是您想要运行此应用程序的方式。每个请求都会产生一个新进程,并且在任何严重的流量下,很快就会成为该服务器的负担。