asp.net Single Sign-On(SSO) from SAP

公司的主系统是SAP的东西,有的时候老板想要一些小的新功能或是某个部门需要一个自己使用的小系统又不想买SAP的东西(贵啊),只有自己写和使用一些第三方免费或是开源的系统,这个时候就难免涉及到Single Sign-On。而在asp.net 2.0下是非常容易实现的。有SAP提供的“Sapsecu.dll”,“sapssoext.dll”2个dll再加上由公司SAP系统提供的"verify.pse"就足够了。

第一步

复制Sapsecu.dll到system32目录,并使用Rersrv32注册。

第二步

在项目里添加对sapssoext.dll的引用,vs2005会自动生成Interop.SAPSSOEXT.dll来让.net使用。

第三步

在你项目的根目录创建sap目录,并将SAP系统那边提供的verify.pse复制过去。位置倒到不是一定要在这里,只要你找得到就好。

第四步

在SAP系统那边,需要生成一个类似:http://yourserver/login.aspx?sso=werwerwerwe的链接,当然具体的页面需要你和那边的管理员商量来决定。这个链接是有时效性的,我在做测试的时候他们给的测试链接通常只能用一天。现在我们要做到就是我们这边的编码,在login.aspx的page_load里面实现:

   protected void Page_Load(object sender, EventArgs e)
        {
            //string sso = Request.QueryString["sso"];
            SAPSSOEXT.SSO2Ticket objSSO = new SAPSSOEXT.SSO2Ticket();
            objSSO.CryptLib = "sapsecu.dll";
            string strKeypath = Server.MapPath("~/sap/verify.pse");    //放在根目录比较容易找
            object tt;
            tt = objSSO.EvalLogonTicket(strTicket, strKeypath, String.Empty);    //关键的就是要调用这个函数
            object[] ts = tt as object[];    //处理过后的其实是个对象数组,有很多东西,而我们要关心的是第一个:用户的id
            string userId = ts[0].ToString();
            loginToMySystem(userID);    //调用函数来登入自己的系统。
        }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值