Domino单点登录LTPAtoken生成原理

上传人:夏** 文档编号:497325430 上传时间:2023-12-31 格式:DOCX 页数:7 大小:209.30KB
返回 下载 相关 举报
Domino单点登录LTPAtoken生成原理_第1页
第1页 / 共7页
Domino单点登录LTPAtoken生成原理_第2页
第2页 / 共7页
Domino单点登录LTPAtoken生成原理_第3页
第3页 / 共7页
Domino单点登录LTPAtoken生成原理_第4页
第4页 / 共7页
Domino单点登录LTPAtoken生成原理_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《Domino单点登录LTPAtoken生成原理》由会员分享,可在线阅读,更多相关《Domino单点登录LTPAtoken生成原理(7页珍藏版)》请在金锄头文库上搜索。

1、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怎么会找的到W

2、ebsphere存放的cookie,这就是为什么配置SSO的时候需 要2个系统是在同一个DNS域下面,因为浏览器cookie共享的限制,跨域不能共享cookie嘛(当 然也能用一些其他的手段生成跨域的cookie,这样其实通过一定的开发是可以让LTPATOKEN 跨域的,本案例不讨论这个问题)。第2个问题,domino找到这个token之后,凭什么认识这个 ltpatoken,并且认为它有效呢,所以要求domino和Websphere在生成ltpatoken的时候就有某种 约定。这就是为什么配置Domino SSO文档的时候需要引入Websphere的密钥了。有了这些前提 Domino和Web

3、sphere之间就能互相认识对方生成的ltpatoken,并且从中读出需要登录的用户名, 只要用户名匹配得上(这就是为什么W和D需要用同一个LDAP目录),该用户就完成登录了。 以上就是简单的Websphere与Domino之间SSO的原理。当然其实SSO过程还没有这么简单, 比如还需要验证ltpatoken的有效期等。现在我们知道实现SSO的关键在于LtpaToken, Websphere与Domino之间采用LtpaToken 来共享认证信息。那么基本上任何一个系统只能要完成以下2件事情,它就有可能参与LtpaToken认证的SSO 方案了:1、能生成一个有效的LtpaToken提供给别人

4、。2、能解析一个别人生成的LtpaToken。另外,可能还有一些要求:1、参与SSO的系统使用同样的密钥生成LtpaToken,称为公钥。2、 参与SSO的用户帐号名称在各系统中一致,因为每个系统从Token中读出了用户名之后 必须要正确关联到本地对应的用户进行登录。3、参与SSO的系统必须在同一个DNS域下面(跨域的问题前面提过)。通过了解LtpaToken的组成原理,我们就可以自己编码生成和解析LtpaToken 了。首先一个LtpaToken的合成公式如下:token = BASE64(headercreation timeexpirationtimeusernameSHA-1 hash

5、)解释: Header: LtpaToken 版本(长度 4),Domino 的固定为 0x000x010x020x03 Creation time: 创建时间戳(长度8),格式为Unix time比如 2010-03-12 00:21:49为 4B99189D expiration time:过期时间戳(长度8)同上 username: 用户名(长度不定) SHA-1 hash: SHA-1 校验和(长度 20)如下图:0001oz030405 607080910111Z1314150x1l:IX Z0k3琢创建时间1过期时间:16171819Z1zz11-z二Tn+1n+Fn+W;n+4i

6、iiiii1 1 1用户名t可戟度】t1iii+ 05+ 06+07+ 08+ 09+ 10+11 +12 +13 +14+16+ 17+ 18+19+ Z0Domino LTPA 密羽SHJL-丄00010203040 G1214l.E16丄71819SHA-1校验和上面的SHA-1校验和,又是由前面所说的密钥和其余的Token资料合并而 成,合成公式如下:SHA-1 hash = SHA-1(headercreation timeexpirationtimeusernameshared secret)所以,如果有人篡改了 Token,那校验和就与修改后的Token匹配不上了, 这样Toke

