我使用 Apache 作为反向代理,例如在 go http 服务器前进行身份验证。
以下 apache kerberos 设置适用于一个问题。我不知道如何在我的 go 应用程序中获取经过身份验证的用户名。
httpd.conf:
<VirtualHost host.domain.com:80>
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:9000/
ProxyPassReverse / http://127.0.0.1:9000/
<Location />
## gzip
##
AddOutputFilterByType DEFLATE text/html
Order deny,allow
Allow from all
AuthType Kerberos
AuthName "User Admin"
KrbAuthRealms DOMAIN.COM
Krb5Keytab /etc/host.krb5keytab
KrbMethodNegotiate on
KrbAuthoritative on
KrbMethodK5Passwd off
KrbLocalUserMapping on
KrbSaveCredentials on
require valid-user
</Location>
</VirtualHost>
和
AuthType basic
我使用 go 函数从请求的 Authorization 标头中获取用户名
func (*Request) BasicAuth
但是使用授权标头协商这是不可能的。此外,我无法使用 REMOTE_USER 环境变量,因为没有 cgi 环境。我也尝试设置 RequestHeader 但没有任何成功。
是否有可能从 go 应用程序中获取授权的用户名?