ruby-on-rails - 在 Rails 中识别与 HTTPS 的连接

标签 ruby-on-rails ruby ssl nginx

我希望通过 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/

相关文章:

.net - HTTPWebRequest 远程证书名称不匹配

web-services - 如何使用未知证书调用 Web 服务

ruby-on-rails - 从 JSON 初始化 Rails 模型 - 如何初始化子关联?

ruby-on-rails - AWS Elastic Beanstalk 无法担任角色

node.js - 用于 SockJS + Express 的 Nodejs SSL

ruby-on-rails - Ruby 使用正则表达式替换散列键

ruby-on-rails - 检查给定的字符串是否是一个 URL

ruby-on-rails - 在 ruby​​ 中按年龄范围对用户进行分组

mysql - 报告销毁后重建索引花费的时间太长

ruby - 如何让 'system("source ~/.bash_profile")' 与当前 shell 一起工作?