导航:首页 > IDC知识 > cas服务器

cas服务器

发布时间:2020-08-07 12:03:22

1、cas单点登录怎么在服务器端获得用户信息

通过上述部署与配置,多个Web应用已经可以共用一个登录服务。但是,上述过程中作为CAS Client端的Web应用只取得了用户登录名称信息,而在实际应用中,Web应用往往需要获得登录用户更多的信息,例如会员等级、性别、住址等。要达到此目的,只需对Server端稍做修改即可实现。

1. 服务端配置及修改

假定上述存储用户信息的数据表userinfo中还包含一个名为address的用于存储用户地址的字段,而Web应用程序希望能够从CAS Server处获得当前登录用户的地址信息,则Server端需要按以下内容修改deployerConfigContext.xml。部分配置说明请参见注释。

<!--将原有attributeRepository配置注释 -->

<!--

<beanid="attributeRepository"

class="org.jasig.services.persondir.support.StubPersonAttributeDao">

<propertyname="backingMap">

<map>

<entrykey="uid" value="uid" />

<entrykey="ePersonAffiliation" value="ePersonAffiliation"/>

<entrykey="groupMembership" value="groupMembership" />

</map>

</property>

</bean>

-->

<!--新增attributeRepository配置(开始) -->

<bean class="org.jasig.services.persondir.support.jdbc."id="attributeRepository">

<!-- 指定使用的数据源,此处dataSource是已配置好的数据源 -->

<constructor-arg index="0"ref="dataSource"/>

<!-- 从数据库中查询信息的SQL语句,通常只需要修改表名即可 -->

<constructor-arg index="1" value="select * fromuserinfo where {0}"/>

<propertyname="queryAttributeMapping">

<map>

<!-- 上述查询的参数,将userName替换为表中表示用户名的字段名称 -->

<entrykey="username" value="userName"/>

</map>

</property>

<propertyname="resultAttributeMapping">

<map>

<!-- 需要返回给Web应用的其它信息,多个信息时可继续增加entry节点-->

<!--key值为数据表中的字段名称,value值为Client端取值时的名称标识-->

<entry key="address" value="address"/>

</map>

</property>

</bean>

<!--新增attributeRepository配置(结束) -->

<bean

id="serviceRegistryDao"

class="org.jasig.cas.services.">

<propertyname="registeredServices">

<list>

<beanclass="org.jasig.cas.services.RegexRegisteredService">

<propertyname="id" value="0" />

<propertyname="name" value="HTTP and IMAP" />

<propertyname="description" value="Allows HTTP(S) and IMAP(S)protocols" />

<propertyname="serviceId" value="^(https?|imaps?)://.*" />

<propertyname="evaluationOrder" value="10000001" />

<!--增加此项配置 -->

<property name="ignoreAttributes" value="true"/>

</bean>

… …

</list>

</property>

</bean>

CASServer要将额外的信息传递至Client端,还需要修改完成信息组装的文件WEB-INF/view/jsp/protocol/2.0/casServiceValidationSuccess.jsp。casServiceValidationSuccess.jsp负责组装包含用户信息的XML,因此修改部分是将需要传递的额外信息加入到它最终生成的XML文件之中。具体修改如下:

<cas:serviceResponsexmlns:cas='http://www.yale.e/tp/cas'>

<cas:authenticationSuccess> <cas:user>${fn:escapeXml(assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.id)}</cas:user>

<!-- 新增额外信息(开始) -->

<c:iftest="${fn:length(assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes)> 0}">

<cas:attributes>

<c:forEachvar="attr"items="${assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes}">

<!--注意此行的正确写法,网上资料基本都是错误的--> <cas:${fn:escapeXml(attr.key)}>${fn:escapeXml(attr.value)}</cas:${fn:escapeXml(attr.key)}>

</c:forEach>

</cas:attributes>

</c:if>

<!-- 新增额外信息(结束) -->

<c:if test="${not emptypgtIou}">

<cas:proxyGrantingTicket>${pgtIou}</cas:proxyGrantingTicket>

</c:if>

<c:if test="${fn:length(assertion.chainedAuthentications)> 1}">

<cas:proxies>

<c:forEachvar="proxy" items="${assertion.chainedAuthentications}"varStatus="loopStatus" begin="0"end="${fn:length(assertion.chainedAuthentications)-2}"step="1">

<cas:proxy>${fn:escapeXml(proxy.principal.id)}</cas:proxy>

</c:forEach>

</cas:proxies>

</c:if>

</cas:authenticationSuccess>

</cas:serviceResponse>

2. Java Client端取得更多用户信息

Java Client端不需要做任何修改就可以继续正常使用CAS服务,如果需要取得用户更多信息,可以通过AttributePrincipal对象取得Attribute列表(一个Map对象)后进行查询。

修改前述Java Client的示例代码,在最后追加取得address信息的代码,重启服务并重新访问页面,可以看到页面上显示了当前用户的address信息。
<%@pageimport="org.jasig.cas.client.authentication.AttributePrincipal" %>

<%@pageimport="org.jasig.cas.client.validation.Assertion" %>

<%@page import="java.util.*" %>

