• 休闲生活
  • 教育教学
  • 经济贸易
  • 政法军事
  • 人文社科
  • 农林牧渔
  • 信息科技
  • 建筑房产
  • 环境安全
  • 当前位置: 达达文档网 > 达达文库 > 环境安全 > 正文

    基于.NET,Web服务的跨域单点登录系统的实现

    时间:2020-09-14 07:58:43 来源:达达文档网 本文已影响 达达文档网手机站


    打开文本图片集

    摘要:ASP.NET没有跨域单点登录的实现机制。分析了跨域单点登录的原理,提出了一种在SSO网站存储登录的用户对象,浏览器Cookie中存储SSO网站的用户令牌,信任网站之间传递令牌、间接共享Cookie的跨域SSO解决方案。

    关键词:ASP.NET;跨域;单点登录;Web服务

    中图分类号:TP315文献标识码:A文章编号:1009-3044(2012)20-4907-02

    Implementation of Cross-domain Single Sign-on System Based on .NET Web Service

    XU Hui

    (School of Information and Statistics,Guangxi University of Finance and Economics, Nanning 530003,China)

    Abstract: ASP.NET does not have cross-domain single sign-on(SSO) implementation mechanism. This paper analyzes the cross-domain single sign-on principle, proposes a cross-domain SSO solution that logged-in user object is stored in SSO website, user token is stored in browser’s Cookie, and then user token is passed between trusted sites, indirectly sharing Cookie.

    Key words: ASP.NET; cross-domain; single sign-on; Web services

    在当今WWW的广泛应用中,许多单位已经为内部的各个应用系统和Web门户网站使用统一身份认证中心进行用户认证。单点登录(SSO,Single Sign On)是流行的统一身份认证解决方案之一。焦亚楠等人[1]提出了一种用Java实现、基于SAML的跨域单点登录解决方案;岳小婷[2]提出了.NET平台下同一主域下的单点登录实现方法;许小东等人[3]提出了在.NET平台下使用Forms身份认证机制的单点登模型。对于跨域的单点登录,ASP.NET没有提供内置的实现机制。因此,针对这一问题,该文提出一种采用SSO网站集中存储登录用户的用户对象,使不同域名的信任网站之间间接共享Cookie,生成用户令牌在信任网站之间传递的SSO实现模型。

    1 NET跨域单点登录模型

    为了实现.NET跨域的SSO,引入一个专用的SSO网站,该网站有一个存储用户身份信息和授权访问信息的数据库,用于验证用户身份、设置身份验证Cookie,以及授权访问。跨域SSO模型如图1所示。在该模型中,浏览器不储存每个信任网站的身份验证Cookie,而是存储SSO网站的唯一身份验证Cookie。浏览器对SSO模型下的任何信任网站的每个请求都重定向到SSO网站,由SSO网站检查用户的身份验证Cookie是否存在。如果存在身份验证Cookie,表明用户已经登录,则从原请求的信任网站中提供授权的网页给浏览器。如果不存在身份验证Cookie,则用户被重定向到相应网站的登录页面。

    浏览器存储一个名为AuthUserToken的Cookie,其值的格式为“用户令牌"有效时间”。用户令牌是SSO网站验证用户身份成功后返回的全局唯一值,表明用户已通过SSO身份认证。跨域单点登录的过程为两个阶段:

    1)匿名用户访问网站1的授权页面,首先重定向到SSO网站,并在URL中加入原请求的URL为参数。SSO网站检查浏览器是否设置了身份验证Cookie,或请求中是否含有用户令牌。如果两者都没有,则重定向到网站1的登录页面。用户输入凭据后,网站1调用SSO网站的Web服务,验证用户凭据。如果验证成功,则返回登录的用户对象和用户令牌。此令牌是在用户每次登录时产生的GUID值。网站1标识已登录的用户(如在Cookie中存储用户令牌),将原请求URL和用户令牌作为新请求的参数,重定向到SSO网站。SSO网站检查传入的请求URL,发现用户令牌参数,但没有可用的身份验证Cookie,这表明用户已通过网站1的验证。因此,SSO网站使用令牌,从用户信息数据库中检索用户,设置身份验证Cookie、用户信息,以及有效时间等。然后重定向到网站1中最初请求URL的授权页面,并在网址中传递令牌。网站1发现请求中含有用户令牌,通过调用SSO网站的Web服务,验证通过后,将最初请求页面输出到浏览器。这一过程对应于图1的步骤1-步骤7。

    2)在网站1登录的用户浏览器访问其他信任网站(如网站2)的授权页面时,将此请求作为URL参数重定向到SSO网站。由于浏览器已经拥有SSO网站的身份验证Cookie,因此将这个Cookie添加到请求参数,再发送请求到SSO网站。SSO网站检查传入的请求,找到身份验证Cookie,检查该Cookie是否已过期。如果不过期,则从Cookie中检索用户令牌,并将请求重定向到网站2的最初请求URL,并在URL中加入用户令牌参数。因此,网站2通过调用SSO网站的Web服务,验证用户令牌成功后,执行网站2的最初请求页面,将响应输出到浏览器。这一过程对应于图1的步骤8—步骤11。

    2 NET的跨域单点登录设计

    2.1 SSO组成模块

    基于.NET web服务的跨域单点登录系统由四个模块组成:登录模块、身份认证模块、Web服务代理模块、授权管理模块。登录模块实现用户密码的一次性验证;身份认证模块提供Web服务方法,验证用户的合法性;Web服务代理模块用于信任网站调用SSO网站的Web服务;授权管理模块授予合法用户的访问资源权限。

    2.2 SSO网站设计

    SSO网站主要实现统一的用户身份验证、授权管理功能。用户身份验证由信任网站通过SSO代理访问,验证用户身份,获取SSO网站上用户的登录状态,它主要包含以下Web服务方法:

    1)Authenticate():验证浏览器提供的用户凭据是否与用户信息数据库的用户身份匹配。验证成功后返回登录的用户对象和令牌,将它们存储到SSO网站应用对象中,作为用户已登录SSO的标记,同时将在浏览器Cookie中存储令牌。

    2)GetUserByToken():根据令牌获取对应的用户对象。

    3)IsUserLoggedIn():判断令牌对应的用户是否已登录SSO。

    授权管理是根据分配的资源权限,对通过SSO身份认证的用户授予访问受保护页面的权限。授权管理通过ASPX页面(Authen ticate.aspx),设置和检索用户身份验证Cookie变量值。该页面由SSO代理模块重定向,根据请求的类型,设置、检查或删除身份验证Cookie变量。其主要方法如下:

    1)SetAuthCookie():如果在请求URL中含有Token参数,意味着用户是经过SSO认证的,因此,在用户浏览器的Cookie中设置名为AuthUserToken的Cookie值,存储用户令牌、有效时间,再重向到原URL。

    2)CheckCookie():从浏览器Cookie中读取AuthUserToken值,得到用户令牌和有效时间。如果有效时间已过期,则删除Au thUserToken,重定向到原URL。否则,重定向到原请求的URL。

    3)MarkUserLoggedOut():将SSO网站与用户令牌对应的应用对象设置为null,标记用户已退出系统。

    2.3 SSO代理模块的设计

    SSO代理模块用于简化信任网站的SSO调用,它实际上是一个动态链接库(SSOProxy.DLL),由信任网站引用。它由信任网站执行以下主要功能:1)通过Web服务与SSO网站通信,如身份验证、设置Cookie值;2)重定向到SSO站点,请求登录页面或者提供请求的页面。

    SSO代理模块中定义了一个PrivatePage类,它继承System.Web.UI.Page类,并重写Page类的OnLoad()事件处理方法,实现在装载页面时,读取请求URL中的参数值,调用SSO网站的Web服务方法,检查用户的登录状态,根据其登录状态,重定向到SSO网站、原请求URL,或者退出SSO系统。该类定义以下主要方法:

    1)LoadParameters():读取URL的Token、Action、ReturnUrl等参数值。

    2)HandlePostbackRequest():若请求是登录页面。则不重定向到SSO。否则,检查用户是否已经登录SSO,根据登录状态,重定向到相应的页面。

    3)RedirectToSSOSite():重定向SSO网站的授权页面。

    4)Login():调用SSO的Web服务方法,验证用户身份的合法性。

    5)ValidateUserStatusAndRedirect():检查用户状态,重定向到相应的页面。

    2.3信任网站的设计

    信任网站是SSO模型下的各种Web应用程序。为了让所有信任网站都由SSO网站进行统一的身份认证和授权,只需要按照应用需求设计好相应的Web应用程序,引用上述SSO代理类库,并对Web应用程序中需要保护的每个ASPX页面的代码类(即.aspx.cs文件)作修改,使ASPX页面的代码类继承SSOProxy. PrivatePage类,而不是继承System.Web.UI.Page类。同时对ASP.NET应用程序的web.config配置文件添加如下内容,指定SSO网站的Web服务URL、授权页面URL,以及应用程序自身的登录页面URL和默认主页URL。

    2.3信任网站的注销设计

    注销信任网站就是退出信任网站的Web应用程序。在退出时,需要删除浏览器Cookie中的用户令牌、有效时间,并删除SSO网站中与用户令牌对应的用户对象。

    3结束语

    该文提出的.NET环境下基于Web服务的跨域单点登录系统,设计简单,将它应用于数字化校园管理系统,实现校园网各种应用的统一身份认证和管理的功能。

    参考文献:

    [1]焦亚楠,胡春枝.基于SAML的跨域单点登录的设计与实现[J].计算机技术与发展,2012,22(1):157-160.

    [2]岳小婷. ASP. NET 2. 0单点登录技术在数字化校园中的应用[J].计算机与现代化,2009(5):106-109.

    [3]许小东,沈士根.基于ASP. NET的单点登录系统的研究与实现[J].嘉兴学院学报,2011,23(3):90-94.

    相关热词搜索: 单点 登录 系统 服务 net

    • 生活居家
    • 情感人生
    • 社会财经
    • 文化
    • 职场
    • 教育
    • 电脑上网