【问题标题】:Using Basic Auth to pass Authentication Token使用 Basic Auth 传递 Authentication Token
【发布时间】:2013-03-12 12:11:21
【问题描述】:

devise plugin 允许使用authentication tokens。该文档说明了“Token Authenticatable”选项:基于身份验证令牌(也称为“单一访问令牌”)登录用户。令牌可以通过查询字符串或 HTTP 基本身份验证给出。

查询字符串的方法很清楚,但是到底怎么通过Basic Authentication传递token呢?是否需要使用Base64编码,像这样:

echo  "auth_token:3a75Dvc" | base64
=> YXV0aF90b2tlbjozYTc1RHZjCg==
curl --header "Authorization: Basic YXV0aF90b2tlbjozYTc1RHZjCg==" \ 
     http://my_site.com/my_app

【问题讨论】:

    标签: ruby-on-rails authentication devise


    【解决方案1】:

    这是一个带有来自设计规范的身份验证令牌的基本身份验证示例:

    header = "Basic #{Base64.encode64("#{VALID_AUTHENTICATION_TOKEN}:X")}"
    get users_path(:format => :xml), {}, "HTTP_AUTHORIZATION" => header
    

    【讨论】:

    • 是的,你是对的。查看规格总是一个好主意。为什么一定要加一个“X”?我永远不会猜到这一点。我期望auth_token:token_value 格式,但不是token_value:X
    • 实际上我认为它可以是任何东西而不是 X。所以我猜"Basic #{Base64.encode64("#{VALID_AUTHENTICATION_TOKEN}:BLAHBLAHBLAH")}" 应该可以工作。
    • 是的,TokenAutheticable 策略的源代码说:“由于某些客户端可能需要密码,因此您可以将“X”作为密码传递,它将被忽略。”,请参阅github.com/plataformatec/devise/blob/master/lib/devise/…
    猜你喜欢
    • 1970-01-01
    • 2014-11-24
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    相关资源
    最近更新 更多