|
|
## 模拟windows环境调试
|
|
|
|
|
|
as_server.exe是模拟单点登录文档说明中的产生随机数和验证票据两个接口。
|
|
|
双击程序,在10318端口启动http监听模拟服务。
|
|
|
|
|
|
【注】当测试验证票据结果xml中用户标识rmsid为定制格式时,模拟程序启动方式
|
|
|
打开cmd命令行工具,执行as_server.exe -ticketFlag=false
|
|
|
|
|
|
## 模拟linux64位服务器调试
|
|
|
上传文件as_server 到测试服务器,需要执行以下两步运行:
|
|
|
root用户执行命令
|
|
|
1)chmod +x as_server
|
|
|
2)./as_server
|
|
|
执行运行后,在10318端口启动http监听模拟服务。
|
|
|
|
|
|
|
|
|
|
|
|
1 产生随机数(本机IP必须为实际地址,不能为127.0.0.1,应用调用者应支持该IP可配置,实际部署环境该IP为身份认证服务器的IP地址)
|
|
|
服务url: http://本机IP:10318/GeneratorChallenge
|
|
|
|
|
|
通过 发送 POST 请求获取响应结果中的随机数
|
|
|
|
|
|
|
|
|
2 验证票据(注意url与文档身份认证服务应用单点登录接口中保持一致)
|
|
|
服务url: http://本机IP:10318/VerifyIdentityTicket
|
|
|
|
|
|
发送POST 请求数据
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
<verifyidentityticketreq version="1">
|
|
|
<challenge>服务端调用模拟接口产生的随机数</challenge>
|
|
|
<identityticket>终端浏览器websocet获取的票据xml tokeninfo元素内容</identityticket>
|
|
|
<appserverid>app server id,支持可配置的一个参数</appserverid>
|
|
|
</verifyidentityticketreq>
|
|
|
|
|
|
返回模拟数据后,解析获取rmsid用户标识,与应用系统中保存的用户属性进行匹配,查找出当前用户。
|
|
|
|
|
|
返回固定的模拟数据
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
<verifyidentityticketresp version="1"> <result>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHZlcmlmeWlkZW50aXR5dGlja2V0cmVzdWx0IHZlcnNpb249IjEiPgoJPHJlc3VsdD4wPC9yZXN1bHQ+Cgk8Y2hhbGxlbmdlPlIxPC9jaGFsbGVuZ2U+Cgk8ZXJyb3I+PC9lcnJvcj4KCTx1c2VyaW5mbz4KCQk8cm1zaWQ+NTlhNTAwNWUtMzIwYy00ZDQzLThjODAtNWI1ZGJmN2FmMzc1PC9ybXNpZD4KCQk8bmFtZT48L25hbWU+CgkJPGNlcnQ+PC9jZXJ0PgoJCTxjZXJ0aW5mbz48L2NlcnRpbmZvPgoJCTxhZGRyZXNzPjwvYWRkcmVzcz4KCQk8YXBwYWNjb3VudD48L2FwcGFjY291bnQ+Cgk8L3VzZXJpbmZvPgoJPGFzaW5mbz4KCQk8bmFtZT48L25hbWU+CgkJPGNlcnQ+aXNzdWVyIGNlcnQ8L2NlcnQ+CgkJPGNlcnRpbmZvPjwvY2VydGluZm8+CgkJPGFkZHJlc3M+PC9hZGRyZXNzPgoJPC9hc2luZm8+Cgk8dGltZT4yMDE4LTAzLTA4IDA5OjQ1OjI4PC90aW1lPgoJPHNpZ25hdHVyZSBvaWQ9IjEuMi4xNTYuMTk3LjEuMTAwMC4xMSIgZGVzYz0iWFpNUyIvPgo8L3ZlcmlmeWlkZW50aXR5dGlja2V0cmVzdWx0Pg==</result>
|
|
|
<signature>dGlja2V0IHNpZ24gZGF0YQ==</signature>
|
|
|
</verifyidentityticketresp>
|
|
|
|
|
|
== 解析过程==
|
|
|
1)先对响应数据进行签名验证(该步可暂时跳过)
|
|
|
|
|
|
验证过程:
|
|
|
signature 元素内容解base64编码后,得到签名值的byte数组内容;
|
|
|
result元素内容解base64编码后,得到原文值的byte数组内容;
|
|
|
|
|
|
调用CipherAPI提供的验签接口,将签名值byte数组,原文值byte数组,AS服务的签名证书解析后的公钥值作为接口参数,调用后判断是否验证成功。
|
|
|
|
|
|
验证成功后再进行下一步解析,验证失败提示用户登录失败,票据签名未验证通过。
|
|
|
|
|
|
|
|
|
2)对result元素内容解base64得到原文数据,另一个xml格式
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
<verifyidentityticketresult version="1">
|
|
|
<result>0</result>
|
|
|
<challenge>R1</challenge>
|
|
|
<error></error>
|
|
|
<userinfo>
|
|
|
<rmsid>59a5005e-320c-4d43-8c80-5b5dbf7af375</rmsid>
|
|
|
<name></name>
|
|
|
<cert></cert>
|
|
|
<certinfo></certinfo>
|
|
|
<address></address>
|
|
|
<appaccount></appaccount>
|
|
|
</userinfo>
|
|
|
<asinfo>
|
|
|
<name></name>
|
|
|
<cert>issuer cert</cert>
|
|
|
<certinfo></certinfo>
|
|
|
<address></address>
|
|
|
</asinfo>
|
|
|
<time>2018-03-08 09:45:28</time>
|
|
|
<signature oid="1.2.156.197.1.1000.11" desc="XZMS"/>
|
|
|
</verifyidentityticketresult>
|
|
|
|
|
|
解析userinfo下的rmsid元素值,【59a5005e-320c-4d43-8c80-5b5dbf7af375】为用户同步模拟工具推送的【测试人员1】用户标识。
|
|
|
在判断该用户已经在应用系统中存在时,允许用户登录应用系统,完成单点登录。
|
|
|
|
|
|
|