【问题标题】:Rails Authentication and Authorization without guarantee of browser sessions?Rails 身份验证和授权不保证浏览器会话?
【发布时间】:2010-12-14 19:30:35
【问题描述】:

现在,我正在使用 RESTful 身份验证框架对我的 rails 应用程序进行授权。这一切都很好(尽管根据我的理解,有点过时了?),但现在我需要对可能没有 http 会话的用户进行身份验证(例如来自应用程序(而不是浏览器)访问我的 rails 路由的用户) )。

具体来说,我现在必须支持一个 iPhone 应用程序,它可以通过我的一些安静的路线来填充自己。但是,这个应用程序需要经过身份验证,并且仅将用户名和密码作为参数传递似乎不是很安全。它不仅不安全,而且不是很干净(我必须将所有引用 current_user(存储在会话中)的调用更改为手动设置当前用户,因为在没有浏览器的情况下点击我的应用似乎没有会话vars(或者我错了吗?))

有什么建议吗? RESTful 身份验证可以做到这一点吗?他们是不是可以帮助我的替代框架(例如 Authlogic 或 OAuth 或其他)?

【问题讨论】:

    标签: ruby-on-rails ruby authentication


    【解决方案1】:

    Devise 似乎能够做到token-based authentication

    为了安全,只允许 SSL 连接。将任何非 SSL HTTP 请求重定向到站点的 SSL 版本。您可以为此使用 Rack 中间件rack-ssl

    【讨论】:

    • 看来这可能对我有用,我会检查一下。谢谢!
    • Hrrm...我没有让基于令牌的身份验证正常工作(它可能像 RESTful 一样使用 cookie 和会话变量...如果是这样...我无能为力而不是推出我自己的解决方案),但到目前为止,Devise 还不错。
    • 我只是不知道如何使用令牌,但是一旦我弄清楚了,它就完美了,抱歉花了这么长时间才接受。
    【解决方案2】:

    CanCan 几乎是 Rails 应用程序事实上的授权工具。在这种情况下,您不应该尝试重新发明轮子。

    我相信它与 AuthLogic 和 RESTful 身份验证配合得很好。我对后者没有太多经验。

    【讨论】:

    • 呃,我有点糊涂了……我以为 AuthLogic 和 RESTful Authentication 都已经是授权工具了……如果 CanCan 是竞争对手,如何与它们“玩得好”? CanCan是否可以处理没有浏览器需要授权的情况?
    • 不要让这两个术语欺骗了你,CanCan 是专门围绕授权设计的。它不是用户系统。它管理您的资源的权限。什么样的应用程序需要与您的 Rails 应用程序交互?这将是一项网络服务吗?
    • 一个 iphone 应用程序,就像我在问题中所说的那样。我不太关心实际授权(我已经实现的对我有用)我只想要一种用户登录的方式,并保持登录状态而不必担心 http 会话变量
    • 好吧,您可以让会话保持活动状态任意时间。会话数据位于服务器端,用户只有一个会话密钥,您可以在 iPhone 应用程序中很好地维护它。
    • 好点,虽然登录(并首先进行会话)是我们卡住的地方:iphone 应用程序似乎以纯文本形式发送登录信息,而不是我们的身份验证插件表单所做的任何事情.我们可以对 iphone 进行单独的身份验证(使用纯文本,但使用插件的方法),但这似乎不对...
    猜你喜欢
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多