<%

String loginName1 = request.getRemoteUser();

%>

request.getRemoteUser(): <%=loginName1%><br/>

<%

AttributePrincipal principal = (AttributePrincipal)request.getUserPrincipal();

String loginName2 = principal.getName();

%>

request.getUserPrincipal().getName():<%=loginName2%><br/>

<%

Object object =request.getSession().getAttribute("_const_cas_assertion_");

Assertion assertion =(Assertion)object;

String loginName3 =assertion.getPrincipal().getName();

%>

request.getSession().getAttribute("_const_cas_assertion_").getPrincipal().getName():<%=loginName3%><br/>

2、cas单点登录服务器端跳转指定应用问题

按照我最近刚做过的demo,应该是先访问你工程的一个url,这时候cas服务器进行验证,如果之前登陆了,直接跳转,如果没登录,会跳转到cas服务器的登录页面,这时候它会自动保存你之前请求的url地址,你输入用户名密码验证成功之后自动跳过去,还需要单独设置么?

3、CAS单点登录怎样获得服务器IP地址

CAS 原理和协议 从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。图1 是 CAS 最基本的协...

4、如何获取cas应用中的服务器和客户端地址

 pter的updatecount方法,final ClientInfo clientInfo = ClientInfoHolder.getClientInfo();这行代码是获取客户端IP和服务端IP

5、cas的客户端与服务器是否就不能布置在两台机器上

完整的网络就麻烦了,你才有俩,还有其他部分才能连接得上。
先让俩机器连通,不知道你有域明访问还是IP,后者的话直接用,用名的话,把自己机器的hosts加入信息代替dns解析……

6、cas server 什么意思

CAS server
通票售票处;
[例句]The following figure demonstrates the authentication flow path of a system that has a CAS server integrated.
下图说明了在集成了CAS服务器的系统中身份验证是如何执行的。

7、CAS服务器验证成功返回到客户端时,还是返回到登录界面,不能返回到登录成功之后的界面?

下面是我的配置。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- CAS 相关配置文件-->
<!-- 单点登出,一定要在最前面 -->
<filter>
<filter-name>CAS Single Sign Out Filter</filter-name>
<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS Single Sign Out Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.jasig.cas.client.session.</listener-class>
</listener>
<!--单点登录 -->
<filter>
<filter-name>CAS Authentication Filter</filter-name>
<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
<!-- CAS login 服务地址-->
<init-param>
<param-name>casServerLoginUrl</param-name>
<param-value>https://andy:8443/cas/login</param-value>
</init-param>
<init-param>
<param-name>renew</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>gateway</param-name>
<param-value>false</param-value>
</init-param>
<!-- 客户端应用服务地址-->
<init-param>
<param-name>serverName</param-name>
<param-value>https://andy:8333</param-value>
</init-param>
</filter>

<!--负责Ticket校验-->
<filter>
<filter-name>CAS Validation Filter</filter-name>
<filter-class>org.jasig.cas.client.validation.</filter-class>
<init-param>
<param-name>casServerUrlPrefix</param-name>
<!-- 下面一定要是主机名称 -->
<param-value>https://andy:8443/cas</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>https://andy:8333</param-value>
</init-param>
<init-param>
<param-name>useSession</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>redirectAfterValidation</param-name>
<param-value>true</param-value>
</init-param>
</filter>

<filter>
<filter-name>CAS HttpServletRequest WrapperFilter</filter-name>
<filter-class>org.jasig.cas.client.util.</filter-class>
</filter>

<filter>
<filter-name>CAS Assertion Thread Local Filter</filter-name>
<filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>CAS Authentication Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<filter-mapping>
<filter-name>CAS Validation Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<filter-mapping>
<filter-name>CAS HttpServletRequest WrapperFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<filter-mapping>
<filter-name>CAS Assertion Thread Local Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- CAS 配置文件结束 -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

8、exchange邮件服务器 cas和hub mailbox 边缘服务器 都是什么?

这是搭建邮件系统的三个角色 ,或者说是这三个组成部分组成的exchange邮件系统,cas是客户端访问角色:客户端连接的时候就连接这个服务器角色。hub就是集线器访问角色,用来传输一些数据的。。mailbox是邮箱服务器,装载着收发的邮件,都在上面有残留的。

9、cas-server 用什么版本

首先确认证书文件已经拷贝到Tomcat的目录下,我们新建两个客户端的web应用,分别命名为Client1,Client2,在页面上稍作处理用于区分即可。 [注意] 我们使用两个Tomcat,一个模拟服务器,一个模拟客户端。如果哦使用同一个Tomcat请注意区分端口!

10、为什么的的CAS服务器用HTTP能访问用HTTPS就访问不了呢?

你应该把你https访问时候报的错贴出来。另外,你的keystoreFile的位置,建议放到配置文件同一目录下,写绝对路径能不能加载上,我不确定。另外就是要确定你在客户端导入的证书是否正确,是否导入到了使用的JVM下。有些机器上存在很多JVM的,导错位置很常见。还有,看一下你的客户端的配置文件,是否访问的https协议和8443端口。

与cas服务器相关的知识