单点登录(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. AI2(App Inventor 2)离线版服务器单机版

    注意:每次退出前导出自己的项目到本地做备份. 单机版特点: 1.同步官方最新版本,没有对java源代码进行修改,仅修改war\login.jsp及\war\WEB-INF\appengine-web. ...

  2. 在线修改redo日志大小

    注意点:1.redo要是能sesize的话就完美了2.drop时候如果active就得checkpoint才能drop3.物理删除旧redo文件redo大小影响切换,进而影响性能,至于什么样的业务设置 ...

  3. SqlServer 递归查询

    --查询部门及下属部门列表 WITH TEMP --递归 AS (SELECT Id, Code, Name, ParentId FROM [dbo].[AspSysDepartments] --查询 ...

  4. pandas 对数据帧DataFrame中数据的增删、补全及转换操作

    1.创建数据帧 import pandas as pd df = pd.DataFrame([[1, 'A', '3%' ], [2, 'B'], [3, 'C', '5%']], index=['r ...

  5. 解决 React-Native mac 运行报错 error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. To debug build logs further, consider building your app with Xcode.app, by ope

    React-Native 开发的项目,Android 方面没有任何问题,IOS 就是无法跑起来,报错信息如下: mac 10.14.4 xcode 10.2.1 error Failed to bui ...

  6. Python编程从入门到实践笔记——类

    Python编程从入门到实践笔记——类 #coding=gbk #Python编程从入门到实践笔记——类 #9.1创建和使用类 #1.创建Dog类 class Dog():#类名首字母大写 " ...

  7. 简单介绍shell编程四剑客之awk

    概要:分别的作用 grep:文本过滤(模式:pattern)工具,grep,egrep,fgrep,擅长过滤. sed:stream editor 文本编辑工具:(流编辑器),擅长取行.替换. awk ...

  8. SpringCloud系列——SSO 单点登录

    前言 作为分布式项目,单点登录是必不可少的,文本基于之前的的博客(猛戳:SpringCloud系列——Zuul 动态路由,SpringBoot系列——Redis)记录Zuul配合Redis实现一个简单 ...

  9. .NET(C#、VB)移动开发——Smobiler平台控件介绍:TextTabBar控件

    TextTabBar控件 一.          样式一 我们要实现上图中的效果,需要如下的操作: 从工具栏上的“Smobiler Components”拖动一个TextTabBar控件到窗体界面上 ...

  10. Java开发笔记(八十三)利用注解技术检查空指针

    注解属于比较高级的Java开发技术,前面介绍的内置注解专用于编译器检查代码,另外一些注解则由各大框架定义与调用,像Web开发常见的Spring框架.Mybatis框架,Android开发常见的Butt ...