问题描述
我这里要开发项目,要登陆远程一个公共站点A网址,在那个页面进行了数据id和pwd后,验证成功后跳转我开发的页面,返回来的时候有用户名(用户名怎么来的?)和一些个人信息?现在远程站点给我一个单点登录接口设计文档,这里的过程是怎么样的?有谁可说的详细些,头大来着!
解决方案
解决方案二:
不同的人开发的单点登录都是不一样的,问我们没结果的。人家文档肯定说清楚、明白怎么作了。要不然要这文档干嘛?
解决方案三:
>>"在那个页面进行了数据id和pwd后"你还是回去重念语文比较好!有文档了还来问
解决方案四:
几点忠告1.仔细,仔细阅读接口文档2.不要轻易认为对方的接口有问题.3.要处理中文的时候,重点注意编码格式.这些年和很多接口打过交道了,移动的/电信的/支付的/短信的,一般来说对方的系统和文档都是经过检验的,静下心来仔细阅读文档基本上不会有问题,调试的时候碰到接口返回数据与预期的不一至的情况,以前常常心烦上火,其实都是自己心不静,文档没看仔细造成的.
解决方案五:
我大概理解了你们的意思,但是我还是有点不清楚的是,我要给对方什么,或是对方要我提供什么给他,我之前提供给第三方的是:(登录地址http://myauth.suda.edu.cn/default.aspx?Redirect=http://SDMS/common/index.aspx),注销是在我自己的页面进行的,但是在后台是要在公共页面进行注销以及cookie的清空,(注销是:http://ids1.suda.edu.cn/amserver/UI/Logout?goto=http://SDMS/common/index.aspx?&id_tag=*****&secret=*****×tamp=*****&usertype=*******),我这样提交给第三方不知道对不对,还是我理解错了,请大家指教!不懂,学习学习中,让大家见笑了!这里是接口文档说明,我该给第三方是一个url和参数呢。还是一些其他东西!用户的单点登陆的主要流程是这样的,用户把id_tag,timestamp和由方约定的一个pass,作为参数进行MD5摘要,得到一个secret,然后把id_tag,timestamp,和secret作为参数发送给您的系统进行验证,您的系统再通过双方约定的密码把传过来的参数进行MD5摘要与用户传过来的secret做比较,如果一样则说明验证通过。如果timestamp和本机的时间相差较大如20分钟,可以认为认证超时。接口方式http://xxx.suda.edu.cn/login.aspx?id_tag=*****&secret=*****×tamp=*****&usertype=*****参数说明:id_tag:登录用户ID(教师为工号比如050065)secret:认证ID是由双方约定的一个id_tag,pass,timestamp组成的串,经过md5加密后得到的一个串。timestamp:时间戳(比如"1058771398",就是自从1970.1.100:00:00到现在的秒数)usertype:用户类型:0教师1学生http://xxx.suda.edu.cn/login.aspx是您系统的url,如采用其他地址请告诉我。;系统登录的地址为:http://myauth.suda.edu.cn/default.aspx?app=xxx(xxx的值参见说明)系统退出的地址为:http://ids1.suda.edu.cn/amserver/UI/Logout?goto=您的url(请自行清除自己系统的Session)示例代码如下(C#语法)boolcheckMyauth(){stringid_tag=Request.QueryString["id_tag"];//工号或者学号stringsecret=Request.QueryString["secret"];//客户端md5散列串stringtime=Request.QueryString["timestamp"];//客户端时间stringpass="参见说明";//双方约定的密码【此密码让管理员进行配置】stringmytime=GetUnixTimeStamp(DateTime.Now);//获取服务器时间戳if(Convert.ToInt64(mytime)-Convert.ToInt64(time)>60*60)//如果客户端时间早于服务器时间1个小时,则加密串过期{returnfalse;}Stringsecret1=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(id_tag+pass+time,"md5").ToLower();//服务器端md5散列串="工号+双方约定的密码+客户端时间"的md5if(secret==secret1)returntrue;//如果客户端md5散列串==服务器端md5散列串,则认证通过。returnfalse;}