NodeJs NTLM认证(烂尾)

本文介绍了在Node.js中实现NTLM单点登录(SSO)的挑战,包括NTLM认证流程、Windows域认证的NTLM和Kerberos方式,以及遇到的无法在服务器端验证用户密码的问题。文章探讨了使用SMB协议的可能性,但因Node.js缺乏相关库而放弃。最终提出了使用iisnode作为替代方案。
摘要由CSDN通过智能技术生成

正在做的一个公司内部网站,需要用到域认证,无奈,只得学习相关的知识,边学边写:

1. NodeJs的有一个服务器端做认证库的非常好,今天花了半天的时间,简单读了一下代码,觉得设计的不错,很容易扩展,库的名字是connect-auth,看名字就知道是expressJs的一个中间件,等有空就把一些源码阅读的笔记贴上来。

2. 接下来就是记录一些域认证相关的知识:

Windows的域认证,有2个认证方式:NTLM和Kerberos,NTLM很早就说要被淘汰,但是目前好像还是活的好好的,假如服务器端允许Negotiate,那么IE浏览器会有不同选择,参见:http://blog.csdn.net/yangxin114/article/details/8111958。

简单起见,我就不使用,Negotiate方式了,强制使用NTLM认证。

要启用NTLM认证,服务器端在接收到客户端请求时,返回401 (Unauthorized)并附加 WWW-Authenticate头,值为"NTLM"就行了 (如果要Negotiate,那么就多发一个WWW-Authenticate头,值为Negotiate),客户端接收到服务器的回复之后,浏览器应该会弹出认证的窗口,让用户输入域账号和密码,然后会送一个请求,并附加Authorization头,就这样进入了3次握手的过程(type1,type2,type3)。


更新:nodejs的NTLM好实现,只要根据协议生成hash值就行了,但问题是,服务器端没有办法拿到该用户的域账号密码来核实!查了一下,貌似只有一种方法:使用SMB,CIFS(这篇文章写的很好,NTLM SSO的实现:http://blog.csdn.net/zoufeiyy/article/details/1694634),但是鉴于Nodejs没有现成的库,实现该协议,所以我放弃了!准备换条路走走,那就是iisnode~。


附那篇文章的内容:

http://blog.csdn.net/zoufeiyy/article/details/1694634

NTLM SSO的实现

最近项目中要求实现Web应用的SSO(Single Sign O

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值