You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
3.3 KiB
Plaintext

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

## 模拟windows环境调试
as_server.exe是模拟单点登录文档说明中的产生随机数和验证票据两个接口。
双击程序在10318端口启动http监听模拟服务。
【注】当测试验证票据结果xml中用户标识rmsid为定制格式时模拟程序启动方式
打开cmd命令行工具执行as_server.exe -ticketFlag=false
## 模拟linux64位服务器调试
上传文件as_server 到测试服务器,需要执行以下两步运行:
root用户执行命令
1chmod +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】用户标识。
在判断该用户已经在应用系统中存在时,允许用户登录应用系统,完成单点登录。