注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mylotustips的博客

IBM Lotus协作产品家族经验分享

 
 
 

日志

 
 
关于我

欢迎大家使用SR向IBM800提交问题http://www.ibm.com/support/servicerequest 可以随时查看问题状态,上传文件

网易考拉推荐

如何实现不同域名后缀domino server之间的SSO  

2011-12-20 17:17:36|  分类: Domino服务器 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1.        SSO 的过程
浏览器访问受限信息,被自动转到domino授权页面。如果启用了SSO,当浏览器上传用户名和密码授权时,web server会将授权信息以cookie的方式写入给浏览器的response header

当浏览器请求之后相关的页面时,会在request header中带入该cookie以验证授权。

2.        为什么domino SSO必须要求相同的域名后缀
其实更多限制来自浏览器。浏览器的安全限制会根据请求中的host来决定是否发送cookie。例如途中domino web的授权cookie ltpa tokenSSO域和路径决定了浏览器在什么条件下发送这个cookie。域就是域名的后缀,正常情况下应该是例如:abc.comxyz.net 路径'/'是指地址栏中URLhost以后的信息。
如果cookie域名为abc.com那么浏览器请求server.abc.com 相关的内容就会发送这个cookie
如何实现不同域名后缀domino server之间的SSO - mylotustips - mylotustips的博客
那么如果域名不一致,浏览器不会发送cookieSSO无法实现。

3.        那么推测当访问abc.com时,相关的服务器写入名为xyz.comcookie,是否浏览器就能正常访问xyz.com。原则上是可以的,但是浏览器的安全设置,浏览器会禁止接受与当前访问host域名不一致的cookie 就是说当前URLabc.com 时浏览器只会接受server 写域为abc.com 或者 *.abc.comcookie
4.        绕道的开发可以避免这个问题,但是从domino 当前的情况来说,必须要求域名后缀一直,无法实现多域名sso
5.        那如果server的域名后缀不一致,甚至没有只有ip,没有域名我们能否实现SSO了?

根据SSO原理,如果授权cookie能成功写入浏览器,并且浏览器在访问相关的页面时能正常发送cookie,那么从(NAT)的角度也许能实现SSO

下面单独以解决NAT(net address translate)设备利用ip实现多服务器SSO
NAT ipv4中来解决ip地址有限的相关协议。我们没有独立公网ippc基本都采用nat来与internet传输数据
原请求ip地址 原请求端口 转换后地址 转换后端口
192.168.1.103
4001
192.168.1.106
4080

例如有3domino服务器IP分别为
server1 192.168.1.106
server2 192.168.1.108
server3 192.168.1.104


当访问server1时如果要重定向到server3URL一般会有192.168.1.106变为192.168.1.104.为了SSO,我们希望能否将URL转变为192.168.1.106:port 然后将所有发送至这个port的所有数据转到server3 192.168.1.104. 那么如果cookie的域名也改为'192.168.1.106'浏览器也会正常得到授权cookie然后,访问server3的页面时也会正常将cookie发送给192.168.1.104

linux iptables 这个防火墙基于网络层对数据包的nat能够很好的帮助我们实现这个

iptables 包括4个表,我们要用到其中nat filter。这也是经常用到的两个表。
数据包进入prerouting,将会被更改目标地址和端口:
例如发送给192.168.1.106:84 的数据包会被改为192.168.1.104:80
然后经过forward 到达postrouting链,在postrouting链数据包的源地址和源端口将会被更改例如浏览器地址: 192.168.1.103:40001 被更改为nat防火墙的地址和ip:192.168.1.106:4080
并生成一条nat记录:
根据这条记录,当server3返回数据包时,相关的数据包端口信息4080将会被发送至浏览器192.168.1.103:4001
192.168.1.103
4001
192.168.1.106
4080

如何实现不同域名后缀domino server之间的SSO - mylotustips - mylotustips的博客
接下来就可配置domino sso文档。SSO文档
如何实现不同域名后缀domino server之间的SSO - mylotustips - mylotustips的博客

配置web redirect数据库,来实现URL的跳转。
用户dwa3在服务器server3上,当前授权serverserver1,授权后会根据重定向库,重定向到server3上。重定向的3中设置中的mail serve,会首先去重定向的服务器后缀,如果为空,去取server document->internet protocol 下的hostname。如果将这个域的信息写为“192.168.1.106:84”,那么浏览器的URL将会跳转为:
http://192.168.1.106:84/mail/dwa3.nsf 192.168.1.106 接到84端口的包都会扔给server3

然而hostname用来做httpip绑定,如果这个域改为 192.168.1.106:84,将无法绑定ip

我查看了web redirect的模板,可以更改模板中的的http_hostname,server document中创建一个新的值,并让web redirect去取这个值来生成相关的URL

所有的配置成功后就可以正常SSO了。如图是firefox web request的相关信息,并对比server3 http 数据抓包
post names.nsf?login 得到授权cookie ltpatoken, 并且被重定向至192.168.1.106:84
如何实现不同域名后缀domino server之间的SSO - mylotustips - mylotustips的博客
从定向的request中带入授权cookie ltpatoken。并得到来自server3cookie shimmers
(这里不会过多讨论shimmersshimmers不用做授权。因为所以cookie写入和发送的过程与同域名后缀的过程完全一致,而我们SSO授权只涉及ltpatoken
如何实现不同域名后缀domino server之间的SSO - mylotustips - mylotustips的博客


对比server3的数据:
如何实现不同域名后缀domino server之间的SSO - mylotustips - mylotustips的博客

如何实现不同域名后缀domino server之间的SSO - mylotustips - mylotustips的博客



  评论这张
 
阅读(1030)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017