




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Domino单点登录LTPAtoken生成原理一、 WebSphere与Domino之间的SSO首先让我们来了解一下Websphere与Domino之间是怎么完成SSO的:1、 Web用户向Websphere发起一个登录请求。2、 Websphere判断为合法用户,登录成功。3、 生成ltpatoken,将ltpatoken写入cookie。这样,当Web用户后续向Domino发起登录请求时,Domino会找到存放在cookie信息中的ltpatoken信息,并且认为这个ltpatoken有效,完成在domino的登录过程。那么这里会有2个疑问。第1个,Domino怎么会找的到Websphere存放的cookie,这就是为什么配置SSO的时候需要2个系统是在同一个DNS域下面,因为浏览器cookie共享的限制,跨域不能共享cookie嘛(当然也能用一些其他的手段生成跨域的cookie,这样其实通过一定的开发是可以让LTPATOKEN跨域的,本案例不讨论这个问题)。第2个问题,domino找到这个token之后,凭什么认识这个ltpatoken,并且认为它有效呢,所以要求domino和Websphere在生成ltpatoken的时候就有某种约定。这就是为什么配置Domino SSO文档的时候需要引入Websphere的密钥了。有了这些前提Domino和Websphere之间就能互相认识对方生成的ltpatoken,并且从中读出需要登录的用户名,只要用户名匹配得上(这就是为什么W和D需要用同一个LDAP目录),该用户就完成登录了。 以上就是简单的Websphere与Domino之间SSO的原理。当然其实SSO过程还没有这么简单,比如还需要验证ltpatoken的有效期等。现在我们知道实现SSO的关键在于LtpaToken,Websphere与Domino之间采用LtpaToken来共享认证信息。那么基本上任何一个系统只能要完成以下2件事情,它就有可能参与LtpaToken认证的SSO方案了:1、 能生成一个有效的LtpaToken提供给别人。2、 能解析一个别人生成的LtpaToken。另外,可能还有一些要求:1、 参与SSO的系统使用同样的密钥生成LtpaToken,称为公钥。2、 参与SSO的用户帐号名称在各系统中一致,因为每个系统从Token中读出了用户名之后必须要正确关联到本地对应的用户进行登录。3、 参与SSO的系统必须在同一个DNS域下面(跨域的问题前面提过)。4、 最后当然需要采用B/S方式,浏览器必须支持Cookies了。一、 LtpaToken组成原理通过了解LtpaToken的组成原理,我们就可以自己编码生成和解析LtpaToken了。首先一个LtpaToken的合成公式如下:token = BASE64(headercreation timeexpiration timeusernameSHA-1 hash)解释:n Header: LtpaToken 版本(长度4),Domino的固定为0x000x010x020x03n Creation time: 创建时间戳(长度8),格式为Unix time比如2010-03-12 00:21:49为4B99189Dn expiration time:过期时间戳(长度8) 同上n username: 用户名(长度不定) n SHA-1 hash:SHA-1校验和(长度20)如下图:上面的SHA-1校验和,又是由前面所说的密钥和其余的Token资料合并而成,合成公式如下:SHA-1 hash = SHA-1(headercreation timeexpiration timeusernameshared secret)所以,如果有人篡改了Token,那校验和就与修改后的Token匹配不上了,这样Token一旦生成,有人想要修改它的信息,比如改成别的用户名,是不可能的。二、 Domino如何处理LtpaToken查看一下domino的Web SSO配置文档:1、 Domino生成LtpaToken的密钥存放在LTPA_DominoSecret字段2、 LTPA_TokenExpiration字段存放失效分钟数。3、 LTPA_TokenName字段存放Token表示在cookie的name.如下图:再加上上面分析过的LtpaToken组成原理,我们大概可以知道domino是怎么生成LtpaToken的了。详细的debug信息可以通过在notes.ini里面配置条目DEBUG_SSO_TRACE_LEVEL=2之后去查看日志。Domino解析LtpaToken步骤:1、 Base64解码LtpaToken。2、 截取最前面20字节,最后面20字节,中间部分就是用户名。如果用户名在本系统中不正确,返回无效的LtpaToken。3、 截取最后面20字节,是SHA-1校验和。用Token中的其余部分和本系统中的密钥生成新的SHA-1校验和,如果2个校验和不匹配。返回无效的LtpaToken。4、 当前服务器时间必须大于创建时间,小于失效时间。否则返回无效的LtpaToken。5、 最后解析通过了,完成用户的登录6、 在Java应用上实现生成和解析LtpaToken的测试2.1 生成LtpaToken的测试文件列表:Base64.javabase64编码和解码的类Bundle.javaproperties资源文件的处理类LtpaConfig.javaToken资料配置类。LtpaToken.java产生和解析LtpaToken的类LtpaConfig_zh_CN.properties配置文件第一步,配置LtpaConfig_zh_CN.properties,填好ltpaSecret。这个值本身是base64编码。如果是和domino做sso。需要从domino的web sso文档中获取,见上一张图。tokenDomain信息是生成http cookie的时候用的,本测试中暂不用到。tokenExpiration是生成LtpaToken时用的,本测试中暂也不用。第二步,添加一个测试的类:在main函数中输入以下测试代码:Date date = new Date();String user=CN=Admin/O=S3D;LtpaToken generate = LtpaToken.generate(user, date, new Date(date.getTime() + 20*60000); System.out.println(generate);以上代码为CN=Admin/O=S3D生成一个20分钟有效期的LtpaToken。输出:到domino去验证Token的有效性:1、 复制上面产生的Token.2、 打开IE,输入Domino服务器的首页地址:/3、 出现登录页面,这里不输入用户名和密码。直接在IE地址栏里面输入:javascript:alert(document.cookie=LtpaToken=AAECAzRCOTlEOTQxNEI5OURERjFDTj1BZG1pbi9PPVMzRKb6cFIxqIX+lGjQhDDWaeN4IvXe);以上红色部分是复制的Token4、 弹出对话框,cookie设置成功,按F5刷新页面,成功以Admin身份登录Domino主页,LtpaToken测试成功。2.2 解析LtpaToken的测试下面测试解析一个由Domino产生的LtpaToken。1、 打开一个新的IE窗口,输入Domino服务器的首页地址:/2、 输入一个普通用户的帐号/密码,正常进入首页。3、 在IE地址栏输入:javascript:document.write(document.cookie)4、 复制出Cookie中的LtpaToken的值,如:AAECAzRCOTlEQTZGNEI5QTgzMkZDTj1saXVnYW5nMi9PPWVzc2VuY2VzZNmGPcgH0NQxnrhgnn1/JrPkHgg=在测试类中添加以下测试代码:LtpaToken ltpa = new LtpaToken(AAECAzRCOTlEQTZGNEI5QTgzMkZDTj1saXVnYW5nMi9PPWVzc2VuY2VzZNmGPcgH0NQxnrhgnn1/JrPkHgg=); /从token中取出用户名 System.out.println(ltpa.getU
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 出租车企业车辆融资租赁合作协议范本
- 仓储物流场地租赁合同补充协议书
- 养老护理工作总结汇报
- 高端餐饮品牌独家授权租赁合同范本
- 高效叉车操作员劳动合同服务标准
- 2025年国际贸易实务知识测试试题及答案
- 2025年心理健康教育课程评估试题及答案
- 2025年城市规划基础理论知识考试试题及答案
- 毕业个人实习总结
- 拆迁安置房交易及后期配套设施建设合同
- 2025年云南省高考物理试卷
- 公交公司物业管理制度
- 县级医院收支管理制度
- 三人合伙股东合作协议书
- 理论联系实际谈一谈如何维护政治安全?参考答案1
- 2025届广东省东莞中学七年级数学第二学期期末联考试题含解析
- 2024吉林省农村信用社联合社招聘笔试历年典型考题及考点剖析附带答案详解
- 2024-2025学年度部编版一年级语文下学期期末试卷(含答案)
- DB13(J)-T 8496-2022 城市污水处理厂提标改造技术标准
- 建筑施工临时用电安全教育培训课件
- 生物医学电子学智慧树知到期末考试答案章节答案2024年天津大学
评论
0/150
提交评论