Domino单点登录LTPAtoken生成原理

上传人:ba****u 文档编号:101300680 上传时间:2022-06-04 格式:DOCX 页数:6 大小:150.86KB
返回 下载 相关 举报
Domino单点登录LTPAtoken生成原理_第1页
第1页 / 共6页
Domino单点登录LTPAtoken生成原理_第2页
第2页 / 共6页
Domino单点登录LTPAtoken生成原理_第3页
第3页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
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个问题,domin。找到这个token之后,凭什么认识这个ltpatoken,并且认为它有效呢,所以要求domino和Websphere在生成ltpatoken的时候就有某种约定。这就是为什么配置DominoSSO文档的时候需要引入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(headercreationtimeexpirationtimeusernameSHA-1hash)解释:Header:LtpaToken版本(长度4),Domin。的固定为0x000x010x020x03Creationtime:创建时间戳(长度8),格式为Unixtime比如2010-03-1200:21:49为4B99189Dexpirationtime:过期时间戳(长度8)同上username:用户名(长度不定)SHA-1hash:SHA-1校验和(长度20)如下图:OQ010E035405060706D91011IZ131415OmILixZ0ic3,0n4I111111BJ.11J过期的闾,11L11617ie13105+06+07+oa202122111:用户产4-0?+10+11+12n_Znfi.1|113+H+15+16饮+1n+在n+3口十419P+17+13+1十衬QiiniirRiririiiwDominoLTPA密桐11I_iJIl1a.L1.1110(J01OZ0301CISD6SKA-113141516111319SHA-1校骗和zJkdJ.L=_,LilJ.I:z上面的SHA-1校验和,乂是由前面所说的密钥和其余的Token资料合并而成,合成公式如下:SHA-1hash=SHA-1(headercreationtimeexpirationtimeusernamesharedsecret)LTPAToken(Dornro认证Cookie)iI,ii.I.I,所以,如果有人篡改了Token,那校验和就与修改后的Token匹配不上了,这样Token一旦生成,有人想要修改它的信息,比如改成别的用户名,是不可能的。二、Domino如何处理LtpaToken查看一下domino的WebSSCJE置文档:1、Domino生成LtpaToken的密钥存放在LTPA_DominoSecret字段2、LTPA_TokenExpiration字段存放失效分钟数。3、LTPA_TokenName段存放Token表示在cookie的name.如下图:-tte-ET-SSU-Conti.gurationtyrcIComm?ntsAdmiciistritionCcnfijurationHunt:LtpTokenExpiritionCiiiiutes):r72O_OtrgaiuratioiL:;;IJiaSEi4nTiffisottt:fitsDNSDs必m:.Nd.conMLpnn-ieslitLTPAjDigbMd就Ijd,tk-sns:文档TFtvui?*1r:KjdoServerN硕口w:LTFADoffiinoSecret域名.UFA.DominoSecret数据类型:穴本列表簸据侦度:32Kyt序列号;L重复项目标识符:口域标志;SIALSUMMW帝&嶂】LTfA_SferversLTFA_tinegtLTF&_T&kenD棚nLTrA_TokEr呱LTFAT&kenffuneLTFA_J?jenMwieDiapLvinutE质厂用河昭心m再加上上面分析过的LtpaToken组成原理,我们大概可以知道domin。是怎么生成LtpaToken的了。详细的debug信息可以通过在notes.ini里面配置条目DEBUG_SSO_TRACE_LEVEL=&查看日志。Domino解析LtpaToken步骤:1、Base64解码LtpaToken。2、截取最前面20字节,最后面20字节,中间部分就是用户名。如果用户名在本系统中不正确,返回无效的LtpaTokeno3、截取最后面20字节,是SHA-1校验和。用Token中的其余部分和本系统中的密钥生成新的SHA-1校验和,如果2个校验和不匹配。返回无效的LtpaToken。4、当前服务器时间必须大丁创建时间,小丁失效时间。否则返回无效的LtpaToken。5、最后解析通过了,完成用户的登录6、在Java应用上实现生成和解析LtpaToken的测试文件列表:Base64.javaBundle.javaLtpaConfig.javaLtpaToken.java2.1生成LtpaToken的测试base64编码和解码的类properties资源文件的处理类Token资料配置类。产生和解析LtpaToken的类LtpaConfig_zh_CN.properties配置文件第一步,配置LtpaConfig_zh_CN.properties,填好ltpaSecret。这个值本身是base64编码。需要从domino的websso文档中获取,见上一张图。httpcookie的时候用的,本测试中暂不用到。LtpaToken时用的,本测试中暂也不用。如果是和domino做sso。tokenDomain信息是生成tokenExpiration是生成Ibundk.jaaBlp厂1可_寸叩叶|栉X1G-elietatecl主iiirc;uUJ.日IdLtcg一4IvpaSccce=_LIJ1token.Domain=-a3dltaken.Expira.r.ion*72Q第二步,添加一个测试的类:在main函数中输入以下测试代码:Datedate=newDate();Stringuser=CN=Admin/O=S3D”;LtpaTokengenerate=LtpaToken.generate(user,date,newDate(date.getTime()+20*60000);System.out.println(generate);以上代码为CN=Admin/O=S3D生成一个20分钟有效期的LtpaToken。输出:ProbieffwOe心HE5e*thrrorL国.f.顷mt成河ngTWeT/SForlJEi.场日如pkdiEKAm.rMnF处罚知/肮点】.&J!0bnL旧wwqm(QW-3-12下午l:JlGeneratin.gtokenfarCKAdmin/OSSD【RNumLsSkMl4ECAERCOTlEiyr3NEl50tJME:WjFDT.ilBHGlplaQPFVIlHRQ&(:FlxlX+l&miiriDHeie;tMIv4到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=在测试类中添加以下测试代码:LtpaTokenltpa=newLtpaToken(AAECAzRCOTlEQTZGNEI5QTgzMkZDTj1saXVnYW5nMi9PPWVzc2VuY2VzZNmGPcgH0NQxnrhgnn1/JrPkHgg=);/从token中取出用户名System.out.println(ltpa.getUser();/验证一个token是否有效if(ltpa.isValid()(System.out.println(token是有效的);)输出以下内容:到这里,解析LtpaToken测试成功。7、总结LtpaToken非常安全方便,不失为一种较好的SSO牟决方案。1、通过以上对LtpaToken的了解:可以给大多数B/S应用配置使用基丁LtpaToken的SSO
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!