文章目录:
cas 单点登录问题
服务端返回的是实体对象的属性值,对象还是要在客户端创建的。
可以修改cas的客户端代码 。下面的代码在验证成功后调用一个服务,然后将user实体对象放在session中
public class Cas10TicketValidationFilter extends org.jasig.cas.client.validation.Cas10TicketValidationFilter {
private String userMgrServiceEndpoint = "";
public static final String CONSTUSERINFO = "_const_cas_assertion_userinfo_";
@Override
protected void initInternal(final FilterConfig filterConfig) throws ServletException {
super.initInternal(filterConfig);
this.userMgrServiceEndpoint = getPropertyFromInitParams(filterConfig, "UserMgrServiceEndpoint", "");
}
@Override
protected void onSuccessfulValidation(final HttpServletRequest request, final HttpServletResponse response, final Assertion assertion) {
final HttpSession session = request.getSession(false);
final User user = session != null ? (UserServiceStub.User) session.getAttribute(CONSTUSERINFO) : null;
if (user == null) {
if (!"".equals(this.userMgrServiceEndpoint)) {
try {
UserServiceStub us = new UserServiceStub(this.userMgrServiceEndpoint);
String userid=assertion.getPrincipal().getName();
UserInfomationQuery uiq=new UserInfomationQuery();
uiq.setUserID(userid);
UserInfomationQueryResponse ur=us.userInfomationQuery(uiq);
User [] users=ur.get_return();
if(users.length!=0){
if(session!=null){
session.setAttribute(CONSTUSERINFO, users[0]);
}
}
} catch (Exception ex) {
}
}
}
}
}
Android 连接Cas服务器的实现单点登录(SSO)
如果我们的网站需要和另一个域名做统一认证,也就是在我们网站登录,但真正的功能却在另一个网站来提供。许多都以 passport 的方式。 整个认证可以分三步完成 第一步:本地验证
这个很简单,输入本地的用户名和密码,然后服务器认证通过,并返回正确的Cookie;
第二步:做远程认证,并返回远程连接
通过本地Cookie,确认用户合法性,然后服务器端调用远程的登录程序,返回一个远程认证号的URL,这个URL里面包含了一个唯一的认证码,使用Location的方式
第三步:远程登录
客户端使用前一步的URL,访问远程的服务器,服务器确认认证码的正确性,再返回正确的远程Cookie.
至此,本地认证,通过一个URL,实现了远程认证。
什么是cas单点登录?
CAS是一个单点登录框架,开始是由耶鲁大学的一个组织开发,后来归到apereo去管。 同时CAS也是开源,遵循着apache 2.0协议,代码目前是在github上管理。单点登录:Single Sign On,简称SSO,SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。cas单点登录目前国内玉符科技技术实力可以,可以考察,望采纳!
单点登录cas 中不需要自己写代码实现吗
CAS 原理和协议 从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作
.equals(this.userMgrServiceEndpoint)) { try { UserServiceStub us = new UserServiceStub(this.user