`
jacally
  • 浏览: 777165 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

CAS 单点登录安装笔记4 -- asp.net client端的设置

    博客分类:
  • JAVA
阅读更多
CAS 单点登录安装笔记4
--- asp.net client端的设置

1、首先修改web.Config文件,加入以下设置:
<authentication mode="Forms" >
  <forms name="casauth" loginUrl="login.aspx" />
</authentication>
<authorization>
  <deny users="?" />
</authorization>

本人对.net不是很熟悉,感觉这里的配置类似java web应用程序中的过滤器,当用户访问web页时首先跳转到login.aspx页面进行验证。

2、加入以下c#代码到login.aspx页面的加载事件中:
    //CAS 身份验证 服务器地址
    private const string CASHOST = "https://sso.gzps.net:8443/cas/";

    protected void Page_Load(object sender, EventArgs e)
    {
        System.Net.ServicePointManager.CertificatePolicy = new MyPolicy();

        // Look for the "ticket=" after the "?" in the URL
          string tkt = Request.QueryString["ticket"];

          // This page is the CAS service=, but discard any query string residue
          string service = Request.Url.GetLeftPart(UriPartial.Path);

          // First time through there is no ticket=, so redirect to CAS login
          if (tkt == null || tkt.Length == 0)
          {
            string redir = CASHOST + "login?" +
              "service=" + service;
            Response.Redirect(redir);
            return;
          }

          // Second time (back from CAS) there is a ticket= to validate
          string validateurl = CASHOST + "serviceValidate?" +
            "ticket=" + tkt + "&"+
            "service=" + service;
          StreamReader Reader = new StreamReader( new WebClient().OpenRead(validateurl));
          string resp = Reader.ReadToEnd();
          // I like to have the text in memory for debugging rather than parsing the stream

          // Some boilerplate to set up the parse.
          NameTable nt = new NameTable();
          XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
          XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None);
          XmlTextReader reader = new XmlTextReader(resp, XmlNodeType.Element, context);

          string netid = null;

          // A very dumb use of XML. Just scan for the "user". If it isn't there, its an error.
          while (reader.Read())
          {
            if (reader.IsStartElement()) {
              string tag = reader.LocalName;
              if (tag=="user")
                netid = reader.ReadString();
            }
          }
          // if you want to parse the proxy chain, just add the logic above
          reader.Close();
          // If there was a problem, leave the message on the screen. Otherwise, return to original page.
          if (netid == null)
          {
            Label1.Text = "CAS returned to this application, but then refused to validate your identity.";
          }
          else
          {
              Session["UserName"] = netid;
            Label1.Text = "Welcome " + netid;
            FormsAuthentication.RedirectFromLoginPage(netid, false); // set netid in ASP.NET blocks
          }

    }
}


以上代码参照了ja-sig网站的解决方案:http://www.ja-sig.org/wiki/display/CASC/ASP.NET+Forms+Authentication

3、以为这样就可以了,运行时可以跳到sso服务器进行验证,但跳转以后报以下错误:
" System.Net.WebException。 基础连接已关闭。 无法建立与远程服务器信任关系 "。
应该与CAS Server端安装了数字证书,而.net Client端并没有安装相应的证书有关。
可以通过配置IIS服务器,支持HTTPS SSL协议实现安全数据交换中介绍的步骤导入CAS 服务端的数字证书,或者通过http://support.microsoft.com/kb/823177/上介绍的解决方案进行处理:
实现类
using System.Net;
using System.Security.Cryptography.X509Certificates;

public class MyPolicy : ICertificatePolicy {
    public bool CheckValidationResult(
          ServicePoint srvPoint
        , X509Certificate certificate
        , WebRequest request
        , int certificateProblem) {

        //Return True to force the certificate to be accepted.
        return true;

    } // end CheckValidationResult
} // class MyPolicy


客户端代码中包含下列代码:
   System.Net.ServicePointManager.CertificatePolicy = new MyPolicy();


所有代码见附件WebSite.rar,将其部署到你的IIS服务器就可以了。
关于IIS服务器的设置见asp.net一夜速成教程
  • WebSite.rar (4 KB)
  • 描述: asp.net 与cas结合的实例程序
  • 下载次数: 1122
7
1
分享到:
评论
3 楼 chenrongtao2132 2012-06-21  
melody404 写道
请教博主一个问题
登录成功以后为什么老是显示default.aspx
代码里好像也没有看到在哪设置了这个
请问可以换成其他的吗?多谢了哈

2 楼 melody404 2009-03-04  
请教博主一个问题
登录成功以后为什么老是显示default.aspx
代码里好像也没有看到在哪设置了这个
请问可以换成其他的吗?多谢了哈
1 楼 xutianle 2009-02-17  
谢谢,正需要这个!!!!!!!!

相关推荐

    CAS 单点登录安装笔记3 -- 与acegi集成

    **CAS 单点登录系统与 Acegi 集成详解** 单点登录(Single Sign-On,简称 SSO)是一种在多个应用系统中实现用户只需一次登录就能访问所有系统的身份验证方式。CAS(Central Authentication Service)是Java开发的一...

    cas .net单点登录

    在.NET环境中,我们可以通过实现CAS客户端来实现单点登录功能。本示例将详细介绍如何在.NET项目中集成CAS单点登录。 首先,我们需要理解单点登录的概念。单点登录允许用户在一个系统中登录后,可以无须再次认证即可...

    .net cas单点登录

    .NET CAS(Central Authentication Service,中央认证服务)是Java平台上的一个开源身份验证框架,但同样可以与.NET环境集成,实现跨域的单点登录(Single Sign-On,简称SSO)。在.NET环境中,开发者通常会利用CAS...

    CAS单点登录CAS4.0.0+.Net Client

    综上所述,CAS 4.0.0+.Net Client是.NET应用程序实现单点登录的重要组件,它通过与CAS服务器的交互确保用户身份的安全验证,并处理Cookie以维护用户的登录状态。正确理解和使用这个客户端可以帮助提升应用程序的安全...

    单点登录服务端项目cas-server

    单点登录服务端项目cas-server单点登录服务端项目cas-server 单点登录服务端项目cas-server 单点登录服务端项目cas-server 单点登录服务端项目cas-server 单点登录服务端项目cas-server 单点登录服务端项目cas-...

    CAS + .net Client 实现 SSO部署说明.rar

    SSO(Single Sign-On)单点登录是一种身份验证机制,允许用户在一次登录后访问多个应用系统,无需为每个系统分别进行登录。本部署说明主要围绕CAS(Central Authentication Service)服务器与.NET客户端如何协同实现...

    spring boot整合CAS Client实现单点登陆验证的示例

    Spring Boot 整合 CAS Client 实现单点登录验证的示例 Spring Boot 整合 CAS Client 是一种流行的解决方案,用于实现单点登录(Single Sign-On,简称 SSO)。在多个应用系统中,用户只需要登录一次就可以访问所有...

    CAS 单点登录.NET版-vs2013

    本项目"CAS单点登录.NET版-vs2013"就是针对.NET平台,使用C#语言在Visual Studio 2013环境下实现的CAS客户端。 单点登录(SSO)是一种网络认证机制,用户只需登录一次就可以访问多个相互信任的应用系统,而无需再次...

    cas-server-3.5.1和cas-client-3.2.1

    CAS(Central Authentication Service)是一种广泛使用的开放源代码的单点登录(Single Sign-On,简称SSO)系统,它允许用户通过一个认证入口访问多个应用系统,而无需在每个系统上分别进行登录。在这个压缩包中,...

    cas-client-core-3.3.3

    CAS(Central Authentication Service)是一种基于Web的单点登录(Single Sign-On, ...通过理解并正确配置`cas-client-core-3.3.3`,你可以轻松地将你的应用程序与CAS服务器集成,从而提供安全、便捷的单点登录体验。

    CAS单点登录的.Net开源客户端Apereo .NET.zip

    Apereo .NET CAS client提供了.Net 集成到...outRich support for Microsoft ASP.NET platform integration through Forms Authentication framework开源地址:https://github.com/apereo/dotnet-cas-client中文介绍:...

    .net-casSSO-client.rar

    .NET CAS SSO客户端是一款专为.NET开发者设计的身份验证解决方案,它允许用户通过中央认证服务(Central Authentication Service,简称CAS)实现单点登录(Single Sign-On,简称SSO)。CAS是一种开放源码的Web身份...

    cas-server-webapp-4.0.0单点登录(带超详细文档、数据连接jar包、c3p0)可运行

    单点登录 sso cas带超详细文档,包含(cas-server-webapp-4.0.0.war、c3p0-0.9.1.2.jar、cas-client-core-3.3.3.jar、cas-server-support-jdbc-4.0.0.jar、cas-server-webapp-support-4.0.0.jar、commons-logging-...

    cas-client3.5单点登录官方客户端程序demo

    在这个"cas-client3.5单点登录官方客户端程序demo"中,我们可以深入理解如何在Java环境中集成CAS客户端来实现单点登录功能。 首先,CAS客户端3.5是为Java应用程序设计的,它允许这些应用与CAS服务器进行通信,验证...

    单点登录sso-shiro-cas-maven

    spring下使用shiro+cas配置单点登录,多个系统之间的访问,每次只需要登录一次 ## 系统模块说明 1. cas: 单点登录模块,这里直接拿的是cas的项目改了点样式而已 2. doc: 文档目录,里面有数据库生成语句,采用的...

Global site tag (gtag.js) - Google Analytics