`
javafan_303
  • 浏览: 957120 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
提交时间: 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,在上面可以提供一些快捷有效的解决方法.


分享到:
评论

相关推荐

    cas 官方提供的例子改造

    【标签】"cas 单点登录"进一步明确了讨论的焦点,即如何使用CAS来实现单点登录功能。在SSO系统中,CAS扮演着中心验证服务的角色,负责验证用户的身份。当用户首次登录到CAS服务器并通过验证后,他们可以在无需再次...

    cas-client扩展拦截器支持excludes

    标签“cas filter 拦截器扩展 exclude”进一步明确了讨论的主题。"exclude"表示排除,意味着开发者可以通过配置来指定一些URL路径不经过CAS的拦截器,这样这些特定的路径就可以不受认证机制的约束,例如,静态资源、...

    自定义客户端登录CAS服务器-iframe实现

    标签“源码”和“工具”暗示我们将讨论具体的编程代码和可能使用的辅助工具。在实现这个功能时,开发者可能需要了解以下几点: 1. CAS协议理解:首先,你需要熟悉CAS的工作流程,包括票证(Ticket)的概念,如服务...

    CASCASCASCASCASCASCASCAS

    【标签】:“cas”标签进一步确认了讨论的主题是关于CAS认证服务。 【压缩包子文件的文件名称列表】:在提供的压缩文件中,有两个目录名,“META-INF”和“edu”。 - "META-INF"是Java存档(JAR)文件的标准部分,...

    cas

    它可能讨论了如何将CAS集成到现有的开发工具链中,或者提到了一些辅助工具,如CAS客户端库,这些库可以帮助开发者在他们的应用中实现与CAS的交互。 压缩包子文件的文件名“credential”可能指的是凭证(credentials...

    shiro整合cas3.5

    在本文中,我们将讨论如何将 Apache Shiro 与 CAS 3.5 版本进行整合,以实现统一的登录认证。 整合 Shiro 和 CAS 的主要目标是利用 CAS 的身份验证服务,避免在每个应用中重复实现登录逻辑。以下是一个简化的整合...

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

    在这个案例中,我们讨论的是CAS 4.0.0版本的.NET客户端实现,用于.NET应用程序的登录验证和Cookie检查。 单点登录(SSO)允许用户在一个应用系统中登录后,无需再次认证即可访问其他相互信任的应用系统。在CAS框架...

    cas-overlay-template-5.3.zip,可以集成springboot,亲测可用。

    下面我们将详细讨论如何理解和利用这些资源。 首先,`cas-overlay-template-5.3`是一个CAS服务器的"overlay"模板。在CAS术语中,"overlay"指的是一个基本CAS发行版的定制层,它允许开发人员通过修改或添加配置、...

    cas-server-3.4.3.1-release.zip

    标签 "cas-server" 明确了讨论的主题,即CAS服务器,这是一个基于Java开发的Web应用程序,旨在提供安全的身份验证服务。CAS支持多种协议,如CAS Protocol、SAML、OAuth、OpenID Connect等,使得它可以与其他各种系统...

    cas4.1最新版

    通过Google搜索"CAS SSO",你可以找到更多关于CAS单点登录系统的资料,包括详细的文档、示例代码、用户案例和社区讨论,帮助你深入理解和使用这个强大的身份认证解决方案。同时,下载的"cas-4.1.2"压缩包应该包含了...

    Apache cas-server 单点登录

    接下来,我们来讨论如何使用Druid数据源。Druid是一个强大的数据库连接池,它提供了监控、扩展性以及更好的性能。在Apache CAS中集成Druid,可以使数据源管理更加灵活和可定制化。要实现这一点,你需要做以下步骤: ...

    src for cas-4.0.0.rar

    标签 "cas" 明确了讨论的主题,即 CAS 身份验证服务。CAS 是一个基于 Java 的协议,它允许用户通过单一登录(Single Sign-On, SSO)在多个应用之间无缝切换,而无需重复输入认证信息。它支持多种协议,如 CAS、SAML...

    cas 6.0.0-rc3

    10. **社区支持**:CAS拥有活跃的社区,用户可以在其中寻求帮助、讨论问题并贡献代码,确保项目的持续发展。 在"cas-6.0.0-RC3"压缩包中,包含了源码、配置文件、文档和其他资源,便于开发者部署、配置和调试CAS...

    acegi安全策略与CAS整合

    最后,文档会讨论如何维护已整合的系统,以及如何随着AceGI和CAS的新版本进行升级。 这个整合过程需要对AceGI、CAS、Spring以及Web应用安全有深入理解。通过遵循文档的指导,开发者可以有效地实现安全策略的整合,...

    Yale CAS最佳实践.rar

    3. **Web服务器**:CAS支持多种Web服务器,如Apache Tomcat,这里我们重点讨论Tomcat。 ### 二、在JDK上配置SSL 为了实现安全的HTTPS通信,需要在JDK中配置SSL。步骤如下: 1. **生成密钥对**:使用`keytool`命令...

    cas server 4.2.7 环境搭建maven

    在本场景中,我们将讨论如何使用Maven构建工具搭建CAS Server 4.2.7的环境,并集成Spring Security进行更高级的安全管理。 首先,`cas-server-4.2.7`版本是一个稳定且广泛使用的版本,提供了丰富的功能和安全特性。...

    CAS入门测试

    CAS(Central Authentication Service)是Java开发的一个开源身份验证框架,其主要目的是提供单一登录(Single Sign-On, SSO)服务...在学习过程中,阅读CAS的官方文档、参考示例代码以及参与社区讨论都是非常有益的。

    cas-server4.0

    【标签】"cas server 4.0" 标签明确了讨论的主题,即CAS Server的4.0版本,这是一个重要的版本更新,可能包含了性能优化、新功能的添加和旧问题的修复。 【文件详解】: 1. **INSTALL.txt**:这是安装指南,通常会...

    cas-5.1zip文件

    CAS(Central Authentication Service)是一个开放源码的单点登录(Single Sign-On,SSO)系统,主要用于网络应用的统一身份验证。...此外,参与社区讨论和阅读相关教程,将有助于你更好地掌握CAS的使用和开发技巧。

Global site tag (gtag.js) - Google Analytics