我希望通过 HTTPS 连接到 Rails 应用程序,使用由先前同意的证书颁发机构自签名的证书。
API 的规范指出用户应该通过他们的证书来识别。我将如何根据他们的 ssl 证书来识别此用户?
我假设 nginx 将处理连接 - 我似乎无法在任何 Rails 文档中找到任何提及,除了 request#ssl? 之外我会知道更多关于 ssl 状态的信息。
最佳答案
听起来您打算使用 SSL 客户端证书。您应该能够使用 ssl_verify_client
配置在 nginx 中完成这一切。
这是一篇贯穿整个过程的博文:http://rynop.wordpress.com/2012/11/26/howto-client-side-certificate-auth-with-nginx/
这将设置 nginx 来处理您的应用程序的身份验证。如果您需要执行额外的授权(例如检查用户的角色),您需要配置 nginx 以将一些用户身份信息传递给您的应用程序。在你的 nginx 配置中添加这样的东西:
proxy_set_header USER_DN $ssl_client_s_dn;
然后在您的应用中,使用类似这样的方法从证书访问 DN 并在您的用户存储中查找它:
user_dn = request.headers["HTTP_USER_DN"]
user = User.where(dn: user_dn).first
关于ruby-on-rails - 在 Rails 中识别与 HTTPS 的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23812132/