cas讨论

提交时间: Jun 19, 2006 11:38:06 PM 引用 回复 发消息


cyt 21:27:27
什么叫给定一个特定的用户名和密码?

188231055 21:27:45
SSO服务器上的用户名密码怎么验证啊?在SSO服务器上维护一个数据库吗?

188231055 21:28:13
那输入的时候输入的是A.B.C.D各系统的任意一个用户密码吗?

cyt 21:28:32
随便你用什么都行啦。SSO是一个框架,中间很多技术你都可以用。不一定要数据库

cyt 21:28:56
ABCDE都有自己的用户密码,那还叫单点登录吗?

188231055 21:29:49
比如多想登陆A系统.(通过A系统连接过去的),可是我去输入的B系统维护的用户密码.因为我有可能在A系统上叫张三.在B系统上叫ZS,在C系统上叫ZHANGSAN,那就会有问题啊.

188231055 21:30:14
.要他们各系统的用户密码统一就没意义了吧

cyt 21:30:29
单点登录就是所有的系统都只用一个用户名和密码

cyt 21:31:09
所有系统都有自己的用户,但是密码验证统一做

cyt 21:31:42
windows nt的域就是单点登录的一个例子

johnhz 21:43:21
谈和容易(188231055) 21:29:49
比如多想登陆A系统.(通过A系统连接过去的),可是我去输入的B系统维护的用户密码.因为我有可能在A系统上叫张三.在B系统上叫ZS,在C系统上叫ZHANGSAN,那就会有问题啊.
CAS 的SSO在用户认证成功后会在SESSION提供登陆的ID,而对应各个系统ABCD中可以直接认这个ID,而不需要去验证相应的密码..而你的系统以为用户名和密码都不对应...那么这样就无法做到.也许你可以考虑建立一个中间数据库,存放各个系统的用户信息...不过也达不到SSO的要求..所以SSO的前提需要你的各个系统的登陆用户ID 是相同的情况下才可以..

johnhz 21:48:09
不过CAS中可以定义多个AuthenticationHandler,用户登陆时只要匹配其中一个就算验证成功...现在想想可能作用不大..因为如果不同的用户ID在各个系统中可能对应用户不同....
原来是想,现有系统是统一的用户,如果将来接入其他系统进入CAS的SSO服务中,只需要增加一个AuthenticationHandler来匹配新系统的用户信息....但是这样的用户只能在新的接入系统中做SSO,而与旧系统没有任何衔接关系........

david.turing 21:52:08
老师教我们,SSO跟认证不要扯上太复杂的关系,SSO就是解决谁tell Webapp应用"当前用户是谁"这个问题。
首要重点是由谁去tell,结果是CASServer
其次,在怎么去tell的问题, CAS跟Kerberos存在很大的不同,CAS不会使用加密技术去保护每一个tgc而KDC会(KDC is one kind of sso server)

david.turing 21:53:18
en,johnhz,TGT失效其实是一件好事情,它不失效你就害怕了,Kerberos好像是10个小时

johnhz 21:54:33
CAS不会使用加密技术去保护每一个tgc而KDC会(KDC is one kind of sso server)

这个不太理解...CAS没有使用加密的技术,是不是表示如果抓包的话可以获取到用户的信息或则TGT? 但是CAS认证过程中是通过SSL的,抓到包也是乱码..我看过你关于KRB的分析..如果CAS遇到KRB中那个HACKER,那是否有被盗取的危险呢?

david.turing 21:56:24
回到刚才,CAS不会使用加密技术去保护每一个tgc,因此CAS协议假定你必须使用SSL它才能发送TGC Cookies,而Kerberos协议会用对称加密协议,其实应该先读读Kerberos协议。
我写了一片文章,比较简要地讲述了一下Kerberos流程,里面以cyt师傅/ytam师傅作为角色来描述:)

david.turing 21:57:13
还有,谁能获得TGC,谁就能彻底攻击CAS协议,因此,SSL是CAS唯一保障

johnhz 21:57:25
david.turing 21:53:18
en,johnhz,TGT失效其实是一件好事情,它不失效你就害怕了,Kerberos好像是10个小时
这个应该是指用户没有关闭当前应用的情况下,比如没有关闭打开的WEB..但是我在CAS测试时,如果在认证通过的页面TARGET=_BLANK 新开一个页面,那新开的页面也认为通过了CAS的认证...那么如果我关闭了新开的页面是否代表 关闭了应用呢

david.turing 21:58:13
johnhz, cas有logoff

johnhz 21:58:34
david.turing 21:57:13
还有,谁能获得TGC,谁就能彻底攻击CAS协议,因此,SSL是CAS唯一保障

