Asp.net 单点登入实现

最近有个需求,就是针对内部多个的web应用实现从OA(古老的asp.net)的单点登入,其他系统可以通过链接免输入帐号密码登入,以下是我实现的技术方案。
 在主应用系统登入时,将会话信息保存到数据库中,作为授权其他应用系统免登入授权凭据。流程如下:
流程
数据库保存的主要授权信息:用户当前IP,用户名,会话ID,已登入站点名称.
   
通过此种方式,不仅可以保证信息安全,登入主站点后,甚至客户端应用程序也可以通过授权接口实现免登入。

现在我们来看具体实现:
项目
使用vs2010新建了项目如上图,分别建立了一个服务项目,一个主网站,一个其他靠验证登入的网站。
贴上各个项目的核心实现:
数据库表:
数据库表字段
表主要用于记录主站的登入信息,包括用户名,登入的IP地址,主网站的名称,SessionID,会话创建时间
主网站在登入成功后的核心代码:
主网站
子网站:
子网站
LoginService验证服务的接口
验证服务接口
上图是子网站调用的验证接口实现。
通过这种方案,可以轻松的实现子应用依靠主应用的登入信息获得许可,同时也不会 影响他们各自的许可登入。
期间遇到我们本计划在Session_End事件中删除会话,无奈发现会话保存在StateServer时无法执行 Session_End事件(启用单独的进程),所以改用在主站用户注销时删除会话信息(用户必须通过注销关闭网站才是合法的,针对意外关闭的保留在数据库中的垃圾会话信息,会在最后一次注销时依据user_Name作为条件一并删除)。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值