单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
  单点登录原理:存储信任、验证信任 。
  CAS(Central Authentication Service )是 Yale  大学发起的一个企业级的、开源的项目,旨在为 Web  应用系统提供一种可靠的单点登录解决方法(属于 Web SSO)。本文针对CAS在项目中的部署做简单的介绍。

  CAS的配置过程分为服务端配置和客户端配置。

1.CAS服务端配置

  CAS的服务端可以看作是为单点登陆提供的统一验证服务中心。
配置CAS服务端所需环境:
配置方法: 

(1)解压cas-server-3.5.1-release压缩包,将解压后的文件中modules文件夹中的cas-server-webapp-3.5.1.war文件拷贝到环境变量中配置的%TOMCAT_HOME%\webapps文件夹下,并修改文件名为:cas.war。

(2)配置完成后,启动tomcat,浏览器输入 https://127.0.01:8080/cas,会看到如下界面:

(3)输入用户名admin和密码admin登录会出现如下界面:

  至此,说明服务端配置成功。
  对于浏览器中必须使用HTTPS的提示,可以不用理会。如果有证书可以配置在tomcat下,但不要尝试使用keytool生成,利用keytool生成的证书,客户端在调用时无法保证有效的链接。

2.CAS客户端搭建(在.NET项目中部署CAS)

  • 下载.NET CAS client (如果不需要修改源码,则不需要下载源码,直接在NuGet控制台添加引用即可。) 

     https://pan.baidu.com/s/1kPbCCHKMrTHZr5OKtzF1Yw

  • 在.NET项目中部署CAS

(1)创建一个ASP .NET MVC程序

(2)在NuGet控制台使用以下指令将DotNetCasClient添加到程序

PM> Install-Package DotNetCasClient
 
  也可以直接将DotNetCasClient源码附加到自己的解决方案中,方便调试。

(3)(很关键的步骤)配置web.config

  以下配置都是在configuration节点中,如果是直接使用NuGet指令添加的DLL引用,则会在web.config中自动添加所需节点,只需要将对应的信息改为自己需要的即可。

  configuration/configSections节点(通过指令添加DLL时,此处无需修改)

<configuration>
<configSections>
<!--定义casClientConfig-->
<section name="casClientConfig" type="DotNetCasClient.Configuration.CasClientConfiguration, DotNetCasClient" />
</configSections>
</configuration>

  configuration/casClientConfig节点(需要修改)

<configuration>
<!--配置casClientConfig-->
<casClientConfig
<!--将casServerLoginUrl修改为自己配置的CAS登录表单-->
casServerLoginUrl="http://localhost:8080/cas/login"
<!--将casServerUrlPrefix修改为自己配置的CAS服务器应用程序根-->
casServerUrlPrefix="http://localhost:8080/cas/"
<!--将serverName修改为自己配置的客户端应用程序的地址(即自己的程序的默认首页地址)-->
serverName="http://localhost:8082/"
notAuthorizedUrl="~/NotAuthorized.aspx"
cookiesRequiredUrl="~/CookiesRequired.aspx"
redirectAfterValidation="true"
gateway="false"
renew="false"
<!--singlesignout:单点登出-->
singleSignOut="true"
ticketTimeTolerance="5000"
<!--ticketvalidatorname:票验证器验证CAS票使用特定的协议名称,有效值是cas10 cas20 saml11...-->
ticketValidatorName="Cas20"
proxyTicketManager="CacheProxyTicketManager"
serviceTicketManager="CacheServiceTicketManager"
gatewayStatusCookieName="CasGatewayStatus" />
</configuration>

  configuration/system.web/authentication、configuration/system.web/httpModules节点(通过指令添加的DLL时,只需修改authentication节点)

<configuration>
<system.web>
<authentication mode="Forms">
<!--将loginUrl修改为自己配制的CAS登录表单-->
<forms name=".DotNetCasClientAuth" loginUrl="http://localhost:8080/cas/login" cookieless="UseCookies" />
</authentication>
<httpModules>
<add name="DotNetCasClient" type="DotNetCasClient.CasAuthenticationModule,DotNetCasClient" />
</httpModules>
</system.web>
</configuration>

  configuration/system.webServer/modules节点(通过指令添加DLL时,无需修改此处)

<configuration>
<system.webServer>
<系统注册与ASP.NET管道casauthenticationmodule网络部分表现在以下配置块。-->
<modules>
<remove name="DotNetCasClient" />
<add name="DotNetCasClient" type="DotNetCasClient.CasAuthenticationModule,DotNetCasClient" />
</modules>
</system.webServer>
</configuration>

(4)配置页面权限验证(很重要)

  配置完成之后要在首页控制器的对应动作上添加[Authorize]特性。

[Authorize]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}

(5)在VS中点击调试(可能要先将程序部署在IIS上),如果是未登陆的用户会自行跳转到CAS登陆界面。

