cas_presentation

Posted on

cas_presentation

A detailed walk through a CAS authentication (and how to get your mits on the authenticated user) ● Welcome! First of all, what is CAS? ● ● Web single sign on Uses “federated” authentication, where all authentication is done by the CAS server, instead of individual application servers The implementation is an open source protocol, open source Java server, and several open source clients Purdue runs a CAS server, configured to authenticate with Purdue Career Account (https://www.purdue.edu/apps/account/cas) As of 4/5/2011, 349 application servers are authorized to check CAS tickets More can be found at: – – ● ● ● ● ● http://www.jasig.org/cas https://www.purdue.edu/apps/account/docs/CAS/CAS_information.jsp Purdue University Identity and Access Management 1 4/7/2011 A detailed walk through a CAS authentication (and how to get your mits on the authenticated user) ● There are three machines in this game ● a) Browser b) Application server – ● Configured with a CAS client to require authentication for certain urls Serves CAS login web page and authenticates users Issues TGT cookie (ticket granting ticket) so user does not have to login every redirect to CAS server Redirects back to application server with ticket=ST-xxx service ticket in url for CAS client to check Validates CAS service tickets for application servers ● c) CAS server (http://www.jasig.org/cas) – – – – 4/7/2011 Purdue University Identity and Access Management 2 A detailed walk through a CAS authentication (and how to get your mits on the authenticated user) Browser 1) initial request 2) redirect to CAS login page with service=url_back_to_sampleapp_page sampleapp CAS server 3) request CAS login page 4) html for CAS login page 5) POST login and password 6) set CASTGC cookie and redirect to sampleapp with ticket=ST-xxx 7) back to initial request, with ticket=ST-xxx (the service ticket) 10) sampleapp responds with application page 9)ticket validation response 8) validate ST-xxx service ticket 4/7/2011 Purdue University Identity and Access Management 3 A detailed walk through a CAS authentication (and how to get your mits on the authenticated user) ● Step 1 – initial request ● “sampleapp” application server is configured with a CAS client to require authentication for certain urls (in this example /test) User with browser accesses /test on sampleapp If browser does not already have session on sampleapp, sampleapp transfers control to the CAS client If the CAS client does not see a ticket parameter in the request, user is redirected back to the CAS login page with service=url_to_return_to, in this example http://localhost:8080/sampleapp/test ● ● ● 4/7/2011 Purdue University Identity and Access Management 4 A detailed walk through a CAS authentication (and how to get your mits on the authenticated user) ● Step 2 – redirect to CAS login page ● User is redirected back to CAS server for authentication Application server (sampleapp) logs ● 2011­03­29 09:16:46,843 DEBUG [org.jasig.cas.client.authentication.AuthenticationFilter] ­ 2011­03­29 09:16:46,843 DEBUG [org.jasig.cas.client.authentication.AuthenticationFilter] ­ 2011­03­29 09:16:46,844 DEBUG [org.jasig.cas.client.authentication.AuthenticationFilter] ­ application server access log: 0:0:0:0:0:0:0:1 ­ ­ [29/Mar/2011:09:16:46 ­0400] "GET /sampleapp/test/ HTTP/1.1" 302 ­ 4/7/2011 Purdue University Identity and Access Management 5 A detailed walk through a CAS authentication (and how to get your mits on the authenticated user) ● Step 3 – browser requests CAS login page ● CAS server checks for its CASTGC cookie (ticket granting ticket), if it's there, user is already authenticated via CAS, skip to step 6 and redirect back to sampleapp with a service ticket If no CASTGC is present, serve browser the CAS login page CAS server access log: ● ● 0:0:0:0:0:0:0:1 ­ ­ [29/Mar/2011:09:16:47 ­0400] "GET /cas­server­uber­webapp­ 3.4.6/login?service=http%3A%2F%2Flocalhost%3A8080%2Fsampleapp%2Ftest%2F HTTP/1.1" 200 6935 4/7/2011 Purdue University Identity and Access Management 6 A detailed walk through a CAS authentication (and how to get your mits on the authenticated user) ● Step 4 – CAS server sends login page to browser ● This is nice because application servers do not need to – – – maintain their own login page maintain login/password credentials to do the actual authentication even see the password, it's between the browser and CAS server 4/7/2011 Purdue University Identity and Access Management 7 A detailed walk through a CAS authentication (and how to get your mits on the authenticated user) ● Step 5 – browser POSTs login/password to CAS server ● CAS server checks login and password, if authentication fails serve another login page to browser Too many unsuccessful authentication attempts in a short period of time will result in a “lockout”, where authentication will always fail for a 15 minute lockout period CAS server access log: ● ● 0:0:0:0:0:0:0:1 ­ ­ [29/Mar/2011:09:16:52 ­0400] "POST /cas­server­uber­webapp­ 3.4.6/login?service=http%3A%2F%2Flocalhost%3A8080%2Fsampleapp%2Ftest%2F HTTP/1.1" 302 ­ 4/7/2011 Purdue University Identity and Access Management 8 A detailed walk through a CAS authentication (and how to get your mits on the authenticated user) ● Step 6 – CAS server redirects back to application server ● A ticket granting ticket TGT-xxx is stored on the CAS server, and set as a CASTGC cookie A service ticket is issued for the application (http://localhost:8080/sampleapp/test/) and sent as a parameter back to the application server ● 2011­03­29 09:16:52,208 DEBUG [org.jasig.cas.web.support.CookieRetrievingCookieGenerator] ­ 2011­03­29 09:16:52,214 DEBUG [org.jasig.cas.ticket.registry.DefaultTicketRegistry] ­ 2011­03­29 09:16:52,214 INFO [org.jasig.cas.CentralAuthenticationServiceImpl] ­ 4/7/2011 Purdue University Identity and Access Management 9 A detailed walk through a CAS authentication (and how to get your mits on the authenticated user) ● Step 7 – browser re-requests url from application server, with a CAS service ticket ● Application server still has not yet established a session, so CAS client takes control CAS client sees a ticket parameter in the url, that can be checked with the CAS server CAS service ticket is only valid one time, and the CAS client needs to use it within 90 seconds or it will expire ● ● 4/7/2011 Purdue University Identity and Access Management 10 A detailed walk through a CAS authentication (and how to get your mits on the authenticated user) ● Step 8 – application server checks CAS service ticket sent by browser in url ● CAS client preparing to check service ticket: 2011­03­29 09:16:52,231 DEBUG [org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter] ­ 2011­03­29 09:16:52,232 DEBUG [org.jasig.cas.client.validation.Cas20ServiceTicketValidator] ­ ● CAS server access log: 127.0.0.1 ­ ­ [29/Mar/2011:09:16:52 ­0400] "GET /cas­server­uber­webapp­ 3.4.6/serviceValidate?ticket=ST­1­bdgbwHIReBonmaudvxJl­cas&service=http%3A%2F %2Flocalhost%3A8080%2Fsampleapp%2Ftest%2F HTTP/1.1" 200 281 4/7/2011 Purdue University Identity and Access Management 11 A detailed walk through a CAS authentication (and how to get your mits on the authenticated user) ● Step 9 – CAS server responds to ticket check ● CAS server response (notice the NEW attributes!): 2011­03­29 09:16:52,327 DEBUG [org.jasig.cas.client.validation.Cas20ServiceTicketValidator] ­ jott jott@purdue.edu 0,3592,2000 Ott Jeffrey A Jeffrey A Ott 0012345678 > ● You can test this now yourself against the new CAS server version 3.4.6 (which will become production in May 2011): https://www.purdue.edu/apps/account/cas­server­uber­webapp­3.4.6/login https://www.purdue.edu/apps/account/cas­server­uber­webapp­3.4.6/serviceValidate 4/7/2011 Purdue University Identity and Access Management 12 A detailed walk through a CAS authentication (and how to get your mits on the authenticated user) ● Step 10 – application server sends requested page ● Some CAS clients (including the Java CAS client) can be configured to redirect the browser to the same url, but without the ticket parameter Application server access log: ● 0:0:0:0:0:0:0:1 ­ ­ [29/Mar/2011:09:16:52 ­0400] "GET /sampleapp/test/?ticket=ST­1­ bdgbwHIReBonmaudvxJl­cas HTTP/1.1" 302 ­ 0:0:0:0:0:0:0:1 ­ ­ [29/Mar/2011:09:16:52 ­0400] "GET /sampleapp/test/ HTTP/1.1" 200 202 4/7/2011 Purdue University Identity and Access Management 13 A detailed walk through a CAS authentication (and how to get your mits on the authenticated user) ● Java CAS client ● https://wiki.jasig.org/display/CASC/CAS+Client+for+Java+3.1 Previous example used version 3.1.10 Looking at one CAS client will help understand how any of them will need configured Next two slides show the web.xml to configure the Java CAS client for the previous example: ● ● ● 4/7/2011 Purdue University Identity and Access Management 14 A detailed walk through a CAS authentication

CAS Authentication Filter org.jasig.cas.client.authentication.AuthenticationFilter casServerLoginUrl https://www.purdue.edu/apps/account/cas­server­uber­webapp­3.4.6/login serverName http://localhost:8080 CAS Validation Filter org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter casServerUrlPrefix https://www.purdue.edu/apps/account/cas­server­uber­webapp­3.4.6 serverName http://localhost:8080 redirectAfterValidation true exceptionOnValidationFailure false 4/7/2011 Purdue University Identity and Access Management 15 (and how to get your mits on the authenticated user) A detailed walk through a CAS authentication (and how to get your mits on the authenticated user) ● Continued web.xml for Java CAS client configuration:

CAS HttpServletRequest Wrapper Filter org.jasig.cas.client.util.HttpServletRequestWrapperFilter CAS Authentication Filter /test// CAS Validation Filter /test// CAS HttpServletRequest Wrapper Filter /test//* 4/7/2011 Purdue University Identity and Access Management 16 A detailed walk through a CAS authentication (and how to get your mits on the authenticated user) ● CAS is not just for web applications ● Browsers hold CAS state with a cookie (called CASTGC that holds a CAS ticket granting ticket – TGT), but any client, such as a mobile app, can obtain and store a TGT See https://wiki.jasig.org/display/CASUM/RESTful+API Example: ● ● POST a username and password to https://CAS_SERVER_URL/v1/tickets (with “Accept: text/plain” as a header) And if the login/password check out, the server sends back 201 Created Location: https://CAS_SERVER_URL/v1/tickets/{TGT id} If authentication fails, the server returns back a 400 code 4/7/2011 Purdue University Identity and Access Management 17 A detailed walk through a CAS authentication (and how to get your mits on the authenticated user) ● Initiatives for later this year: ● Ability to use Boilerkey for CAS authentication: – If Boilerkey is used, CAS server will expose an extra attribute returned by the ticket check that indicates that the authentication was a Boilerkey authentication https://www.purdue.edu/apps/account/IAMO/Purdue_CareerAccount_BoilerKey.jsp ● Separate mobile app CAS login page Application server administrators will be able to manage CAS ticket check server lists via web page Check for more at: – ● ● https://www.purdue.edu/apps/account/docs/CAS/CAS_information.jsp 4/7/2011 Purdue University Identity and Access Management 18 A detailed walk through a CAS authentication (and how to get your mits on the authenticated user) ● Thanks for your attention! Questions? Purdue Identity and Access Management can be reached at accounts@purdue.edu Please fill out an evaluation at http://www.itap.purdue.edu/boilerweb/survey ● ● ● 4/7/2011 Purdue University Identity and Access Management 19

Gateway Jasig Community

Posted on

Gateway Jasig Community

Skip to Content

Home

  • uPortal logo
  • CAS logo
  • Bedework logo
  • 2-3-98 logo
  • Portlets logo
  • uMobile logo
  • Jasig Incubator logo

Search this site:

CAS

Join the Discussion

Share/Save

Home » Projects » CAS » Client integration » Gateway

Gateway

This page documents the Gateway feature of the CAS protocol and the protocol-implementing CAS Server.

What is the Gateway feature?

CAS Server includes a feature whereby you can set the request parameter "gateway" to "true" on the request for CAS login. If "gateway" is "true", then CAS will not paint the user login screen. If it can accomplish authentication by single sign on - that is, by detecting the CAS ticket granting cookie - then it will redirect to the URL specified by the "service" parameter with a valid service ticket. If it cannot accomplish single sign on, then it will redirect to the "service" URL without painting any login screen.

This allows your application to detect and take advantage of user single sign on without bothering the user with a login screen in the case where he or she is not yet logged on. This is useful for main pages and is probably a "best practice", since it allows the user to learn about the service to which he might authenticate before being abruptly presented with the CAS login screen out of context.

What is required of a CAS Client to support this feature?

A gateway-supporting CAS client should:

  1. provide a mechanism for the application developer/deployer/htaccess writer to elect the gateway behavior
  2. when gateway is elected:

  3. set the request parameter "gateway" to be "true" on the CAS login request

  4. provide a way to indentify the request when it is redirected back from CAS as one that has already been gatewayed (e.g., a special parameter on the URL-encoded "service", setting a cookie, using already-present session support from your environment, etc.)
  5. receive requests redirected back from CAS. These may have the "ticket" parameter set, in which case validate the ticket, etc. If gatewaying failed to pick up a single sign on session, the request will be for the URL specified as the "service" parameter "bare" - the "ticket" parameter will not be set, and CAS does not set any other parameter to indicate that it had gatewayed. The client needs to recognize the request as having already come through gateway. The client should not redirect already-gatewayed requests back to CAS for more gatewaying, because this will lead to an infinite loop of redirecting back and forth between server and client.

CAS is authentication, not authorization. The standard use case for CAS is that the client application wants to consume the authenticated username. Under gateway, when there is no authenticated username because we came back from CAS ticketless, the client should do something like returning "null" when the client application asks for the authenticated username, or fail to set the remote user header, or put null into the session where the application expected to lookup the authenticated user, etc., as applicable to the CAS client implementation.

In the case where one is using CAS for authorization (probably a bad idea in the first place) - users able to authenticate are authorized to access the resource, and users unable to authenticate are not authorized - then GATEWAY should not be used. © 2009 Jasig. All rights reserved. | Design and hosting by WebChuck Web.

CAS 返回多个信息为空

Posted on

CAS 返回多个信息为空 - - ITeye技术网站

首页 资讯 精华 论坛 问答 博客 专栏 群组 更多 ▼

招聘 搜索

您还未登录 ! 登录 注册

liuzhiyi7288

CAS 返回多个信息为空 **

CAS client 端使用Filter 获得server端传回的信息,如果多个信息使用: Java代码 收藏代码

  1. assertion.getPrincipal().getAttributes()
    assertion.getPrincipal().getAttributes()来获得一个Map,但是有的时候Map中没有数据为null; 解决方案:配置deployerConfigContext.xml中名称为serviceRegistryDao的bean,如下 Java代码 收藏代码

  2. <bean class="org.jasig.cas.services.RegisteredServiceImpl"
  3. p:id="1"
  4. p:description="test"
  5. p:serviceId="http://192.168.104.101:8080//*"
  6. p:enabled="true"
  7. p:ssoEnabled="true"
  8. p:anonymousAccess="false">

  9. ,其中最重要的配置为: 这个属性决定了我们在client端获得map是否为null,如果不配置该属性则为null,该属性配置我们返回多个信息对应的key; 此处对应CAS SERVER端源码如下 CentralAuthenticationServiceImpl.java: Java代码 收藏代码

  10. // 获得deployerConfigContext.xml中serviceRegistryDao配置的registeredServices

  11. final RegisteredService registeredService = this.servicesManager
  12. .findServiceBy(service);
    // 获得deployerConfigContext.xml中serviceRegistryDao配置的registeredServices final RegisteredService registeredService = this.servicesManager .findServiceBy(service); allowwedAttributes配置对应的代码如下: Java代码 收藏代码

  13. ///

  14. /* 从principal.getAttributes()获得map后,获取registeredService的allowedAttributes属性,
  15. /* 可以对应的key存入返回客户端信息的中map中
  16. /*/
  17. for (final String attribute : registeredService
  18. .getAllowedAttributes()) {
  19. final Object value = principal.getAttributes().get(
  20. attribute);
  21. if (value != null) {
  22. attributes.put(attribute, value);
  23. }
  24. }
  25. final Principal modifiedPrincipal = new SimplePrincipal(
  26. principalId, attributes);
  27. final MutableAuthentication mutableAuthentication = new MutableAuthentication(
  28. modifiedPrincipal);
    /// / 从principal.getAttributes()获得map后,获取registeredService的allowedAttributes属性, / 可以对应的key存入返回客户端信息的中map中 /*/ for (final String attribute : registeredService .getAllowedAttributes()) { final Object value = principal.getAttributes().get( attribute); if (value != null) { attributes.put(attribute, value); } } final Principal modifiedPrincipal = new SimplePrincipal( principalId, attributes); final MutableAuthentication mutableAuthentication = new MutableAuthentication( modifiedPrincipal);; 希望对大家有所帮助 分享到:

CAS client 端添加初始化参数传到server端 | CAS 集成java 登录成功后空白页面

评论

1 楼 solomon 2011-10-31

不错,雪中送炭。 

发表评论

您还没有登录,请您登录后再发表评论

liuzhiyi7288的博客

liuzhiyi7288

mzmingly的博客

mzmingly

hasker的博客

hasker ninisui的博客

ninisui

dawnstars的博客

dawnstars

文章分类

存档分类

最新评论

CAS配置第二步:服务器端的配置

Posted on

CAS配置第二步:服务器端的配置 - RIA之路 - ITeye技术网站

首页 资讯 精华 论坛 问答 博客 专栏 群组 更多 ▼

招聘 搜索

您还未登录 ! 登录 注册

RIA之路

CAS配置第二步:服务器端的配置 **

博客分类:

紧接上一篇CAS配置第一步:准备工作 CAS Java 群35271653 1:加入数据库验证 再将cas.war部署到tomcat-cas-server下之后, 将oracle数据库驱动加入到cas工程的lib下 打开目录X:\tomcat-cas-server\webapps\cas\WEB-INF下的deployerConfigContext.xml修改里面的内容,注释掉以下代码: Xml代码 收藏代码

  1. <bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler"
    <bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" 这段代码CAS默认的验证方式,就是用户名和密码相同即可通过认证,我们现在做的时候加入数据库验证,就是用户名密码来自数据库。 在相同的位置上加入如下代码: Xml代码 收藏代码


  2. 其中,sql语句可以自定义成你想要的结果,例如: Sql代码 收藏代码

  3. select password from tablename where username=?
    select password from tablename where username=? 然后在根节点下加入节点如下: Xml代码 收藏代码

  4. <bean id="dataSource"

  5. class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  6. oracle.jdbc.driver.OracleDriver
  7. jdbc:oracle:thin:@xxxxxxxxxxxxx:1521:pisdb
  8. pis
  9. pis

  10. oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@xxxxxxxxxxxxx:1521:pisdb pis pis 里面的参数配置,XML诠释的非常清楚,不再解释。 2:让CAS返回更多用户信息XML修改 然后找到serviceRegistryDao这个节点,将里面的内容全部注释掉: Xml代码 收藏代码

  11. <!--
  12. -->

  13. 此节点的作用为:如果你在中加入了bean,并设定了serviceId的value,那么通过CAS你只能访问这个url地址,其他的url地址将不能访问,//代表的意思就是指该协议下所有的都允许被访问。但是在实际操作中,加入如果不注释掉里面的内容,将会在客户端无法获取到用户更多的登录信息。 然后在配置文件的根节点()下加入以下XML配置: Xml代码 收藏代码


  14. 其中的sql语句可以根据自己的情况来写。下面resultAttributeMapping中的参数解释如下: key代表的是你数据库中的字段,Value是客户端通过 AttributePrincipal获取时的参数 3:CAS登录获取更多用户信息的JSP修改 仅仅是修改xml是不够的,你必须修改他的casServiceValidationSuccess.jsp,路径为: X:\tomcat-cas-server\webapps\cas\WEB-INF\view\jsp\protocol\2.0 在其中紧接着加入以下代码: Xml代码 收藏代码

  15. ${fn:escapeXml(attr.value)}

  16. ${fn:escapeXml(attr.value)} 注意: 1.在casServiceValidationSuccess.jsp中加入我们的代码的时候 Xml代码 收藏代码

  17. ${fn:escapeXml(attr.value)}
    ${fn:escapeXml(attr.value)} 这里千万不能有空格! 2.在attributeRepository这个节点中,resultAttributeMapping下的配置,例如在配置的时候需要注意数据库中存放的不能是中文(不过理论上可以解决,具体原因就是casServiceValidationSuccess.jsp在拼接XML的时候出现乱码。)有兴趣的可以尝试解决一下。 2

9

分享到:

CAS配置第三步:客户端的配置 | CAS配置第一步:准备工作

评论

3 楼 andy_ghg 2012-02-10

queryAttributeMapping

01jiangwei01 写道 引用





中的queryAttributeMapping是什麼意思啊? 查询数据库的时候所使用的参数,我也很久没有做这个配置了。可能也记不太清楚了。不好意思。 2 楼 01jiangwei01 2012-02-08

引用





中的queryAttributeMapping是什麼意思啊?

1 楼 runkityboy 2011-12-19

谢谢帮我解决问题了

发表评论

您还没有登录,请您登录后再发表评论

andy_ghg的博客

andy_ghg

  • 浏览: 50654 次
  • 性别: Icon_minigender_1
  • 来自: 扬州
  • 最近访客 更多访客>>

asd51731的博客

asd51731

shuta的博客

shuta lzf0112的博客

lzf0112

young.java的博客

young.java

文章分类

存档分类

最新评论

CAS 的SSO实现细节

Posted on

CAS 的SSO实现细节 - Jaytse的专栏 - 博客频道 - CSDN.NET

您还未登录!|登录|注册|帮助

Jaytse的专栏

欢迎来到小米的CSDN

CAS 的SSO实现细节

分类: J2EE 2008-07-25 16:07 629人阅读 评论(0) 收藏 举报

实验步骤

  1. 访问partner1 (CAS Client 1)的index.jsp

  2. 访问partner2 (CAS Client 2)的index.jsp

  3. 访问partner1的debug.jsp

  4. 访问www.test.com:443/cas-server/logout (CAS Server)

讨论

步骤一

http://p.blog.csdn.net/images/p_blog_csdn_net/jaytse/EntryImages/20080725/p1.JPG

  1. 请求partner1的index.jsp

  2. 发现请求页面为受限页面,REDIRECT 到CAS-Server端进行认证

  3. 返回CAS Server登录页面

  4. 输入用户名、密码,Form表单提交

  5. CAS Server端进行认证,REDIRECT到Partner端,此时CAS-Server端为Partner1生成ST,并在浏览器记录CAS Server的Cookie

  6. Partner端获取到ST后,到CAS Server端去验证,返回认证信息

  7. 若通过认证(1.0为yes, 2.0为XML格式验证),Partner返回请求的页面,并在浏览器记录Partner的Cookie

步骤二

http://p.blog.csdn.net/images/p_blog_csdn_net/jaytse/EntryImages/20080725/p2.JPG

  1. 请求Partner2 的index.jsp

  2. 发现请求页面为受限页面,REDIRECT 到CAS-Server端进行认证。浏览器的Redirect带着将已经被记录了的通过认证的CAS Server的Cookie一同到CAS-Server认证

  3. 认证通过,REDIRECT到Partner2,此时CAS Server端为Partner2生成ST。

  4. Partner 2获取到ST后,到CAS Server端去验证,返回认证信息

  5. 若通过认证,Partner2返回请求的页面,并在浏览器记录Partner2的Cookie

步骤三

http://p.blog.csdn.net/images/p_blog_csdn_net/jaytse/EntryImages/20080725/p3.JPG

  1. 请求Partner 1的debug.jsp(带有Partner 1的Cookie信息)

  2. 返回debug.jsp

步骤四

http://p.blog.csdn.net/images/p_blog_csdn_net/jaytse/EntryImages/20080725/p4.JPG

  1. 请求logout

  2. CAS Server通知Partner 1和Partner 2

  3. 返回CAS Server的logout页面

备注

Redirect分成2个步骤:

  1. response发送给浏览器返回信息,通知浏览器创建新的请求

  2. 请求新的页面

Cookie中携带的信息:

  1. 域名

  2. 路径 当域名和路径名全部相同的时候,浏览器产生请求才把对应的信息一同携带给服务器

分享到:

/* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

个人资料

jaytse

  • 访问:68320次
  • 积分:1431分
  • 排名:第4313名

  • 原创:68篇

  • 转载:30篇
  • 译文:0篇
  • 评论:46条

文章搜索

文章分类

文章存档

展开 阅读排行

评论排行

最新评论

taizans: good..

xueixin: 我的bin/cmanager.sh 启动不起来咋回事啊,能够提供一些详细的解决方案吗? 我的qq67...

nongyan90: 你说的这些对我很有用,谢谢了!

nongyan90: author ,我们很关心图啊

leibf: 所谓胡图在哪里

if_else123: 学习了,正在找单点登录方面的资料,虽然没有这么做,但还是支持楼主。

jaytse: 呵呵,我基本上没有看懂你的问题;但我想可能是spring的事情吧;1.5比1.4多了泛型和其他扩展,...

liu282713097:

tianguowei123: 你好,你写的那篇关于《利用HTTP协议获取163的联系人列表》三个系列,但是现在又改了,有空帮忙分析...

lwchw: 工作的不入操作的,这年头完全颠倒了。 设计模式

我的相册

衣食父母

公司简介|招贤纳士|广告服务|银行汇款帐号|联系方式|版权声明|法律顾问|问题报告京 ICP 证 070598 号北京创新乐知信息技术有限公司 版权所有 联系邮箱:webmaster@csdn.netCopyright © 1999-2012, CSDN.NET, All Rights Reserved GongshangLogo