1 概述

数通畅联某综合SOA集成项目的统一身份认证工作,需要第三方系统配合进行单点登录的配置改造,在项目中有需要进行单点登录配置的.NET应用系统,本文专门记录.NET应用和AEAI CAS的集成过程步骤,为后续类似的统一认证配置实现提供参考指导。

2 预期读者

数通畅联新员工 

广大技术爱好者

3 环境信息

操作系统:Windows Server 2008

第三方系统.NET Framework 版本:V4.0

4 名词解释

AEAI CAS:是数通畅联基于开源Jasig CAS扩展开发提供的统一认证平台,经过多年的实践和积累,通过提供统一的认证服务、授权服务、集中管理用户信息;AEAI CAS统一身份认证平台功能包括:账号同步模块及接口、单点登录客户端配置、账号密码管理功能。AEAI CAS的功能架构如下图:

.Net: .NET是微软的新一代技术平台,为敏捷商务构建互联互通的应用系统,这些系统是基于标准的,联通的,适应变化的,稳定的和高性能的。从技术的角度,一个.NET应用是一个运行于.NET Framework之上的应用程序。如果一个应用程序跟.NET Framework无关,它就不能叫做.NET程序。比如,仅仅使用了XML并不就是.NET应用,仅仅使用SOAP SDK调用一个Web Service也不是.NET应用。.NET是基于Windows操作系统运行的操作平台,应用于互联网的分布式。

5 配置过程

5.1 添加动态链接库

在进行CAS认证配置前,需要先添加CAS 的客户端文件即相关的动态链接库.dll文件,放置于.NET应用的bin目录,如下图:

5.2 配置web.config

在修改web.config文件之前,先了解web.config文件中一些标签的含义。

5.2.1 web.config详解

Web.config 文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中。当你通过.NET新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认的Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。如果你想修改子目录的配置设置,你可以在该子目录下新建一个Web.config文件。它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。

1.web.config

是以XML文件规范存储,配置文件分为以下格式:

a)configSections 位于配置文件的顶部配置节处理程序声明;

b)appSetting 可以定义应用程序的全局常量设置等信息;

c)system.Web 控制Asp.net运行时的行为;

d)sectionGroup 可以自定义分组,可以放到内部或其它标记的内部;

2.配置节的每一节

a)configuration 根元素,其它节都是在它的内部.

b)appSetting 此节用于定义应用程序设置项。

对一些不确定设置,还可以让用户根据自己实际情况自己设置  例如:

c)compilation

d)customErrors

e)globalization

f)sessionState

g) authentication

3.重点节点

a)authentication

作用:配置 ASP.NET 身份验证支持(为Windows、Forms、PassPort、None四种)。该元素只能在计算机、站点或应用程序级别声明。

< authentication> 元素必需与 节配合使用。

示例:以下示例为基于窗体(Forms)的身份验证配置站点,当没有登陆的用户访问需要身份验证的网页,网页自动跳转到登陆网页。

b)authorization

作用:控制对 URL 资源的客户端访问(如允许匿名用户访问)。此元素可以在任何级别(计算机、站点、应用程序、子目录或页)上声明。必需与 节配合使用。 示例:以下示例禁止匿名用户的访问

c)sessionState

为当前应用程序配置会话状态设置(如设置是否启用会话状态,会话状态保存位置)。

5.2.2 CAS配置具体步骤

在web.config中添加CAS的相关配置信息 1.首先在configSections节下添加配置信息

2.然后在根节点configuration下添加

3.然后进行Forms的认证配置

4.然后在system.webServer下的modules节点下添加

5.最后在httpModules节下添加

5.2.3 相关问题及解决办法

问题一:配置后,经过单点登录的拦截遇到循环重定向问题 解决:

1.去掉authentication 下forms元素的path属性(无效)

2.sessionState属性配置调整(无效)

3.放入测试Default/Master页面等

4.deployContext.xml要添加allowedToProxy="true"属性,但是服务器仍然有问题。

问题原因:原来是认证过程中cas服务器端也要请求cas客户端,类似双向握手;把认证的地址改为配置的serverName改为外网地址,而不是localhost就可以了,因为如果是localhost,在正式服务器上的cas服务器端就找不到cas客户端了。 

问题二:登录系统时的URL后需要添加“/”才能进入,否则出现循环重定向的问题 解决:去掉path属性解决问题

5.3 C#获取认证用户

统一身份认证配置完毕后需要,需要在.NET的C#中获取登录用户名,可以采用如下方式来获取: string userName = HttpContext.Current.User.Identity.Name;

6 相关说明

6.1 参考链接 1

.web.config详解参考 http://www.cnblogs.com/doublemm/archive/2011/08/25/2153235.html

2.sessionState属性详解 http://www.cnblogs.com/xinhaijulan/archive/2010/08/21/1805116.html

6.2 附件说明

附件为配置所需动态链接库文件、完整的web.config样例文件以及样例工程用于参考,其中:DotNetCasClient是CAS的的C#工程,ExampleWebSite是样例工程,对应实际项目。

文档及附件下载

