1、宝玉xp2011.4单点登录解决方案的架构与单点登录解决方案的架构与实现实现单点登录什么是单点登录?CLIENT-WEB GTALK-GMAILCLIENT-WEB MSN-HOTMAILWEB-WEB GOOGLE READER-GMAIL单点登录定义单点登录SSO(Single Sign-On)是身份管理中的一部分。SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即 通过一个应用中的安全验证后,再访问其他应用中的受保护资源时,不再需要重新登录验证。客户端登录过程以msn为例分析LIVE MESSENGER登录过程https:/ MES
2、SENGER 登录HOTMAIL传输的数据POST https:/ token=ct%3D1302192303%26bver%3D7%26wa%3Dwsignin1.0%26ru%3Dhttp:/ 数据ct=1302192303bver=7wa=wsignin1.0 ru=http:/ appid=%7B7108E71A-9926-4FCB-BCC9-9A9D3F32E423%7D da=%3CEncryptedData%20 xmlns%3D%22http:/www.w3.org/2001/04/xmlenc%23%22%20Id%3D%22BinaryDAToken0%22%20Type%
3、3D%22http:/www.w3.org/2001/04/xmlenc%23Element%22%3E%3CEncryptionMethod%20Algorithm%3D%22http:/www.w3.org/2001/04/xmlenc%23tripledes-cbc%22%3E%3C/EncryptionMethod%3E%3Cds:KeyInfo%20 xmlns:ds%3D%22http:/www.w3.org/2000/09/xmldsig%23%22%3E%3Cds:KeyName%3Ehttp:/Passport.NET/STS%3C/ds:KeyName%3E%3C/ds:K
4、eyInfo%3E%3CCipherData%3E%3CCipherValue%3EAdn%2BcqR1gmiTLVQGs8qXIcBFJ0QPGi7O%2BRbRjyoR0F2Iz94dGP8s9qoe3GdGFUt9/qguaX1ygP/ghA%2B7m6eyYgUjKr6ZLQXL3lvi/2%2BAiYeEdRp3dTFqifsjTdc6a0el3rxnayb5yHiP3YbSzknVcqayqszMLnZIIuUxrDVcHGuobAIqCHrWIwiApfYJCjbbnzXNr4GIqbueQkebpn7JU16bkCion1neNxSg58P7XLEqxzAce3ZUNZWoUD
5、nT/6OtDCkuCmxewrn3sr5Ugh/FSoW%2B3KGledTk3brKOu8Uu7YNM5Y2k4K90Su8U3zXCyhJXkrVJCzRhJCvOCuWUs4DTEs9ocxKUSOICqaicIc6tTJYfyLlWHhOmsigGzVj2B8NOysbsr/V6KnLu2vgEWkYr0j/ZYYrAa1R0AuIep0i0hPHUTeOz7HAV5PzwciNA33YIgzyGn3ivmFFcjkxRwmesidmtXopLUSj%2BYIqUqXQ2p11vmQv9UJYCzWghtNS%3C/CipherValue%3E%3C/CipherData%3E%3C
6、/EncryptedData%3Enonce=gGOWyChz45t49%2BfhhBsK5lPq/swIKn%2BZhash=XvO2NYVpeXsR8cCa7TEv4JLzEVw%3D DA http:/Passport.NET/STS Adn+cqR1gmiTLVQGs8qXIcBFJ0QPGi7O+RbRjyoR0F2Iz94dGP8s9qoe3GdGFUt9/qguaX1ygP/ghA+7m6eyYgUjKr6ZLQXL3lvi/2+AiYeEdRp3dTFqifsjTdc6a0el3rxnayb5yHiP3YbSzknVcqayqszMLnZIIuUxrDVcHGuobAIqCHr
7、WIwiApfYJCjbbnzXNr4GIqbueQkebpn7JU16bkCion1neNxSg58P7XLEqxzAce3ZUNZWoUDnT/6OtDCkuCmxewrn3sr5Ugh/FSoW+3KGledTk3brKOu8Uu7YNM5Y2k4K90Su8U3zXCyhJXkrVJCzRhJCvOCuWUs4DTEs9ocxKUSOICqaicIc6tTJYfyLlWHhOmsigGzVj2B8NOysbsr/V6KnLu2vgEWkYr0j/ZYYrAa1R0AuIep0i0hPHUTeOz7HAV5PzwciNA33YIgzyGn3ivmFFcjkxRwmesidmtXopLUS
8、j+YIqUqXQ2p11vmQv9UJYCzWghtNS GTALK打开登录GMAIL传输的数据GET https:/ auth=APh-3FxTAOVo71-77U8NQqkkMpJfIzHHi3ClRqCJzSRrft5CWIGKk6Fu5EwlCxmS0sloWRId1x18wCRrhrpA2hwNYyijP4AAu6YwENEFnzYY2nc8jOxmkkEJ0N8qRh9Xze3kr-_GiVVzBxzHOHxK0ZH2vge5JJyM0IEiTH69Hx8XYZ86qYi_-rEKQMlYdLuGE4PJM5pULCi_895SjX2CNU9jyv-6fTSS72nTOzrBDJ
9、0kV9tW05gxNtdBQSvfldctE8GSpiDEds0B8oTuZAbgpnp17SO_MzEKGJ7_kGbAU66ea_Rn2_MVitDjrqIp8rvN_GWrRWfLtOPgFVBmlFqPrrtAKWQbAz9HhyVqv4NptuY0LH_BkI4Db82Ws3I3g-k3JGrRIG3wiw5yyt8t7zw0-OGU4yJkr1citxw4h30cIRybVTmX3WIaW1c_J-fUpwmwFcVCQ47V09w-bdf3jgSH6TY_czbKn-ziqrqE6tbeACdw3BNLKRJ8y7-01Tbu4EOOYufKxiG-Z1ONFXG8uh8pkl
10、dJDQQ1XLX3RvgS3kOJsKk-Rk-0TtMtW-crBelq83XM3x2NMTUWguRWkkrdPP18V7x97Ez_UeMaETUP2cWau0 xzhKo9yL1Lws,service=mail continue=https%3A%2F%2F%2Fmail source=googletalk关键数据登录网站地址(Login Portal Url)https:/ Url)ru=http:/ Id)appid=%7B7108E71A-9926-4FCB-BCC9-9A9D3F32E423%7Dsource=googletalk授权凭证(Credential)数据如何保护?
11、如何来保护授权凭证中的信息数据加密可逆加密 or 不可逆加密?可逆加密算法DES,Triple-DES,AES,公共密钥 or 各应用独立密钥?密钥每个应用系统拥有一个唯一的AppId和一个与其对应的Credential密钥。不同的应用系统使用不同的Credential密钥,目的是防止截取或伪造单点登录系统的Credential,并防止两个SSO应用系统之间互相截取或伪造对方的Credential。密钥管理如何管理SSO应用的密钥?密钥管理SSO Key Server 统一登记和管理根据AppId区分应用系统SSO应用系统向SSO Service获取属于自己的密钥密钥有一定时效性,会过期授权凭
12、证信息授权凭证里面都有什么?授权凭证(CREDENTIAL)SSO应用系统登录时,SSO Portal会验证用户身份,并向应用返回一个代表用户身份的CredentialCredential一般以BASE64字符串的形式存在Credential中包含的加密信息,SSO应用系统均拥有Credential密钥,可解开该Credential以获取用户的身份信息。Credential具有一定的有效期。Credential包含的信息包括:加密信息:用户ID、用户名、Credential生成时间、Credential失效时间未加密信息:对应密钥编号、AppId授权凭证的结构Credential一般采用明文结
13、构内含密文结构的形式。明文部分对应密钥编号为保证在密钥更换期间,旧密钥加密的Credential能被正常解密,所以我们需要在Credential中标记出Credential对应的密钥号码AppId,对应App密文部分保存加密后的用户信息,客户端不可读。服务器端解密后可从密文中获取用户的身份标识。授权凭证属性名属性名说明说明KeyId凭证生成时使用的密钥的标识,服务器端与客户端凭证生成时使用的密钥的标识,服务器端与客户端均可读,但对客户端透明。均可读,但对客户端透明。例如例如:0:0号密钥号密钥1:1号密钥号密钥2:2号密钥号密钥AppId每个每个SSO应用系统申请的编号,唯一代表一个应用系统申
14、请的编号,唯一代表一个SSO应应用系统。用系统。EncryptedData加密后的用户信息,客户端不可读。服务器端解密加密后的用户信息,客户端不可读。服务器端解密后可从明文中获取用户的身份标识。后可从明文中获取用户的身份标识。ENCRYPTEDDATA解密属性名属性名说明说明Nonce随机整数随机整数CreateTime凭证生成时间凭证生成时间ExpireTime凭证过期时间凭证过期时间UserId用户用户IdUserIp用户登录用户登录IPUsername/Email用户名用户名或或EmailHashSHA1计算的散列值计算的散列值,防止数据被修改,防止数据被修改授权凭证的验证和解析如何验证
15、一个授权凭证是否合法?取出里面的信息?两种授权凭证验证解析方案对比从SSO服务器验证应用自行验证CredentialApp ServerSSO Key ServerCredentialApp ServerSSO Server授权凭证的验证流程校验AppId根据密钥编号对应密钥解密数据校验Hash值校验IP校验授权凭证是否到期更新授权凭证客户端单点登录客户端单点登录流程?客户端SSOPortal1.提交账号密码登录2.返回客户端授权凭证3.保持登录带上旧凭证4.返回客户端新的授权凭证客户端浏览器应用站点1SSOPortal5.点击站点链接6.访问页面使用客户端凭证7.302跳转带上返回地址8.请
16、求SSO网页带上返回地址9.302跳转设置SSO Portal Cookie,Url中带上Site 1凭证10.访问页面Url带凭证11.200 OK设置凭证到Cookie不同站点间的单点登录多个站点之间如何共享登录?用户浏览器应用站点1SSO站点1.浏览网站12.访问页面3.302跳转带上返回地址4.请求登录网页带上返回地址5.200 OK登录表单6.输入账号密码7.提交表单带上返回地址8.302跳转设置Cookie,Url中带上凭证9.访问页面Url带凭证10.200 OK设置凭证到Cookie11.访问页面Cookie带凭证12.200 OK用户浏览器应用站点2SSO站点13.浏览网站214.访问页面15.302跳转带上返回地址16.请求登录网页带上返回地址17.302跳转设置Cookie,Url中带上凭证18.访问页面Url带凭证19.200 OK设置凭证到Cookie20.访问页面Cookie带凭证21.200 OK系统架构整体架构如何?SSO PortalSSO Key ServerSite 1Site 2Site nApp 1App nQ&A提问时间THANKS谢谢