`

c#cas客户端安装笔记

 
阅读更多

1、官方下载.net 客户端dll

在工程中加载dll

webconfig中配置

<configSections>

        <sectionname="casClientConfig"type="DotNetCasClient.Configuration.CasClientConfiguration, DotNetCasClient"/>

    </configSections>

 

 

    <casClientConfig

        //cas服务端登录页面

        casServerLoginUrl="http://192.168.12.196/cas/login"

        //cas服务端验证

        casServerUrlPrefix="http://192.168.12.196/cas"

        //跳转的页面,只取到http://localhost:3273/

        serverName="http://localhost:3273/ExampleWebSite"

        notAuthorizedUrl="~/NotAuthorized.aspx"

        cookiesRequiredUrl="~/CookiesRequired.aspx"

        redirectAfterValidation="true"

        gateway="false"

        renew="false"

        singleSignOut="true"

        ticketTimeTolerance="5000"

        ticketValidatorName="Cas20"

        serviceTicketManager="CacheServiceTicketManager"

        gatewayStatusCookieName="CasGatewayStatus" />

    <system.web>

 

.net 自己的Forms认证这的配置也很重要,

<authenticationmode="Forms">

            <forms

                loginUrl="http://192.168.12.196/cas/login"

                timeout="30"

                defaultUrl="~/Default.aspx"

                cookieless="UseCookies"

                slidingExpiration="true"

           //发布到外网的话path="/"

           path="/ExampleWebSite/"

               />    

        </authentication>

    <authorization>

      <denyusers="?"/>

      <allowusers="*"/>

    </authorization

 

最后就是httpModel的配置了

<httpModules>

      <addname="DotNetCasClient"type="DotNetCasClient.CasAuthenticationModule,DotNetCasClient"/>

    </httpModules>

//跳回的地址=serverName+path+"跳转前的页面"

//跳回页面取数据方法

using DotNetCasClient;

public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        getUserInfo();
    }

    private void getUserInfo()
    {
        if (CasAuthentication.ServiceTicketManager != null)
        {
            HttpCookie ticketCookie = Request.Cookies[FormsAuthentication.FormsCookieName];

            if (ticketCookie != null)
            {
                FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(ticketCookie.Value);
                if (ticket != null)
                {
                    CasAuthenticationTicket casTicket = CasAuthentication.ServiceTicketManager.GetTicket(ticket.UserData);
                    if (casTicket != null)
                    {
                        TextBox1.Text = casTicket.NetId;
                        TextBox2.Text = casTicket.Assertion.PrincipalName;
                    }
                }
            }
           
        }
    }
}

 //单点退出

修改DotNetCasClient.cs页面

public static void SingleSignOut()
        {
            Initialize();

            HttpContext context = HttpContext.Current;
            HttpResponse response = context.Response;


            // Necessary for ASP.NET MVC Support.
            if (context.User.Identity.IsAuthenticated)
            {
                ClearAuthCookie();
                //update by songjg logout into login

                //注销页面

                //string singleSignOutRedirectUrl = UrlUtil.ConstructSingleSignOutRedirectUrl();

                //修改重定向到login页面

                string strLoginUrl = CasClientConfig.CasServerLoginUrl;
                // Leave endResponse as true.  This will throw a handled ThreadAbortException
                // but it is necessary to support SingleSignOut in ASP.NET MVC applications.
                response.Redirect(strLoginUrl, true);
                //update by songjg logout into login
            }
        }

生成新的动态库DotNetCasClient.dll

web.config

去掉重定向配置

notAuthorizedUrl="~/NotAuthorized.aspx" 改为

notAuthorizedUrl=""

不改会发生重定向退出事件

protected void LinkButton1_Click(object sender, EventArgs e)
    {
        Session.Clear();
        CasAuthentication.SingleSignOut();
     }

2、服务端的源码中AssemblyInfo.cs.tmpl文件去掉.tmpl 编译动态库工程。工程就能运行起来

 

另一种办法,不用重编译代码,只要修改相应文件就能满足退出到登录页面

配置PHP CLIENT6. 如何实现单点注销
       注销通过转到http://hostname:port/cas/logout时,注销成功后,转到成功提示页面。如果需要指定注销成功后的页面,有两点要做:

1、 打开tomcat6.0\cas\WEB-INF\cas-server.xml,找到下面代码:

 

       <bean id="logoutController" class="org.jasig.cas.web.LogoutController"

              p:centralAuthenticationService-ref="centralAuthenticationService"

              p:logoutView="casLogoutView"

              p:warnCookieGenerator-ref="warnCookieGenerator"

              p:ticketGrantingTicketCookieGenerator-ref="ticketGrantingTicketCookieGenerator"

/>

加入p:followServiceRedirects ="True"参数。

2、修改注销按钮的跳转页面:

http://hostname:port/cas/logout?service=http://what-you-want-to

http://hi.baidu.com/spanlessbug/item/1d5ff3cad25bf5d6964452b5

 

 

 

cas     response.spush() 有关  去掉这句cas就正常了。待验证?

分享到:
评论

相关推荐

    cas服务端和客户端可用代码

    这个压缩包提供的代码是直接可运行的,这意味着已经包含了必要的配置和依赖,开发者只需安装MySQL数据库,填充相关数据,然后启动服务端和客户端项目,即可测试SSO功能。 四、自定义配置 由于描述中提到“数据库是...

    基于MQTT协议的C#版客户端源码

    2. **C# MQTT客户端实现**:C#源码可能包括了MQTT客户端类,负责连接到Broker,订阅和发布消息。客户端可能包含连接管理、身份验证、心跳保持等功能。 3. **连接与断开**:源码中应该有建立和断开与MQTT Broker连接...

    C# Netty 客户端,服务器端包含接双向接收

    标题中的"C# Netty 客户端,服务器端包含双向接收"揭示了这是一个关于使用C#语言实现基于Netty框架的客户端和服务器端通信的项目。Netty是Java平台上的一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可...

    C#winfrom客户端浏览器

    本主题聚焦于“C# WinForm客户端浏览器”,这是一个基于C#编程语言和WinForms框架构建的内置浏览器功能。WinForms是.NET Framework的一部分,它为开发者提供了创建图形用户界面(GUI)的工具和控件。 `WebBrowser`...

    C#中客户端通过http协议访问服务端

    本文将深入探讨在C#中,客户端如何通过HTTP协议与服务端进行交互,以实现简单的计算任务,如计算1+1。 首先,我们需要理解HTTP(超文本传输协议)的基础。HTTP是一种应用层协议,用于在Web上交换各种类型的数据。它...

    C# TCP客户端源代码

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Net; using System.Net.Sockets;... }

    c#Socket客户端断线重连封装类(可直接调用).rar

    在这个场景中,`c#Socket客户端断线重连封装类(可直接调用).rar`提供的源代码文件`c#Socket客户端断线重连封装类(可直接调用).cs`显然是一个专门为C# WebSocket客户端设计的类,旨在处理网络连接的断开与重新...

    C#WebSocket客户端及服务端Demo源代码

    在C#中,可以使用.NET Framework或.NET Core来实现WebSocket客户端和服务端的开发。下面将详细介绍C# WebSocket客户端和服务端的实现,以及源代码中的关键知识点。 **一、WebSocket简介** WebSocket协议是HTML5定义...

    c#Socket客户端断线重连

    在C#中,Socket编程是网络通信的基础,用于实现客户端与服务器之间的数据传输。当遇到网络不稳定或服务器临时故障等情况时,客户端可能会突然断开连接。为了保证服务的连续性和可靠性,我们需要实现一个能自动断线重...

    C# WinForm客户端连接 WebSocket

    在本文中,我们将深入探讨如何使用C# WinForm应用程序实现WebSocket客户端,以便与WebSocket服务器进行实时数据通信。Visual Studio 2019是我们的开发环境,我们将利用其强大的功能来构建用户界面,并集成WebSocket...

    C#winfrom客户端自动更新升级 webservice

    本文将深入讲解如何使用C# WinFrom客户端结合WebService实现自动更新升级的功能。 首先,我们要理解C# WinFrom客户端。C#是一种面向对象的编程语言,广泛应用于Windows桌面应用开发,WinForm则是C#中的用户界面框架...

    C# Ftp客户端源码

    标题中的"C# Ftp客户端源码"指的是使用C#编程语言编写的FTP(File Transfer Protocol)客户端应用程序的源代码。FTP是一种网络协议,用于在互联网上进行文件传输。C#是微软开发的一种面向对象的编程语言,常用于构建...

    c#智能客户端源代码

    6. **ClickOnce部署**: 微软的ClickOnce部署技术使得C#智能客户端应用可以轻松地安装、更新和卸载。它减少了用户在安装和维护软件过程中的困扰。 7. **安全性**: 智能客户端需要考虑数据保护、身份验证和授权。.NET...

    C#简单客户端

    【C#简单客户端】是一个适合新手入门的编程项目,它主要展示了如何使用C#语言构建一个基础的客户端应用程序。在C#中,客户端通常指的是能够与服务器进行交互的应用,例如网络浏览器、桌面应用等。这个项目可能是为了...

    C# ftp客户端源代码

    本主题聚焦于"C# ftp客户端源代码",这是一个使用C#编写的网络应用程序,实现了FTP(File Transfer Protocol)协议,使得用户能够通过FTP进行文件的上传和下载。 FTP是一种基于TCP/IP协议族的应用层协议,它为...

    C# SOCKET 客户端 主机断开自动重连

    文档内有客户端和服务端socket,实际项目中只用到了客户端,会比较详细,支持断开重连

    基于C#的TFTP客户端

    【基于C#的TFTP客户端】是一个编程项目,利用C#语言在Visual Studio 2008环境下开发的。TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一种轻量级的网络协议,主要用于快速传输小文件或者在低带宽环境...

    MQTT客户端C#版

    **MQTT客户端C#版**是一种使用C#编程语言实现的MQTT协议客户端应用程序,它为开发者提供了一种简单易用的方式与MQTT服务器进行通信。MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅式消息传输...

    C#的Ftp服务端+客户端源码

    随着技术的不断进步,越来越多的开发者倾向于使用高级编程语言来实现FTP服务端和客户端的功能,而C#作为一种面向对象、类型安全的编程语言,因其强大的开发环境和丰富的类库,成为开发者实现网络通信和文件传输的...

    C#写的简洁邮件客户端

    11. **软件发布**:最终的邮件客户端可能会被打包成安装程序,通过ClickOnce或MSI技术分发,方便用户安装和升级。 通过以上知识点,我们可以看出这个C#邮件客户端项目不仅展示了C#编程的基本技能,还涵盖了网络通信...

Global site tag (gtag.js) - Google Analytics