.NET应用和AEAI CAS集成详解的更多相关文章

  1. CAS (5) —— Nginx代理模式下浏览器访问CAS服务器配置详解

    CAS (5) -- Nginx代理模式下浏览器访问CAS服务器配置详解 tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 nginx版本: nginx-1.9.8 ...

  2. Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(四)

    当任何时候觉你得难受了,其实你的大脑是在进化,当任何时候你觉得轻松,其实都在使用以前的坏习惯. 通过前面的学习,你可能大致了解了Quartz,本篇博文为你打开学习SSMM+Quartz的旅程!欢迎上车 ...

  3. Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(转)

    通过前面的学习,你可能大致了解了Quartz,本篇博文为你打开学习SSMM+Quartz的旅程!欢迎上车,开始美好的旅程! 本篇是在SSM框架基础上进行的. 参考文章: 1.Quartz学习——Qua ...

  4. (转) Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(四)

    http://blog.csdn.net/u010648555/article/details/60767633 当任何时候觉你得难受了,其实你的大脑是在进化,当任何时候你觉得轻松,其实都在使用以前的 ...

  5. 无锁的同步策略——CAS操作详解

    目录 1. 从乐观锁和悲观锁谈起 2. CAS详解 2.1 CAS指令 2.3 Java中的CAS指令 2.4 CAS结合失败重试机制进行并发控制 3. CAS操作的优势和劣势 3.1 CAS相比独占 ...

  6. calico集成详解

    一.摘要 ======================================================================================= 包括三项: c ...

  7. SpringMVC + Spring 3.2.14 + Hibernate 3.6.10 集成详解

    注:此文档只说明简单的框架集成,各个框架的高级特性未涉及,刚刚接触框架的新人可能需要参考其他资料. PS:本次练习所用jar包都能在此下载到:http://pan.baidu.com/s/1sjmgd ...

  8. S2SH框架集成详解(Struts 2.3.16 + Spring 3.2.6 + Hibernate 3.6.10)

    近期集成了一次较新版本的s2sh,出现了不少问题,网上资料也是良莠不齐,有的甚至就是扯淡,简单的把jar包扔进去就以为是集成成功了,在这里整理一下详细的步骤,若哪位有什么不同看法,可以留言,欢迎批评改 ...

  9. Quartz学习——Spring和Quartz集成详解(三)

    Spring是一个很优秀的框架,它无缝的集成了Quartz,简单方便的让企业级应用更好的使用Quartz进行任务的调度.下面就对Spring集成Quartz进行简单的介绍和示例讲解!和上一节 Quar ...

随机推荐

  1. Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作

    一.Memcached ClientLib For .Net 首先,不得不说,许多语言都实现了连接Memcached的客户端,其中以Perl.PHP为主. 仅仅memcached网站上列出的语言就有: ...

  2. python开发环境搭建

    虽然网上有很多python开发环境搭建的文章,不过重复造轮子还是要的,记录一下过程,方便自己以后配置,也方便正在学习中的同事配置他们的环境. 1.准备好安装包 1)上python官网下载python运 ...

  3. 如何定位Oracle数据库被锁阻塞会话的根源

    首先再次明确下,数据库因为要同时保证数据的并发性和一致性,所以操作有锁等待是正常的. 只有那些长时间没有提交或回滚的事物,阻塞了其他业务正常操作,才是需要去定位处理的. 1.单实例环境 2.RAC环境 ...

  4. nodejs操作arduino入门(javascript操作底层硬件)

    用Javascript来操作硬件早就不是一件稀奇的事情了. 所以作为一名电子专业出身的FE,我也打算尝试一下用js来驱动arduino: 要想操作这些底层硬件,肯定是需要一些工具的,我这里介绍的工具主 ...

  5. python学习笔记(python介绍)

    为什么要学python? python和shell的比较,和PHP.和JAVA比较 运维开发只是用到python的很小一部分 python在一些知名公司的应用: 谷歌:python的创始人原来在谷歌工 ...

  6. jquery学习(一)

    简单的jquery学习,首先在页面引入jquery <!-- 引入jquery --> <script src="js/jquery-1.8.3.js" type ...

  7. OpenDigg前端开源项目周报1219

    由OpenDigg 出品的前端开源项目周报第二期来啦.我们的前端开源周报集合了OpenDigg一周来新收录的优质的前端开发方面的开源项目,方便前端开发人员便捷的找到自己需要的项目工具等.react-f ...

  8. Git 学习看这篇就够了!

    Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. 可能新手会问"git和github有什么关系啊?" git是一个版本控制工具: githu ...

  9. MySQL 优化之 ICP (index condition pushdown:索引条件下推)

    ICP技术是在MySQL5.6中引入的一种索引优化技术.它能减少在使用 二级索引 过滤where条件时的回表次数 和 减少MySQL server层和引擎层的交互次数.在索引组织表中,使用二级索引进行 ...

  10. 使用HEXO快速建站

    先安好npm,请参照:http://max.cszi.com/archives/482 打开网站:https://hexo.io/   npm install hexo-cli -g hexo ini ...