(6)登陆成功之后,则会正常跳转。

(7)单点登出

  修改原来的退出登录方法, 退出后回到CAS登录页面。

[Authorize]
public ActionResult LogOut()
{
FormsAuthentication.SignOut();
return Redirect("http://localhost:8080/cas/logout");
}

(8)至此asp.net MVC客户端配置已经完成,之后启动应用和CAS服务端你会发现应用自动跳转到服务端的登录页面要求进行身份验证。

参考:

 
 
原文地址:https://www.cnblogs.com/imdeveloper/p/10513144.html
转载请注明出处,谢谢!

基于CAS在.NET中实现SSO单点登录的更多相关文章

  1. CAS FOR WINDOW ACTIVE DIRECTORY SSO单点登录

    一.CAS是什么? CAS(Central Authentication Service)是 Yale 大学发起的一个企业级的.开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方法(支持 ...

  2. SSO单点登录学习总结(3)—— 基于CAS实现单点登录实例

    第一: 本demo在一个机器上实现(三个虚拟主机),来看SSO单点登录实例(我们可以布到多个机器上使用都是同一个道理的),一个服务器主机,和两个客户端虚拟主机 [html] view plaincop ...

  3. 基于CAS实现SSO单点登录

    1. 概述 1.1. 什么是SSO? 单点登录( Single Sign-On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要 登录一 ...

  4. CAS实现SSO单点登录原理

    1.      CAS 简介 1.1.  What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨 ...

  5. CAS实现SSO单点登录原理(转)

    1.      CAS 简介 1.1.  What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨 ...

  6. 转 CAS实现SSO单点登录原理

    原文链接   http://m.blog.csdn.net/hxpjava1/article/details/74019017 CAS 简介 1. 1.1.  What is CAS ? CAS (  ...

  7. 一篇文章彻底弄懂CAS实现SSO单点登录原理

    1. CAS 简介 1.1. What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨在为 Web ...

  8. SSO单点登录学习总结(2)——基于Cookie+fliter单点登录实例

    1.使用Cookie解决单点登录 技术点: 1.设置Cookie的路径为setPath("/").即Tomcat的目录下都有效 2.设置Cookie的域setDomain(&quo ...

  9. CAS实现SSO单点登录

    环境 cas-server-4.1.8,cas-client-3.4.0,Java-8,Maven-3,Tomcat-7.0.72 CAS Server 安装 点此进入 CAS 下载列表,选择下载 c ...

随机推荐

  1. Python之路【第六篇】:Python迭代器、生成器、面向过程编程

    阅读目录 一.迭代器 1.迭代的概念 #迭代器即迭代的工具,那什么是迭代呢? #迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值 代码如下: while True: ...

  2. 分布式理论 之 CAP 定理

    -----------------------------------------------------入巷间吃汤面 笑看窗边飞雪. 目录: 什么是 CAP 定理 为什么只能 3 选 2 能不能解决 ...

  3. JavaSE:八种基本数据类型

    变量: 程序用来存储数据的一块内存空间,程序在运行过程中可以对其存储的数据进行改变,所以叫做变量 常量:相对于变量来说,其值是不可改变的 ​ 整数类型(byte short int long) ​ b ...

  4. 【ElasticSearch篇】--ElasticSearch从初识到安装和应用

    一.前述 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口,在企业中全文搜索时,特别常用. 二.常用概念 clu ...

  5. 6.Flask-WTForms

    Flask-WTF是简化了WTForms操作的一个第三方库.WTForms表单的两个主要功能是验证用户提交数据的合法性以及渲染模板.还有其它一些功能:CSRF保护, 文件上传等.安装方法:pip in ...

  6. 如何在ASP.NET Core程序启动时运行异步任务(2)

    原文:Running async tasks on app startup in ASP.NET Core (Part 2) 作者:Andrew Lock 译者:Lamond Lu 在我的上一篇博客中 ...

  7. 【Android Studio安装部署系列】十一、Android studio获取数字签名信息

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 下面介绍下调试版本和发布版本获取数字签名的方法,通过以下方法可以获取到SHA1和MD5. 一般在使用分享功能,在第三方平台中创建应用 ...

  8. 百度地图DEMO-路线导航,测距,标点

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  9. [特别公告]RDIFramework.NET微信公众号迁移通知

    亲爱的伙伴们: 非常感谢您们一直以来对RDIFramework.NET开发框架的关注和支持! 为了进一步完善各项功能,能给大家提供更专业.更官方准确的框架资讯,提供更优质的框架合作服务,我们的微信公众 ...

  10. Selenium的发展历史及原理

    目录 1. selenium1.0的产生 2. webdriver的产生 3. selenium和webdriver的合并 4. selenium3.0的产生 1. selenium1.0的产生 为什 ...