我有一个 nginx 服务器验证客户端 CAC 证书。然后,nginx 将客户端经过验证的用户名转发(作为 HTTP header )到我的meteor 应用程序。
在我的 meteor 应用程序中,在服务器端我有
Meteor.onConnection(function(conn) {
// username = conn.httpHeaders['username-from-cert']
// If user doesn't exist, call Accounts.createUser()
// else <-- ISSUE HERE
})
我的问题是创建帐户后登录用户。我正在为客户端创建一个随 secret 码(因为 nginx 正在为我进行身份验证)我如何告诉客户端这个密码,并让客户端自动登录?
目标:
- 用户提交客户端证书
- 客户端连接nginx服务器
- nginx服务器将客户端的名称/证书信息转发给meteor
- 如果帐户不存在,meteor 会创建帐户,或者自动登录用户。
- 客户端无需任何用户交互即可登录(除了提交客户端证书)
我正在阅读的所有内容都涉及用户从客户端代码登录,但我无法从服务器登录用户。我应该怎样做呢?
最佳答案
您需要注册自己的登录处理程序,该处理程序返回 userId,类似于 https://github.com/fongandrew/meteor-login-as-user 。我会说只使用他们的包,但我相信随着 NPM 的发展,meteor 包正在退出。
此外,请确保在代理处删除 HTTP header ,以便客户端无法控制更改它...
关于javascript - Meteor客户端证书自动登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43605795/