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,找到下面代码:
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就正常了。待验证?