分布式系统用户统一认证浅析(二)认证中心主动认证实现

本文详细阐述了分布式系统中主动认证的实现过程,对比了主动认证与被动认证的流程。在主动认证中,用户登录后,认证中心会主动通知子站点用户已登录并持有Token,提高系统性能。通过C#和VS2008实现认证,当用户请求子系统页面时,若无Token则跳转到登录,登录后设置Session并通知子系统,最后返回用户信息完成页面展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇文章写了被动认证的实现,本文接着写主动认证的实现。

 

一、认证流程

为了和被动认证有个比较,这些列出被动认证的流程图

1.1认证(图1为被动认证,图2为主动认证): 

 分布式系统用户统一认证浅析(二)认证中心主动认证实现

分布式系统用户统一认证浅析(二)认证中心主动认证实现 

主动认证的流程和被动的区别是,在每次登录后,主动发通知到子站点A,告诉子站点A已经登录,并且拥有Token。这种方法的前提是,每次用户退出时,认证中心也会主动通知所有的子系统用户已经退出,清除该Token。这种认证方法有一个好处,减少了认证中心和子站点之间的交互次数,提高了性能。

 

二、认证实现(C#,VS2008)

2.1、认证实现

首先,建立认证中心的Web站点,页面机构如下:

 分布式系统用户统一认证浅析(二)认证中心主动认证实现 

子站点SubWebSite工程,页面结构如下:

 分布式系统用户统一认证浅析(二)认证中心主动认证实现

修改一下上边的验证示意图,得到页面调用顺序示意图:

分布式系统用户统一认证浅析(二)认证中心主动认证实现 

当用户请求子系统页面(Default.aspx),则该用户是否已经有了Token(也就是Session[“Token”]),若没有,则跳转到用户中心进行登录,登录之后,用户中心发送通知,告知子系统用户已经登录(SSO.aspx设置Seesion[“Token”]),通知结束后进行跳转回子系统Default.aspx页面,此时已经有Token,可以拿此Token去验证中心获取用户信息,并显示页面信息给用户。

通知部分使用js通知(如下):

<script type="text/javascript" src="jquery.min.js"></script>

    <%--通知子系统用户登录了(这里要对每个子系统进行通知)--%>

    <script type="text/javascript" src="http://mowen:8000/subwebsite/SSO.aspx<%=ssoParas%>"></script>

    <script type="text/javascript">

        $(document).ready( //使用$(document).ready的作用是,通知请求返回之后再跳转

            function() {

                var returnUrl = '<%=returnUrl%>';

                if ($.trim(returnUrl) != null) {

                    //通知结束后,跳转到子站点

                    location.href = returnUrl;

                }

            }

        );

    </script>

 

<script type="text/javascript" src="jquery.min.js"></script>
    <%--通知子系统用户退出了(这里要对每个子系统进行通知)--%>
    <script type="text/javascript" src="http://mowen/usercenter/SSO.aspx<%=ssoParas%>"></script>
    <script type="text/javascript">
        $(document).ready(
            function() {  
               //通知结束后,跳转到登录页面
                location.href = "SignIn.aspx?ReturnUrl=<%=returnUrl %>"; 
           }
        );
    </script>

退出通知结束后跳转到登录页面。 

来看实现代码:

子系统subWebSiteDefault.aspx(子系统需要认证的页面)
    <form id="form1" runat="server">
       <div>
        通过了认证,登录的用户名为<%=Session["UserName"] %>
 &nbs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值