7、n 一旦生成,有人想要修改它的信息,比如改成别的用户名,是 不可能的。二 Domino 如何处理 LtpaToken、查看一下domino的Web SSO配置文档:1、Domino 生成 LtpaToken 的密钥存放在 LTPA_DominoSecret 字段2、LTPA_TokenExpiration字段存放失效分钟数。3、LTPA_TokenName 字段存放 Token 表示在 cookie 的 name.如下图:T oken Confi urat i anC onf i gm- ati o n N:uri e :DNS IloiriiirL:M:ip rL:in t-jkens:Ex

8、pLrati 0n (.m inut es):i劇1 H 1岳i -3再加上上面分析过的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中的其余部分和本系统 中的密

9、钥生成新的SHA-1校验和,如果2个校验和不匹配。返回无效的 LtpaToken。4、当前服务器时间必须大于创建时间,小于失效时间。否则返回无效的LtpaToken。5、最后解析通过了,完成用户的登录6、在Java应用上实现生成和解析LtpaToken 的测试文件列表:Base64.javaBundle.javaLtpaConfig.javaLt paToken.java21生成LtpaToken的测试base64编码和解码的类 proper ties资源文件的处理类 Token资料配置类。产生和解析LtpaToken的类LtpaConfig_zh_CN.properties 配置文件 第一步

10、,配置 LtpaConfig_zh_CN.properties,填好 ltpaSecret。这个值本身是 base64 编码。如果是和domino做sso。需要从domino的web sso文档中获取,见上一张图。 tokenDomain信息是生成http cookie的时候用的,本测试中暂不用到。 tokenExpiration是生成LtpaToken时用的,本测试中暂也不用。和昌 LtpConFighjNi pr,cperj:ie!i | bundle.1 #G-etierated 卫亡匚亡4h上上笙f/ecl:2 ltpaSecreC=LULAnDb0 =-3 tokenDoma:Ln=

11、 33*1/已 4 tokenExp ira匸:1口11=22 o|第二步,添加一个测试的类:在main函数中输入以下测试代码:Date date = new Date();String user=CN=Admin/0=S3D;LtpaToken generate = LtpaToken.generate (user, date, newDate(date.getTime() + 20*60000);System.out.println(generate);以上代码为CN=Admin/0=S3D生成一个2 0分钟有效期的LtpaToken。 输出: ProWore lavadoc Dcdwat

12、lon Seardh、血or L叩pclBnBiwfaedAqaifterofcMiFartJtoer3av4JppfcetfaU|Aroyan FfeaVaraUAL 已 CLlttf*iUawawQKB (ZOIO 堆FQZ: Geneuacin. token for CNcArtnain7S3DREturniLn订 tuk皀n,丄ECAzzRCOT1E 0丁QxN E I TPUFERjFDTj 丄日 EU1 卿护 PFMUmRKb 启c;F 工xq E M4d Gj QI1D)U旦亡M斗 I*玄到domino去验证Token的有效性:1、复制上面产生的Token.2、打开IE,输入Do

13、mino服务器的首页地址:http:/ javascript:alert(document .cookie二LtpaToken二AAECAzRC0TlE0TQxNEI50URER jFDTjlBZGlpbi9PPVMzRKb6cFIxqIX+lGjQhDDWaeN4IvXe);以上红色部分是复制的Token4、弹出对话框,cookie设置成功,按F5刷新页面,成功以Admin身份登录 Domino主页,LtpaToken测试成功。2.2解析LtpaToken的测试下面测试解析一个由Domino产生的LtpaToken。1、打开一个新的IE窗口,输入Domino服务器的首页地址:htt p:/

14、IE 地址栏输入:javascrip t: documen t.wr it e(docume nt .cookie)4、复制出Cookie中的LtpaToken的值,如:AAECAzRC0TlEQTZGNEI5QTgzMkZDTjlsaXVnYW5nMi9PPWVzc2VuY2VzZNmGPcg HONQxnrhgnnl/JrPkHgg二在测试类中添加以下测试代码:LtpaToken ltpa = newLtpaToken(AAECAzRC0TlEQTZGNEI5QTgzMkZDTj1saXVnYW5nMi9PPWVzc2VuY2VzZN mGPcgH0NQxnrhgnn1/JrPkHgg=);/从token中取出用户名Systemut .println(ltpa.getUser();/验证一个token是否有效if (ltpa.isValid()System

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号