SSL的保证还不够吗?CAS不是还有一个KEYTOOL产生的证书.做客户端和服务端的认证?

david.turing 21:58:55
johnhz, ssl够了

johnhz 21:59:15
david.turing 21:58:13
johnhz, cas有logoff

用户如果不通过正常LOGOFF方式呢?


david.turing 21:59:21
cas早期被人笑话,就是你提出的那个问题

david.turing 21:59:34
不正常就有问题


johnhz 21:59:48
david.turing 21:58:55
johnhz, ssl够了

那我是不是可以这么认为,CAS的安全机制应该可以和KRB相比了

david.turing 22:00:17
那时从通俗的角度来理解,针对你和我来是够了

johnhz 22:02:01
david.turing 21:59:34
不正常就有问题

这个问题是不是会产生 服务端没有释放这个直接关闭用户的认证信息,那么这个关闭页面的用户打开新页面 重新登陆的话,CAS是如何处理? 删除原来旧的认证信息,还是继续保留新建一个认证信息?

david.turing 22:02:04
johnhz,正常来说,你不能阻止我sniffer你的ticket,但Kerberos能

david.turing 22:02:22
service ticket没有被加密

david.turing 22:02:45
也不可能被加密,但在KRB,no so

johnhz 22:03:10
david.turing 22:02:04
johnhz,正常来说,你不能阻止我sniffer你的ticket,但Kerberos能
可是有TICKET..还不够吧...HACKER还可以获取用户登陆ID,但CAS的TGT 他应该如何获取呢

david.turing 22:04:23
hacker如果没法攻击SSL,则他无法获取CAS的tgc,所以是secure的

johnhz 22:04:35
david.turing() 22:02:45
也不可能被加密,但在KRB,no so

我想问个题外话,我们现在用各大银行的网上银行,它采用的是什么样的机制呢? 有CA证书,SSL,还有其他什么吗?

david.turing 22:05:08
网上银行用SET,我没碰过阿,你问群里那些再银行混得人拉

johnhz 22:05:54
david.turing 22:04:23
hacker如果没法攻击SSL,则他无法获取CAS的tgc,所以是secure的

在现在的条件下,HACKER没有办法破解SSL,那么其实如果在SSL的机制下的应用还是属于比较安全的?

david.turing 22:06:41
right,我认为全SSL是安全的

johnhz 22:06:42
david.turing接触的SSO的项目都是用KRB来实现吗?

david.turing 22:07:01
CAS阿,Kerberos是基于域的多

johnhz 22:07:19
david.turing 22:06:41
right,我认为全SSL是安全的

呵呵~很严谨的说话~:D 只是"我"认为~:)

johnhz 22:08:42
david.turing 22:07:01
CAS阿,Kerberos是基于域的多

那你在使用CAS的是去扩展AuthenticationHandler使用KRB的机制吗?
Kerberos是基于域,这个主要实现在什么类型的系统呢?

/*********************************************************/

