在rails中识别与HTTPS的连接

时间:2014-05-22 16:12:43

标签: ruby-on-rails ruby ssl nginx

我希望通过HTTPS连接到使用自行签署的证书的rails应用程序,并使用之前商定的证书颁发机构。

API的规范说明应该通过证书来识别用户。我如何根据他们的ssl证书识别这个用户?

我认为nginx会处理连接 - 我似乎无法在任何rails文档中找到任何关于ssl状态的信息,除了request#ssl?

之外

1 个答案:

答案 0 :(得分:0)

听起来您正计划使用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