我希望通过HTTPS连接到使用自行签署的证书的rails应用程序,并使用之前商定的证书颁发机构。
API的规范说明应该通过证书来识别用户。我如何根据他们的ssl证书识别这个用户?
我认为nginx会处理连接 - 我似乎无法在任何rails文档中找到任何关于ssl状态的信息,除了request#ssl?
之外答案 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