- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
简而言之:如何使用 fastcgi 在 golang 上读取 CGI var REMOTE_USER?
长:我正在尝试编写一个程序,以便在套接字上使用 fcgi 在 httpd 后面工作。 httpd 执行 ssl 终止并提供基本身份验证。我需要读取 $REMOTE_USER,但我不能在 golang 中读取,而我可以在 perl 中读取。
我的代码基于 this fcgi example .我试试
func homeView(w http.ResponseWriter, r *http.Request) {
user, pass, authok := r.BasicAuth()
但是 authok 始终为 false,user 和 pass 仍然为空,尽管我确信授权(由 httpd 完成)是正确的。为了消除其他错误,我在 perl 中完成了:
my $socket = FCGI::OpenSocket("/run/fcgi-check.sock", 5);
my $q = FCGI::Request(\*STDIN, \*STDOUT, \*STDERR, \%ENV, $socket);
while ($q->Accept() >= 0) {
my $c = CGI::Simple->new;
my $user_id = $c->remote_user();
它在 perl 中运行良好。
为了调试,我打印了 r.Header 的输出,我得到了:
map[Authorization:[]
我是对的,go 看到的 header 没有包含任何授权信息吗?但它在 perl 中确实如此。
这是一个完整但最小的 golang 代码示例,它演示了这个问题(在 OpenBSD 5.8 上使用 go 版本 go1.4.2 openbsd/amd64 和 OpenBSDs httpd,在 httpd.conf 中使用 'authenticate "/"with restricted_users'。
package main
import (
"github.com/gorilla/mux"
"io"
"log"
"fmt"
"net"
"net/http"
"net/http/fcgi"
)
func homeView(w http.ResponseWriter, r *http.Request) {
headers := w.Header()
headers.Add("Content-Type", "text/html")
headers.Add("Cache-Control", "no-cache, no-store, must-revalidate")
headers.Add("Pragma", "no-cache")
headers.Add("Expires", "0")
r.ParseForm()
user, pass, authok := r.BasicAuth()
if authok {
io.WriteString(w, fmt.Sprintln("Auth OK"))
io.WriteString(w, fmt.Sprintln("user is: "+user+", pass is: "+pass))
} else {
io.WriteString(w, fmt.Sprintln("Auth NOT OK"))
}
}
func main() {
r := mux.NewRouter()
r.HandleFunc("/check/", homeView)
var err error
listener, err := net.Listen("unix", "/run/fcgi-check.sock")
if err != nil {
log.Fatal(err)
}
defer listener.Close()
err = fcgi.Serve(listener, r)
if err != nil { log.Fatal(err)}
}
帮助将不胜感激!
提前致谢!
最佳答案
Go 1.9 将公开 cgi 环境变量。如这张已关闭的票证所示:
关于golang 与 fastcgi 如何读取 REMOTE_USER,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34006957/
我在 ansible.cfg 中定义了以下内容 # default user to use for playbooks if user is not specified # (/usr/bin/ans
我的 IIS 服务器上托管有一个 ColdFusion 应用程序。我添加了Shibboleth服务到我的 Web IIS,并且 CGI/过滤器已设置为使用它。我将我的申请添加到 testshib联盟并
问题很简单:Ansible 中的 ansible_user (以前的 ansible_ssh_user)和 remote_user 有什么区别,除了第一个是设置是否配置文件并且后一个设置在plays/
我的 IIS 服务器上托管有一个 ColdFusion 应用程序。我添加了Shibboleth服务到我的 Web IIS,并且 CGI/过滤器已设置为使用它。我将我的申请添加到 testshib联盟并
以前我使用 IIS 服务器作为 PHP 服务器。目前,它是apache。 在 IIS 上,我可以访问变量 $_SERVER ['REMOTE_USER']它返回用户名和域(例如域\用户),但在安装 X
我有一个存储用户访问日志的mysql数据库。问题是数据库中的每个其他指定列都填充了相应的数据,但user_info列始终为空。有点像变量 $user 不包含值。我已经这样做了一段时间了,一切似乎都正确
刚刚开始使用上述内容。 它似乎工作正常,但我无法理解如何将 PHP 值传递给 PROCEDURE。 我想要执行 UPDATE 或 INSERT,TRIGGER AFTER,这将更新表中的 3 个字段。
我们有一个 ashx http 处理程序,它在 ProcessRequest 期间从 ServerVariables 检索 REMOTE_USER 变量。 public void ProcessReq
以前我使用 IIS 服务器作为 PHP 服务器。目前是apache。 在 IIS 上,我可以访问返回用户名和域(例如域\用户)的变量 $_SERVER ['REMOTE_USER'] 但在安装 XAM
我有一种情况,我正在打开一个基于 $_SERVER['REMOTE_USER'] 变量的文件。我不认为这是欺骗性的,但只是想确认一下。我不想让自己容易受到读取任意文件的攻击: 最佳答案 是的,
全部, 我有一个应该很简单的问题。我正在尝试按照以下说明使用 REMOTE_USER 变量使用 Django 身份验证:https://docs.djangoproject.com/en/1.8/ho
我一直在尝试使用我的 Login Rest API 而不是其他类型进行身份验证。如何实现这一目标? REMOTE_USER 身份验证是正确的方法吗?如果是这样,我可以获得有关此的示例代码或文档吗? 阅
我使用主机上的 ansible 模块创建了一个虚拟 linux 服务器。这工作正常。 下一个任务应该使用添加用户“ansible” - include: task-files/users_create
我想开始使用 ansible,但有一件简单的事情我没有得到: flipl@sun ~ % ansible -vvvv -m ping t420 SUDO password: ESTABLISH CO
我有一个防火墙,它是 SSL 终止符并设置了 remote_user header 。这个头应该传递给应用程序,但是我们有一个位于中间的 nginx 代理。 SSL 浏览器 -> 防火墙代理 -> N
我不知道如何配置检查 $remote_user 是否等于 location 的第一部分。 location / { auth_basic "ElasticSearch"; auth_basic
我一直在处理这个应该使用带有 htpasswd 的 HTTP 基本身份验证的站点。身份验证本身就像一个魅力,但有时(并非总是)$_SERVER['PHP_AUTH_USER'] 为空。 我得到了改用
简而言之:如何使用 fastcgi 在 golang 上读取 CGI var REMOTE_USER? 长:我正在尝试编写一个程序,以便在套接字上使用 fcgi 在 httpd 后面工作。 httpd
我希望能够在登录用户访问我们的网站时获取他们的信息,这样他们就不需要登录了。有人告诉我,只有当你在 Windows IE 上时,它才可能在 I.E 中。一旦他们使用 Windows 凭据登录。 我已经
通常,当一个可公开访问的目录需要基本的 HTTP 身份验证时,$_SERVER['HTTP_AUTHORIZATION'] 和/或 $_SERVER['REMOTE_USER'] 的值(或 $_SER
我是一名优秀的程序员,十分优秀!