Rails Digest认证实现和原理

优势

Http Digest是一种Http(不仅限于Web页面)认证框架,相比通常使用的基本认证,Digest认证的优点是相对安全、基于网络标准和简单,它不需要编写登录表单页面,对登录信息进行加密,这样就可以很好的支持较安全的程序自动连接(非浏览器连接),可以广泛的应用到数据服务领域。

实现

在Rails中实现Http Digest认证是非常简单的,有两个步骤:

1. 在控制器中配置一个before_filter过滤器,指向验证方法

2. 定义一个验证方法,使用authenticate_or_request_with_http_digest 语句块就可以了

实现代码如下

# 定义before_filer过滤器,指向验证函数

before_filter :dig_auth

# 在此处定义了密码数字,当然也可以用数据库或者自己定义的验证函数

USERS = { "yanjh" => "hello","shixc" => "hello" }

Realm="cdcr.com"

# 验证方法

def dig_auth

authenticate_or_request_with_http_digest(Realm) do |name|

# 当前验证的用户,预先赋给一个会话变量

@cuser=name

# 向语句块(认证系统)返回用户密码,由系统判断该密码匹配,通过验证后续的方法会执行,否则返回验证失败头信息

USERS[name]

end

end

原理

在网络上基本上没有人探讨该认证方式实现的原理,经过实验和分析,大体搞清楚了Digest验证的原理。

通常验证我们会直接从认证请求中获得用户名和密码,然后自己判断匹配性;但在这里我们只能获取用户名,然后我们可以依据此用户名在外部查找密码(明文或者md5密文都可以),返回给认证系统,再次注意,这里返回的是密码!再由系统来判断是否匹配,这样虽然逻辑上有点古怪,但将认证密码传输和解析黑箱化,确实更安全了。

原文链接:http://hi.baidu.com/yan__jh/blog/item/2f263100df2077f509fa93a7.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值