文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>基于SAML的单点登录.NET代理端实现方案

基于SAML的单点登录.NET代理端实现方案

时间:2011-03-18  来源:镜涛

SAML的相关内容就不介绍了,想深究的可以研究下相关的规范,主要写下大体的思路。

通过SAML实现单点登录的运转过程如图:

 

此处的ServiceProvider是服务提供者,也就是用户需要访问的应用,IdentityProvider是认证提供者。

通过上图可以看出,当用户访问一个应用的时候,如果用户没有登陆,那么需要将用户重定向到认证服务,认证服务判断该用户是否已经经过认证,如果没有认证过那么进行认证,然后生成断言响应发送给SP,SP负责处理断言,验证用户是否认证通过。也就是说SP进行了请求转发和断言解析两个过程。在.NET中我们可以通过HttpModule来过滤请求,对没有认证的请求进行转发,通过HttpHandler过滤断言请求,对断言进行处理。

这种方案的好处是,不需要修改既有的应用程序代码,就能够将其集成到单点登录系统中。也就是只要把认证的Dll复制到应用执行目录下,然后配置HttpModule和HttpHandler即可。

 

示例Module和Handler如下:

    /// <summary>

    /// HTTP Module 处理所有Http请求

    /// </summary>

    public class SPDispatcherFilter : IHttpModule

    {

        public void Init(HttpApplication context)

        {

           context.AcquireRequestState += new EventHandler(context_AcquireRequestState);

        }

 

        /// <summary>

        /// 在session创建完成后处理请求

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        void context_AcquireRequestState(object sender, EventArgs e)

        {

            HttpApplication app = sender as HttpApplication;

            //如果还没加载过配置信息,那么进行加载

            if (!ConfigInfo.HasLoadMetaData)

                MetaData.Load(app.Request.PhysicalApplicationPath + ConfigurationManager.AppSettings["MetaDataPath"]);

//处理http请求

            if (HTTPUtils.HandleRequest(app.Context))

                app.CompleteRequest();

        }

}

 

    /// <summary>

    /// Http Handler 处理SAML请求

    /// </summary>

    public class SPDispatcherHandler:IHttpHandler,IRequiresSessionState

    {

        public bool IsReusable

        {

            get { return true; }

        }

 

        public void ProcessRequest(HttpContext context)

        {

            HTTPUtils.HandleRequest(context);

        }

    }

 

配置方式如下:

1. 在IIS应用程序中增加模块(Module),如图:

 

名称随便,类型为:处理类的完整名称(命名空间+类名)

2. 在IIS应用程序中增加HttpHandler,如图:

 

请求路径为:*/SAML/*

类型为:处理类的完整名称(命名空间+类名)

 

 

相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载