谈和容易 22:14:08
遇到一个怪问题.我想跟踪Client事件过程.结果就会出错.不跟踪就不会出错.真郁闷了.
谈和容易 22:14:31
2006-6-19 20:27:31 edu.yale.its.tp.cas.client.CASReceipt getReceipt
严重: edu.yale.its.tp.cas.client.CASAuthenticationException: Unable to validate ProxyTicketValidator [[edu.yale.its.tp.cas.client.ProxyTicketValidator proxyList=[null] [edu.yale.its.tp.cas.client.ServiceTicketValidator casValidateUrl=[https://afei:9443/cas/proxyValidate] ticket=[ST-6-4CSfotczRdHu5qAC121qCTerwpxidYHPco9-20] service=[http%3A%2F%2Fafei%3A5050%2Fsso3%2Findex.jsp] renew=false]]]
2006-6-19 20:27:31 edu.yale.its.tp.cas.client.filter.CASFilter doFilter

johnhz 22:14:34
谈和容易(188231055) 22:14:08
遇到一个怪问题.我想跟踪Client事件过程.结果就会出错.不跟踪就不会出错.真郁闷了.
呵呵~不应该这么提问题,,要把主要的DD写出来...

johnhz 22:15:03
[[edu.yale.its.tp.cas.client.ProxyTicketValidator proxyList=[null]

这里就说明了一个问题了~

谈和容易 22:15:22
可是为什么不跟踪就会一致通过呢?

johnhz 22:16:03
那就要看你怎么跟踪的~而且刚才上面也说了CAS是通过SSL的机制,如果能跟踪到..那=+=

david.turing 22:16:24
不懂

谈和容易 22:17:23
public static String retrieve(String url) throws IOException {
if (log.isTraceEnabled()){
log.trace("entering retrieve(" + url + ")");
}
BufferedReader r = null;
try {
URL u = new URL(url);
if (!u.getProtocol().equals("https")){
// IOException may not be the best exception we could throw here
// since the problem is with the URL argument we were passed, not
// IO. -awp9
log.error("retrieve(" + url + ") on an illegal URL since protocol was not https.");
throw new IOException("only 'https' URLs are valid for this method");
}

URLConnection uc = u.openConnection();
uc.setRequestProperty("Connection", "close");
r = new BufferedReader(new InputStreamReader(uc.getInputStream()));//到这里的时候uc.getInputStream()就出错误,保守的估计是URL不对.可是看了是对的.
/*********************************************************/

johnhz 22:17:28
johnhz(4633012) 22:06:25
david.turing() 22:07:01
CAS阿,Kerberos是基于域的多

那你在使用CAS的是去扩展AuthenticationHandler使用KRB的机制吗?就是你原来有提过写自己的loginmodel

Kerberos是基于域,这个主要实现在什么类型的系统呢


谈和容易 22:21:12
johnhz(4633012) 21:43:21
CAS 的SSO在用户认证成功后会在SESSION提供登陆的ID,而对应各个系统ABCD中可以直接认这个ID,而不需要去验证相应的密码..而你的系统以为用户名和密码都不对应...那么这样就无法做到.也许你可以考虑建立一个中间数据库,存放各个系统的用户信息...不过也达不到SSO的要求..所以SSO的前提需要你的各个系统的登陆用户ID 是相同的情况下才可以..

各个系统登陆用户ID相同各个系统如何维护?

david.turing 22:21:42
johnhz, 这个问大哈最合适,我只是自己试验性地玩域SSO,他们是真正做项目的

谈和容易 22:22:33
要知道谦虚并不是一件好事的.

david.turing 22:22:43
KDC的LoginModule我还只是在Weblogic配置过一下,无非是KDC IP/算法等等

johnhz 22:22:52
各个系统登陆用户ID相同各个系统如何维护?

在各个系统写个LOGINBEAN..只要获取用户ID,然后在再做各自系统内部的业务逻辑上的判断..等于去除原来各系统验证密码这块的方法

谈和容易 22:23:36
我是说我在A系统管理模块改了我的密码,B系统还得写个东西去同步吗?


david.turing 22:24:05
我们这些做SSO的人一定要学会聪明些,千万别做分布式用户,尽可能要你的客户做用户数据大集中

david.turing 22:24:15
这样才是SSO

johnhz 22:24:16
谈和容易(188231055) 22:23:36
我是说我在A系统管理模块改了我的密码,B系统还得写个东西去同步吗?
很简单..你在认证服务端是怎么取用户名和PASS的?

david.turing 22:24:36
没有A,B之分,全部都在A

david.turing 22:25:37
如果区分A, B等系统,死人的

谈和容易 22:26:06
晕..哎..我又想多了

david.turing 22:26:50
SSO的根本目的就是用户集中,SSO的银弹

johnhz 22:26:51
david.turing() 22:24:05
我们这些做SSO的人一定要学会聪明些,千万别做分布式用户,尽可能要你的客户做用户数据大集中
呵呵~我现在部署的SSO仅仅只是一个BANK内部CALLCENTER系统..而且还不定采用..主要我自己对CAS不是很熟,而国内相关的专业文档都很少...上次去CAS的MAILLIST发个问题....发现英文不行的一塌糊涂=+=....

david.turing 22:28:06
恩,如果用户数据来自某个地方,写一个loginmodule业务所谓

谈和容易 22:29:24
我这样想的.各系统维护各系统的的用户数据表.在SSO Server上弄一个表来维护用户,为用户提供一个特定的名称方式,做映射什么的都行.验证的时候只验证这个,但是问题是用户想改密码就不行了.
这样的话,我觉得好处有.SSO 服务器当了的时候.各系统将不通过SSO.直接进入系统本来的登陆页面.用它自己原来的号就行.当然这样它有可能长时间不用会忘记.也不是个好办法.

david.turing 22:29:53
当时,我的客户希望支持AD+Ora+Foxpro等旧用户数据,我第一反应是不干那么多

david.turing 22:30:26
映射这个问题当时也想过,但是同步始终不能让人放心

johnhz 22:30:33
johnhz(4633012) 21:45:53
不过CAS中可以定义多个AuthenticationHandler,用户登陆时只要匹配其中一个就算验证成功

david.turing觉的CAS的这个功能有什么样的实用性呢?

david.turing 22:31:07
CAS很好啊,够轻便

johnhz 22:31:45
谈和容易(188231055) 22:29:24
我这样想的.各系统维护各系统的的用户数据表.在SSO Server上弄一个表来维护用户,为用户提供一个特定的名称方式,做映射什么的都行.验证的时候只验证这个,但是问题是用户想改密码就不行了.

这个在实际操作会很复杂=+=,个人认为比SSO本身还复杂..

david.turing 22:32:19
同意同意!

johnhz 22:32:32
不过CAS中可以定义多个AuthenticationHandler,用户登陆时只要匹配其中一个就算验证成功
david.turing觉的CAS的这个功能有什么样的实用性呢?
david.turing() 22:31:07
CAS很好啊,够轻便

NONO,我是在指在CAS SERVER上部署多个AuthenticationHandler即LOGINMODEL...有什么实际的用处呢?

johnhz 22:32:48

johnhz(4633012) 21:45:53
不过CAS中可以定义多个AuthenticationHandler,用户登陆时只要匹配其中一个就算验证成功...现在想想可能作用不大..因为如果不同的用户ID在各个系统中可能对应用户不同....
原来是想,现有系统是统一的用户,如果将来接入其他系统进入CAS的SSO服务中,只需要增加一个AuthenticationHandler来匹配新系统的用户信息....但是这样的用户只能在新的接入系统中做SSO,而与旧系统没有任何衔接关系........

这是我上面想到的问题

/*********************************************************/
谈和容易 22:34:30
不过存在安全性问题.一个丢了.全部丢了.
johnhz 22:35:01
谈和容易(188231055) 22:34:30
不过存在安全性问题.一个丢了.全部丢了.
你可以保留原来系统的登陆口~~~:)
谈和容易 22:35:38
当我知道你登陆SSO的用户密码后.我只要登陆一次.其它的就完全在我的掌握了.我说的是这个全部丢了.
谈和容易 22:35:53
我是说在其它系统中的工作什么的都被别人看到了
勇敢的笨笨 22:35:59
都用数字证书来登陆啊。

johnhz 22:36:50
谈和容易(188231055) 22:35:38
当我知道你登陆SSO的用户密码后.我只要登陆一次.其它的就完全在我的掌握了.我说的是这个全部丢了.
谈和容易(188231055) 22:35:53
我是说在其它系统中的工作什么的都被别人看到了

呵呵~这个用户端的问题~那就没有办法咯~~如果用户要把PASS告诉别人~~那么..呵呵~SSO无法提过这个保证~
谈和容易 22:37:18
哈哈..
/*********************************************************/


谈和容易 22:38:34
还有问题呢.
<filter-mapping>
<filter-name>CASFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
它是过滤目录级别的.或者后缀类型的.
johnhz 22:38:43
都可以~
johnhz 22:38:52
你可以/MENU/
johnhz 22:39:01
也可以/*.JSP OR /*.ASP
谈和容易 22:40:18
现在是我们本来的系统上http://localhost/oa/welcome.jsp,secondPage.jsp,oa/framework/fm.jsp这些在平时访问都不要登陆就行了的.
谈和容易 22:40:53
也许其它的(在同一个文件夹中)的就要登陆后才能访问.它如何过滤?
谈和容易 22:41:52
好吧..又是我问的问题方式严重了吧.sorry先.
johnhz 22:41:57
这个偶就不知道了~不知道
<filter-name>CASFilter</filter-name>
<url-pattern>/*</url-pattern>
这里有没有<unurl-patten/>这样的参数...
所以我才想求CAS的配置说明问题
johnhz 22:43:35
谈和容易可以考虑加入CAS的maillist,在上面提问很快就有会有答复你的~~
谈和容易 22:43:37
CAS Client升级到3.0后.配置灵活多了.不过就是会出错误.虽然不影响


遗留问题:
a.
johnhz 21:52:07
大家谁有CAS SERVER端一些参数配置的文档吗?比如WEB.XML里定义的TGT失效的时间之类的?

b.
CAS CLIENT端的FILTER配置,是否可以提供对某些URL不UN-FILTER呢? 如果可以,应该如何配置?
<filter-mapping>
<filter-name>CASFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
现在是我们本来的系统上http://localhost/oa/welcome.jsp,secondPage.jsp,oa/framework/fm.jsp这些在平时访问都不要登陆就行了的.


建议学习CAS的兄弟们去加入CAS的maillist,在上面可以提供一些快捷有效的解决方法.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值