﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Jacally-文章分类-服务配置</title><link>http://www.blogjava.net/jacally/category/19410.html</link><description>Java原生态</description><language>zh-cn</language><lastBuildDate>Mon, 17 Mar 2008 20:07:51 GMT</lastBuildDate><pubDate>Mon, 17 Mar 2008 20:07:51 GMT</pubDate><ttl>60</ttl><item><title>[导入]CAS 单点登录安装笔记4 -- asp.net client端的设置</title><link>http://www.blogjava.net/jacally/articles/186657.html</link><dc:creator>Lib</dc:creator><author>Lib</author><pubDate>Sun, 02 Mar 2008 03:52:00 GMT</pubDate><guid>http://www.blogjava.net/jacally/articles/186657.html</guid><wfw:comment>http://www.blogjava.net/jacally/comments/186657.html</wfw:comment><comments>http://www.blogjava.net/jacally/articles/186657.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jacally/comments/commentRss/186657.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jacally/services/trackbacks/186657.html</trackback:ping><description><![CDATA[<br />
网站: <a href="http://www.javaeye.com">JavaEye</a>&nbsp;
作者: <a href="http://lib.javaeye.com">jacally</a>&nbsp;
链接：<a href="http://lib.javaeye.com/blog/166619" style="color: red;">http://lib.javaeye.com/blog/166619</a>&nbsp;
发表时间: 2008年03月02日
<br />
<br />
声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
<br />
<br />
CAS 单点登录安装笔记4
<br />
--- asp.net client端的设置
<br />
<br />
1、首先修改web.Config文件，加入以下设置：
<br />
<pre name="code" class="xml">&lt;authentication mode="Forms" &gt;<br />
&lt;forms name="casauth" loginUrl="login.aspx" /&gt;<br />
&lt;/authentication&gt;<br />
&lt;authorization&gt;<br />
&lt;deny users="?" /&gt;<br />
&lt;/authorization&gt;<br />
</pre>
<br />
本人对.net不是很熟悉，感觉这里的配置类似java web应用程序中的过滤器，当用户访问web页时首先跳转到login.aspx页面进行验证。
<br />
<br />
2、加入以下c#代码到login.aspx页面的加载事件中：
<br />
<pre name="code" class="c#">    //CAS 身份验证 服务器地址<br />
private const string CASHOST = "https://sso.gzps.net:8443/cas/";<br />
<br />
protected void Page_Load(object sender, EventArgs e)<br />
{<br />
System.Net.ServicePointManager.CertificatePolicy = new MyPolicy();<br />
<br />
// Look for the "ticket=" after the "?" in the URL<br />
string tkt = Request.QueryString["ticket"];<br />
<br />
// This page is the CAS service=, but discard any query string residue<br />
string service = Request.Url.GetLeftPart(UriPartial.Path);<br />
<br />
// First time through there is no ticket=, so redirect to CAS login<br />
if (tkt == null || tkt.Length == 0)<br />
{<br />
string redir = CASHOST + "login?" +<br />
"service=" + service;<br />
Response.Redirect(redir);<br />
return;<br />
}<br />
<br />
// Second time (back from CAS) there is a ticket= to validate<br />
string validateurl = CASHOST + "serviceValidate?" +<br />
"ticket=" + tkt + "&amp;"+<br />
"service=" + service;<br />
StreamReader Reader = new StreamReader( new WebClient().OpenRead(validateurl));<br />
string resp = Reader.ReadToEnd();<br />
// I like to have the text in memory for debugging rather than parsing the stream<br />
<br />
// Some boilerplate to set up the parse.<br />
NameTable nt = new NameTable();<br />
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);<br />
XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None);<br />
XmlTextReader reader = new XmlTextReader(resp, XmlNodeType.Element, context);<br />
<br />
string netid = null;<br />
<br />
// A very dumb use of XML. Just scan for the "user". If it isn't there, its an error.<br />
while (reader.Read())<br />
{<br />
if (reader.IsStartElement()) {<br />
string tag = reader.LocalName;<br />
if (tag=="user")<br />
netid = reader.ReadString();<br />
}<br />
}<br />
// if you want to parse the proxy chain, just add the logic above<br />
reader.Close();<br />
// If there was a problem, leave the message on the screen. Otherwise, return to original page.<br />
if (netid == null)<br />
{<br />
Label1.Text = "CAS returned to this application, but then refused to validate your identity.";<br />
}<br />
else<br />
{<br />
Session["UserName"] = netid;<br />
Label1.Text = "Welcome " + netid;<br />
FormsAuthentication.RedirectFromLoginPage(netid, false); // set netid in ASP.NET blocks<br />
}<br />
<br />
}<br />
}<br />
</pre>
<br />
<br />
以上代码参照了ja-sig网站的解决方案：<a href="http://www.ja-sig.org/wiki/display/CASC/ASP.NET+Forms+Authentication" target="_blank">http://www.ja-sig.org/wiki/display/CASC/ASP.NET+Forms+Authentication</a>
<br />
<br />
3、以为这样就可以了，运行时可以跳到sso服务器进行验证，但跳转以后报以下错误：
<br />
" System.Net.WebException。 基础连接已关闭。 无法建立与远程服务器信任关系 "。
<br />
应该与CAS Server端安装了数字证书，而.net Client端并没有安装相应的证书有关。
<br />
可以通过<a href="http://hi.baidu.com/wjmd521/blog/item/d0244e60edc9a045ebf8f898.html" target="_blank">配置IIS服务器，支持HTTPS SSL协议实现安全数据交换</a>中介绍的步骤导入CAS 服务端的数字证书,或者通过<a href="http://support.microsoft.com/kb/823177/" target="_blank">http://support.microsoft.com/kb/823177/</a>上介绍的解决方案进行处理：
<br />
实现类
<br />
<pre name="code" class="c#">using System.Net;<br />
using System.Security.Cryptography.X509Certificates;<br />
<br />
public class MyPolicy : ICertificatePolicy {<br />
public bool CheckValidationResult(<br />
ServicePoint srvPoint<br />
, X509Certificate certificate<br />
, WebRequest request<br />
, int certificateProblem) {<br />
<br />
//Return True to force the certificate to be accepted.<br />
return true;<br />
<br />
} // end CheckValidationResult<br />
} // class MyPolicy<br />
<br />
</pre>
<br />
客户端代码中包含下列代码：
<br />
<pre name="code" class="#c">   System.Net.ServicePointManager.CertificatePolicy = new MyPolicy();<br />
</pre>
<br />
<br />
所有代码见附件WebSite.rar,将其部署到你的IIS服务器就可以了。
<br />
关于IIS服务器的设置见<a href="http://tech.163.com/special/00091PDS/aspnet.html" target="_blank">asp.net一夜速成教程</a>
<br />
<span style="color: red;">
<a href="http://lib.javaeye.com/blog/166619#comments" style="color: red;">本文的讨论也很精彩，浏览讨论&gt;&gt;</a>
</span>
<br />
<br />
<br />
<span style="color: rgb(226, 136, 34);">JavaEye推荐</span>
<br />
<a href="/adverts/41" target="_blank"><span style="color: red; font-weight: bold;">中国领先的电子商务网站－淘宝网招贤纳士，诚聘Java工程师</span></a>
<br />
<br />
<br />
<br />
文章来源:<a href="http://lib.javaeye.com/blog/166619">http://lib.javaeye.com/blog/166619</a>
<img src ="http://www.blogjava.net/jacally/aggbug/186657.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jacally/" target="_blank">Lib</a> 2008-03-02 11:52 <a href="http://www.blogjava.net/jacally/articles/186657.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]CAS 单点登录安装笔记3 -- 与acegi集成</title><link>http://www.blogjava.net/jacally/articles/186658.html</link><dc:creator>Lib</dc:creator><author>Lib</author><pubDate>Thu, 28 Feb 2008 15:39:00 GMT</pubDate><guid>http://www.blogjava.net/jacally/articles/186658.html</guid><wfw:comment>http://www.blogjava.net/jacally/comments/186658.html</wfw:comment><comments>http://www.blogjava.net/jacally/articles/186658.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jacally/comments/commentRss/186658.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jacally/services/trackbacks/186658.html</trackback:ping><description><![CDATA[<br />
网站: <a href="http://www.javaeye.com">JavaEye</a>&nbsp;
作者: <a href="http://lib.javaeye.com">jacally</a>&nbsp;
链接：<a href="http://lib.javaeye.com/blog/165980" style="color: red;">http://lib.javaeye.com/blog/165980</a>&nbsp;
发表时间: 2008年02月28日
<br />
<br />
声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
<br />
<br />
CAS 单点登录安装笔记3
<br />
-- 与acegi集成
<br />
<br />
在我的项目中应用了acigi安全框架,以下是结合yale cas单点登录系统进行的相关配置
<br />
<pre name="code" class="xml">
&lt;!-- =========  Acegi as a CAS Client的配置============= --&gt;
&lt;bean id="authenticationProcessingFilter"
class="org.acegisecurity.ui.cas.CasProcessingFilter"&gt;
&lt;property name="authenticationManager"
ref="authenticationManager" /&gt;
&lt;property name="authenticationFailureUrl"
value="/login.do?login_error=1" /&gt;
&lt;property name="defaultTargetUrl" value="/main.do" /&gt;
&lt;property name="filterProcessesUrl"&gt;
&lt;value&gt;/j_acegi_cas_security_check&lt;/value&gt;
&lt;/property&gt;
&lt;property name="rememberMeServices" ref="rememberMeServices" /&gt;
&lt;property name="exceptionMappings"&gt;
&lt;value&gt;
org.acegisecurity.AuthenticationServiceException=/login.do?login_error=user_not_found_error
org.acegisecurity.BadCredentialsException=/login.do?login_error=user_psw_error
org.acegisecurity.concurrent.ConcurrentLoginException=/login.do?login_error=too_many_user_error
org.acegisecurity.DisabledException=/login.do?login_error=disabled_user_error
&lt;/value&gt;
&lt;/property&gt;
&lt;/bean&gt;
&lt;bean id="exceptionTranslationFilter" class="org.acegisecurity.ui.ExceptionTranslationFilter"&gt;
&lt;property name="authenticationEntryPoint"&gt;
&lt;ref local="casProcessingFilterEntryPoint"/&gt;
&lt;/property&gt;
&lt;property name="accessDeniedHandler"&gt;
&lt;bean
class="org.acegisecurity.ui.AccessDeniedHandlerImpl"&gt;
&lt;property name="errorPage"
value="/errors/accessDenied.jsp" /&gt;
&lt;/bean&gt;
&lt;/property&gt;
&lt;/bean&gt;
&lt;!-- cas config --&gt;
&lt;bean id="casProcessingFilterEntryPoint" class="org.acegisecurity.ui.cas.CasProcessingFilterEntryPoint"&gt;
&lt;property name="loginUrl"&gt;&lt;value&gt;https://sso.gzps.net:8443/cas/login&lt;/value&gt;&lt;/property&gt;
&lt;property name="serviceProperties"&gt;&lt;ref local="serviceProperties"/&gt;&lt;/property&gt;
&lt;/bean&gt;
&lt;bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager"&gt;
&lt;property name="providers"&gt;
&lt;list&gt;
&lt;ref local="casAuthenticationProvider"/&gt;
&lt;/list&gt;
&lt;/property&gt;
&lt;/bean&gt;
&lt;bean id="casAuthenticationProvider" class="org.acegisecurity.providers.cas.CasAuthenticationProvider"&gt;
&lt;property name="casAuthoritiesPopulator"&gt;&lt;ref bean="casAuthoritiesPopulator"/&gt;&lt;/property&gt;
&lt;property name="casProxyDecider"&gt;&lt;ref local="casProxyDecider"/&gt;&lt;/property&gt;
&lt;property name="ticketValidator"&gt;&lt;ref local="casProxyTicketValidator"/&gt;&lt;/property&gt;
&lt;property name="statelessTicketCache"&gt;&lt;ref local="statelessTicketCache"/&gt;&lt;/property&gt;
&lt;property name="key"&gt;&lt;value&gt;my_password_for_this_auth_provider_only&lt;/value&gt;&lt;/property&gt;
&lt;/bean&gt;
&lt;bean id="casProxyTicketValidator" class="org.acegisecurity.providers.cas.ticketvalidator.CasProxyTicketValidator"&gt;
&lt;property name="casValidate"&gt;&lt;value&gt;https://sso.gzps.net:8443/cas/proxyValidate&lt;/value&gt;&lt;/property&gt;
&lt;property name="serviceProperties"&gt;&lt;ref local="serviceProperties"/&gt;&lt;/property&gt;
&lt;/bean&gt;
&lt;!--
&lt;bean id="casProxyDecider" class="org.acegisecurity.providers.cas.proxy.AcceptAnyCasProxy" /&gt;
--&gt;
&lt;bean id="casProxyDecider" class="org.acegisecurity.providers.cas.proxy.RejectProxyTickets" /&gt;
&lt;bean id="serviceProperties" class="org.acegisecurity.ui.cas.ServiceProperties"&gt;
&lt;property name="service"&gt;
&lt;value&gt;http://localhost:8080/aio/j_acegi_cas_security_check&lt;/value&gt;
&lt;/property&gt;
&lt;property name="sendRenew"&gt;
&lt;value&gt;false&lt;/value&gt;
&lt;/property&gt;
&lt;/bean&gt;
&lt;bean id="statelessTicketCache" class="org.acegisecurity.providers.cas.cache.EhCacheBasedTicketCache"&gt;
&lt;property name="cache"&gt;
&lt;bean class="org.springframework.cache.ehcache.EhCacheFactoryBean"&gt;
&lt;property name="cacheManager"&gt;
&lt;bean class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"/&gt;
&lt;/property&gt;
&lt;property name="cacheName" value="userCache"/&gt;
&lt;/bean&gt;
&lt;/property&gt;
&lt;/bean&gt;
&lt;bean id="casAuthoritiesPopulator" class="org.acegisecurity.providers.cas.populator.DaoCasAuthoritiesPopulator"&gt;<br />
&lt;property name="userDetailsService"&gt;&lt;ref local="userDetailsService"/&gt;&lt;/property&gt;<br />
&lt;/bean&gt;<br />
<br />
&lt;bean id="casProcessingFilter" class="org.acegisecurity.ui.cas.CasProcessingFilter"&gt;<br />
&lt;property name="authenticationManager"&gt;&lt;ref local="authenticationManager"/&gt;&lt;/property&gt;<br />
&lt;property name="authenticationFailureUrl"&gt;&lt;value&gt;/casfailed.jsp&lt;/value&gt;&lt;/property&gt;<br />
&lt;property name="defaultTargetUrl"&gt;&lt;value&gt;/&lt;/value&gt;&lt;/property&gt;<br />
&lt;property name="filterProcessesUrl"&gt;&lt;value&gt;/j_acegi_cas_security_check&lt;/value&gt;&lt;/property&gt;<br />
&lt;/bean&gt;<br />
<br />
<br />
&lt;!-- ======================================================= --&gt;<br />
<br />
</pre>
<br />
<span style="color: red;">
<a href="http://lib.javaeye.com/blog/165980#comments" style="color: red;">本文的讨论也很精彩，浏览讨论&gt;&gt;</a>
</span>
<br />
<br />
<br />
<span style="color: #e28822;">JavaEye推荐</span>
<br />
<a href="/adverts/41" target="_blank"><span style="color: red; font-weight: bold;">中国领先的电子商务网站－淘宝网招贤纳士，诚聘Java工程师</span></a>
<br />
<br />
<br />
<br />
文章来源:<a href="http://lib.javaeye.com/blog/165980">http://lib.javaeye.com/blog/165980</a> 
<img src ="http://www.blogjava.net/jacally/aggbug/186658.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jacally/" target="_blank">Lib</a> 2008-02-28 23:39 <a href="http://www.blogjava.net/jacally/articles/186658.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]CAS 单点登录安装笔记2 -- 配置CAS,访问自己的用户表</title><link>http://www.blogjava.net/jacally/articles/186659.html</link><dc:creator>Lib</dc:creator><author>Lib</author><pubDate>Wed, 27 Feb 2008 09:46:00 GMT</pubDate><guid>http://www.blogjava.net/jacally/articles/186659.html</guid><wfw:comment>http://www.blogjava.net/jacally/comments/186659.html</wfw:comment><comments>http://www.blogjava.net/jacally/articles/186659.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jacally/comments/commentRss/186659.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jacally/services/trackbacks/186659.html</trackback:ping><description><![CDATA[<br />
网站: <a href="http://www.javaeye.com">JavaEye</a>&nbsp;
作者: <a href="http://lib.javaeye.com">jacally</a>&nbsp;
链接：<a href="http://lib.javaeye.com/blog/165538" style="color: red;">http://lib.javaeye.com/blog/165538</a>&nbsp;
发表时间: 2008年02月27日
<br />
<br />
声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
<br />
<br />
CAS 单点登录安装笔记2
<br />
<br />
<br />
1.修改cas/webapp/WEB-INF/deployerConfigContext.xml
<br />
加入以下定义:
<br />
<pre name="code" class="xml">	&lt;!-- 数据源定义 --&gt;<br />
&lt;bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close"&gt;<br />
&lt;property name="driverClassName" value="${db.driver}" /&gt;<br />
&lt;property name="url" value="${db.url}" /&gt;<br />
&lt;property name="username" value="${db.username}" /&gt;<br />
&lt;property name="password" value="${db.password}" /&gt;       <br />
&lt;/bean&gt;<br />
&lt;!-- <br />
passwordEncoder　使用Md5算法加密 <br />
--&gt;<br />
&lt;bean id="passwordEncoder"<br />
class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder" autowire="byName"&gt;   <br />
&lt;constructor-arg value="MD5"/&gt;<br />
&lt;/bean&gt;<br />
</pre>
<br />
<br />
2.屏蔽原有验证方法:
<br />
<pre name="code" class="xml">				&lt;!-- <br />
&lt;bean<br />
class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" /&gt;<br />
--&gt;<br />
</pre>
<br />
<br />
3.加入通过访问数据库进行验证的handler:
<br />
<pre name="code" class="xml">				&lt;bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"&gt;<br />
&lt;property name="sql" value="select password from CORE_USERS where logid=?" /&gt;<br />
&lt;property name="passwordEncoder" ref="passwordEncoder"/&gt;<br />
&lt;property name="dataSource" ref="dataSource" /&gt;<br />
&lt;/bean&gt;	<br />
</pre>
<br />
<br />
4.修改cas\webapp\WEB-INF\cas.properties,定义数据库连接资源,本例子是连接的oracle数据库
<br />
<pre name="code" class="properties">db.driver=oracle.jdbc.driver.OracleDriver<br />
db.url=jdbc\:oracle\:thin\:@192.168.1.1\:1521\:xxxx<br />
db.username=xxxx<br />
db.password=xxxx<br />
</pre>
<br />
<br />
5.增加相关jar包到cas\webapp\WEB-INF\lib\目录下:
<br />
cas-server-support-jdbc-3.2.jar (cas连接数据库的支持包)
<br />
ojdbc14.jar (连接oracle数据的jdbc驱动程序)
<br />
<span style="color: red;">
<a href="http://lib.javaeye.com/blog/165538#comments" style="color: red;">本文的讨论也很精彩，浏览讨论&gt;&gt;</a>
</span>
<br />
<br />
<br />
<span style="color: #e28822;">JavaEye推荐</span>
<br />
<a href="/adverts/41" target="_blank"><span style="color: red; font-weight: bold;">中国领先的电子商务网站－淘宝网招贤纳士，诚聘Java工程师</span></a>
<br />
<br />
<br />
<br />
文章来源:<a href="http://lib.javaeye.com/blog/165538">http://lib.javaeye.com/blog/165538</a> 
<img src ="http://www.blogjava.net/jacally/aggbug/186659.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jacally/" target="_blank">Lib</a> 2008-02-27 17:46 <a href="http://www.blogjava.net/jacally/articles/186659.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]CAS 单点登录安装笔记1 -- 基本设置与数字证书的安装</title><link>http://www.blogjava.net/jacally/articles/186660.html</link><dc:creator>Lib</dc:creator><author>Lib</author><pubDate>Tue, 26 Feb 2008 08:35:00 GMT</pubDate><guid>http://www.blogjava.net/jacally/articles/186660.html</guid><wfw:comment>http://www.blogjava.net/jacally/comments/186660.html</wfw:comment><comments>http://www.blogjava.net/jacally/articles/186660.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jacally/comments/commentRss/186660.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jacally/services/trackbacks/186660.html</trackback:ping><description><![CDATA[<br />
网站: <a href="http://www.javaeye.com">JavaEye</a>&nbsp;
作者: <a href="http://lib.javaeye.com">jacally</a>&nbsp;
链接：<a href="http://lib.javaeye.com/blog/165196" style="color: red;">http://lib.javaeye.com/blog/165196</a>&nbsp;
发表时间: 2008年02月26日
<br />
<br />
声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
<br />
<br />
安装JA-SIG SSO系统笔记1
<br />
<br />
(关于配置访问数据库的用户表见<a href="http://lib.javaeye.com/blog/165538" target="_blank">安装JA-SIG SSO系统笔记2</a>)
<br />
(与acegi结合配置见<a href="http://lib.javaeye.com/blog/165980" target="_blank">安装JA-SIG SSO系统笔记3</a>)
<br />
(ASP.NET client端的设置见<a href="http://lib.javaeye.com/blog/166619" target="_blank">安装JA-SIG SSO系统笔记4</a>)
<br />
<br />
ps:配置中的文件路径根据自己的实际情况的设定
<br />
<br />
1.安装JA-SIG 到 TOMCAT;
<br />
JA-SIG下载地址:
<br />
<a href="http://www.ja-sig.org/products/cas/downloads/index.html" target="_blank">http://www.ja-sig.org/products/cas/downloads/index.html</a>
<br />
<br />
2.生成数字证书,见批处理文件"cas 生成数字证书.bat";
<br />
<br />
3.配置Tomcat的HTTPS服务,修改server.xml
<br />
<pre name="code" class="xml">		&lt;Connector protocol="org.apache.coyote.http11.Http11Protocol"<br />
port="8443" minSpareThreads="5" maxSpareThreads="75"<br />
enableLookups="true" disableUploadTimeout="true" <br />
acceptCount="100"  maxThreads="200"<br />
scheme="https" secure="true" SSLEnabled="true"<br />
keystoreFile="C:/Documents and Settings/Administrator/.keystore" keystorePass="changeit"<br />
truststoreFile="D:/Java/jdk1.6.0_02/jre/lib/security/cacerts"<br />
clientAuth="false" sslProtocol="TLS"/&gt;<br />
</pre>
<br />
<br />
4.导出 SERVER 的证书，用来给所有需要用到的客户端导入,见"导出 cas 数字证书.bat"
<br />
<br />
5.在客户端的 JVM 里导入信任的 SERVER 的证书 ( 根据情况有可能需要管理员权限 ),见"导入 cas 证书.bat"；
<br />
<br />
5.修改客户端服务程序,加入cas过滤器,修改web.xml
<br />
<pre name="code" class="xml">	&lt;!-- CAS --&gt;<br />
&lt;filter&gt;<br />
&lt;filter-name&gt;CAS Filter&lt;/filter-name&gt;<br />
&lt;filter-class&gt;edu.yale.its.tp.cas.client.filter.CASFilter&lt;/filter-class&gt;<br />
&lt;init-param&gt;<br />
&lt;param-name&gt;edu.yale.its.tp.cas.client.filter.loginUrl&lt;/param-name&gt;<br />
&lt;param-value&gt;https://sso.gzps.net:8443/cas/login&lt;/param-value&gt;<br />
&lt;/init-param&gt;<br />
&lt;init-param&gt;<br />
&lt;param-name&gt;edu.yale.its.tp.cas.client.filter.validateUrl&lt;/param-name&gt;<br />
&lt;param-value&gt;https://sso.gzps.net:8443/cas/serviceValidate&lt;/param-value&gt;<br />
&lt;/init-param&gt;<br />
&lt;init-param&gt;<br />
&lt;param-name&gt;edu.yale.its.tp.cas.client.filter.serverName&lt;/param-name&gt;<br />
&lt;param-value&gt;88.148.29.54:8080&lt;/param-value&gt;<br />
&lt;/init-param&gt;<br />
&lt;/filter&gt;<br />
&lt;filter-mapping&gt;<br />
&lt;filter-name&gt;CAS Filter&lt;/filter-name&gt;<br />
&lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />
&lt;/filter-mapping&gt;	<br />
<br />
</pre>
<br />
<span style="color: red;">
<a href="http://lib.javaeye.com/blog/165196#comments" style="color: red;">本文的讨论也很精彩，浏览讨论&gt;&gt;</a>
</span>
<br />
<br />
<br />
<span style="color: #e28822;">JavaEye推荐</span>
<br />
<a href="/adverts/41" target="_blank"><span style="color: red; font-weight: bold;">中国领先的电子商务网站－淘宝网招贤纳士，诚聘Java工程师</span></a>
<br />
<br />
<br />
<br />
文章来源:<a href="http://lib.javaeye.com/blog/165196">http://lib.javaeye.com/blog/165196</a> 
<img src ="http://www.blogjava.net/jacally/aggbug/186660.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jacally/" target="_blank">Lib</a> 2008-02-26 16:35 <a href="http://www.blogjava.net/jacally/articles/186660.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>配置Red5详解(转)</title><link>http://www.blogjava.net/jacally/articles/95729.html</link><dc:creator>Lib</dc:creator><author>Lib</author><pubDate>Wed, 24 Jan 2007 06:14:00 GMT</pubDate><guid>http://www.blogjava.net/jacally/articles/95729.html</guid><wfw:comment>http://www.blogjava.net/jacally/comments/95729.html</wfw:comment><comments>http://www.blogjava.net/jacally/articles/95729.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jacally/comments/commentRss/95729.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jacally/services/trackbacks/95729.html</trackback:ping><description><![CDATA[
		<div style="FONT-SIZE: 12px">
				<a onclick="javascript:tagshow(event, 'RED5');" href="javascript:;" target="_self">
						<u>
								<strong>
										<font color="#666666">RED5</font>
								</strong>
						</u>
				</a> 将所有的应用程序都放在RED5根目录下的"webapps"目录。你需要为所创建的程序在webapps目录下添加相应的目录。在你的应用程序目录里应该有一个名为"WEB-INF"的目录，用来存放你的程序的配置文件。在"doc/templates/myapp"目录有一个模板，可以用来帮你完成建立程序的初始工作。<br />RED5启动的时候，在"webapps"目录的程序文件都是搜索"WEB-INF"的目录下的配置文件来完成配置的。<br />最主要的配置文件是"web.xml"。这个文件里包含了以下参数：<br />globalScope：指定全局作用范围<br />&lt;context-param&gt;<br />    &lt;param-name&gt;globalScope&lt;/param-name&gt;<br />    &lt;param-value&gt;default&lt;/param-value&gt;<br />&lt;/context-param&gt;<br />contextConfigLocation：指定配置handler的文件的位置。这些配置文件描述了客户端加入/离开的动作触发后调用的处理方法，作用范围。在描述的时候可以使用通配符来描述多个文件：<br />&lt;context-param&gt;<br />    &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;<br />    &lt;param-value&gt;/WEB-INF/red5-*.xml&lt;/param-value&gt;<br />&lt;/context-param&gt;<br />locatorFactorySelector：程序的根上下文，通常是"red5.xml"<br />&lt;context-param&gt;<br />    &lt;param-name&gt;locatorFactorySelector&lt;/param-name&gt;<br />    &lt;param-value&gt;red5.xml&lt;/param-value&gt;<br />&lt;/context-param&gt;<br />parentContextKey：父级上下文，通常是"default.context"<br />&lt;context-param&gt;<br />    &lt;param-name&gt;parentContextKey&lt;/param-name&gt;<br />    &lt;param-value&gt;default.context&lt;/param-value&gt;<br />&lt;/context-param&gt;<br />log4jConfigLocation：日志配置文件的位置<br />&lt;context-param&gt;<br />    &lt;param-name&gt;log4jConfigLocation&lt;/param-name&gt;<br />    &lt;param-value&gt;/WEB-INF/log4j.properties&lt;/param-value&gt;<br />&lt;/context-param&gt;<br />webAppRootKey：程序的全局唯一名<br />&lt;context-param&gt;<br />    &lt;param-name&gt;webAppRootKey&lt;/param-name&gt;<br />    &lt;param-value&gt;/myapp&lt;/param-value&gt;<br />&lt;/context-param&gt;<br />对于每一个Handler配置文件最少需要有三个bean<br />Context：用来影射路径到某个作用范围、搜索服务和Handler，它有一个保留的名字"web.context"。 其默认的类为org.red5.server.Context<br />&lt;bean id="web.context" class="org.red5.server.Context" <br />     autowire="byType" /&gt;<br />对于没有一个应用程序只应该有一个Context，但是同一个Context可以被多个作用范围共享<br />Scope：每一个应用程序最少有一个作用范围，用来将handler连接到context和服务器。作用范围可以建立一棵树，每一个客户端连接到树上的一个节点，而共享对象存在于作用范围里。可以把作用范围看作是聊天室或者程序实例。默认的作用范围通常是web.scope，不过这名字是可以任意取的。<br />对于bean有以下属性：<br />server：与全局服务器"red5.server"相关。<br />parent：指定当前作用范围的父范围，通常是"global.scope"<br />context：当前作用范围的服务器上下文，一般指定为"web.context"<br />handler：对应当前作用范围的handler<br />contextPath：用来连接到当前作用范围的路径<br />virtualHosts：一个主机名或IP的列表，用来描述虚拟主机的位置，列表项目之间用逗号分隔开。<br />&lt;bean id="web.scope" class="org.red5.server.WebScope"<br />     init-method="register"&gt;<br />    &lt;property name="server" ref="red5.server" /&gt;<br />    &lt;property name="parent" ref="global.scope" /&gt;<br />    &lt;property name="context" ref="web.context" /&gt;<br />    &lt;property name="handler" ref="web.handler" /&gt;<br />    &lt;property name="contextPath" value="/myapp" /&gt;<br />    &lt;property name="virtualHosts" value="localhost, 127.0.0.1" /&gt;<br />&lt;/bean&gt;<br />为了应用程序配置方便的需要，可以将"contextPath"和"virtualHosts"放到另外一个单独的属性文件里边，而在这里使用变量来表示，为此需要添加一个特别的bean来指定属性文件的位置。<br />&lt;bean id="placeholderConfig"     class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&gt;<br />    &lt;property name="location" value="/WEB-INF/red5-web.properties" /&gt;<br />&lt;/bean&gt;<br />假设在属性文件red5-web.properties里有如下的数据：<br />webapp.contextPath=/myapp<br />  webapp.virtualHosts=localhost, 127.0.0.1<br />则上边的bean的"contextPath"和"virtualHosts"属性即可使用变量来指定值<br />  &lt;property name="contextPath" value="http://www.ruyiblog.com/${webapp.contextPath}" /&gt;<br />   &lt;property name="virtualHosts" value="http://www.ruyiblog.com/${webapp.virtualHosts}" /&gt;<br />对于"contextPath"可以视为是一个根作用范围。你可以在配置好的"contextPath"路径后边随意添加其他的路径，而连接到这些路径的客户端将动态创建另外的作用范围，这些作用范围使用的是同样的handler，但拥有自己的属性、共享对象和活动流。<br />handler：每一个上下文需要一个handler来响应用户连接、离开作用范围时的动作，handler实现了很多方法，用户可以调用以达到特定的目的。这个handler必须实现"org.red5.server.api.IScopeHandler"接口，当然针对共享对象和流的访问还应该实现其他的接口。<br />在"org.red5.server.adapter.ApplicationAdapter"可以找到一个能够用作基类的例子，同时还应该多多参照文档以得到更多细节。<br />某个作用范围的handler可以如下指定：<br />&lt;bean id="web.handler" <br />     class="the.path.to.my.Application" <br />     singleton="true" /&gt;<br />其中"id"属性是上边定义的作用范围里指定的。<br />如果你不需要任何服务端的逻辑处理，可以使用Red5默认提供的handler<br />&lt;bean id="web.handler" <br />     class="org.red5.server.adapter.ApplicationAdapter" <br />     singleton="true" /&gt;<br />handler的例子<br />  package the.path.to.my;<br />  import org.red5.server.adapter.ApplicationAdapter;<br />  public class Application extends ApplicationAdapter {<br />    public Double add(Double a, Double b){<br />      return a + b;<br />    }<br />  }<br />这里假设使用上边的配置，则在客户端调用的时候使用以下方式<br />  nc = new NetConnection();<br />  nc.connect("rtmp://localhost/myapp");<br />  nc.onResult = function(obj) {<br />    trace("The result is " + obj);<br />  }<br />  nc.call("add", nc, 1, 2);<br />返回因该有输出：<br />The result is 3</div>
<img src ="http://www.blogjava.net/jacally/aggbug/95729.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jacally/" target="_blank">Lib</a> 2007-01-24 14:14 <a href="http://www.blogjava.net/jacally/articles/95729.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>subversion &amp; apache 权限控制 [原]</title><link>http://www.blogjava.net/jacally/articles/95357.html</link><dc:creator>Lib</dc:creator><author>Lib</author><pubDate>Mon, 22 Jan 2007 08:14:00 GMT</pubDate><guid>http://www.blogjava.net/jacally/articles/95357.html</guid><wfw:comment>http://www.blogjava.net/jacally/comments/95357.html</wfw:comment><comments>http://www.blogjava.net/jacally/articles/95357.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jacally/comments/commentRss/95357.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jacally/services/trackbacks/95357.html</trackback:ping><description><![CDATA[
		<p>使用apache命令创建访问用户及口令:<br /><!---->bin\htpasswd  -c passwd xxx<br /><!----><br /><!---->访问策略控制文件<br /><!---->accesspolicy -&gt; apache\<!----><br /><!---->[groups]<br />#人员权限分组<br />administrator = admin<br />code-developers = lib,zhuj,huj,zhuyd,liuy,panggc,shaohy<br />core-developers = lib,zhuj<br />testers = zhangyc,zhour<br />deployers = zhangyc,lib 
</p>
		<p>[/]<br />#所有目录的读取权限<br />@administrator = rw<br />@code-developers = r<br />@core-developers = r<br />@testers = r<br />@deployers = r</p>
		<p>[code:/src]<br />#code库中的代码的读取与更新权限<br />@code-developers = rw</p>
		<p>[code:/test-src]<br />#code库中的测试代码的读取与更新权限<br />@code-developers = rw</p>
		<p>[code:/resource]<br />#资源文件与配置文件的读取与更新权限<br />@deployers = rw</p>
		<p>[code:/web/biz]<br />#业务JSP页面代码的读取与更新权限<br />@code-developers = rw</p>
		<p>[code:/web/common]<br />#公共模块JSP页面代码的读取与更新权限<br />@core-developers = rw</p>
		<p>[code:/web/sysconfig]<br />#系统配置JSP页面代码的读取与更新权限<br />@core-developers = rw<br /><!----><br /><!---->修改apache配置文件:httpd.conf<br /><!---->增加以下内容:<br /><!---->&lt;Location /svn&gt;<br />DAV svn<br />SVNParentPath E:\SVN<br />AuthType Basic<br />AuthName "Subversion repository"<br />AuthUserFile passwd <br />AuthzSVNAccessFile accesspolicy<br />Satisfy Any<br />Require valid-user<br />&lt;/Location&gt;<br /><!----><br /><!---->注:如果有中文路径,将该文件转换为UTF-8编码格式.<br /><!----><br />参考文章:http://www.subversion.org.cn/index.php?option=com_content&amp;task=view&amp;id=78&amp;Itemid=91</p>
		<!---->
<img src ="http://www.blogjava.net/jacally/aggbug/95357.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jacally/" target="_blank">Lib</a> 2007-01-22 16:14 <a href="http://www.blogjava.net/jacally/articles/95357.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBoss性能优化：内存紧张的问题终于解决了</title><link>http://www.blogjava.net/jacally/articles/95356.html</link><dc:creator>Lib</dc:creator><author>Lib</author><pubDate>Mon, 22 Jan 2007 08:12:00 GMT</pubDate><guid>http://www.blogjava.net/jacally/articles/95356.html</guid><wfw:comment>http://www.blogjava.net/jacally/comments/95356.html</wfw:comment><comments>http://www.blogjava.net/jacally/articles/95356.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jacally/comments/commentRss/95356.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jacally/services/trackbacks/95356.html</trackback:ping><description><![CDATA[昨天查了一天的资料，运气不错，收获不小，解决了一个老大难问题：JBoss内存紧张的问题。<br />这是一个困扰了我两年整的问题，就是从前年这个时候，用JBoss 3.2.1架站以来，始终是一个大问题。不大的站点，1G的内存都不够用，经常要消耗500Mb的交换内存（swap)。<br />原来是自己犯了非常低级的错误，不懂JAVA_OPTS各参数的含义造成的。<br />之前的JAVA_OPTS是 -Xms 520m -Xmx 1220m -Xss 15120k +XX:AggressiveHeap<br />这个JAVA_OPTS犯了2个致命的错误：<br />1. +XX:AggressiveHeap会使得 Xms 1220m没有意义。这个参数让jvm忽略Xmx参数，疯狂地吃完一个G物理内存，再吃尽一个G的swap。<br />另外Xmx作为允许jvm使用的最大内存数量，不应该超过物理内存的90％。<br />而之所以使用了这个参数，是因为不加的话，JBoss会在运行一天左右的时间后迅速崩溃，上机课是，甚至出现过半个小时就崩溃的情况。<br />之所以要用这个参数，用swap支持服务器运行，是因为犯了下面的错误：<br />2. -Xss 15120k <br />这使得JBoss每增加一个线程（thread)就会立即消耗15M内存，而最佳值应该是128K,默认值好像是512k.<br />这就是JBoss刚启动时，还有200Mb内存富余，但会在一个小时内迅速用完，因为服务器的threads在迅速增加。前3天，每天都多吃80Mb左右的swap.在第四天开始稳定下来。今年春节在外度假，观察到了这个现象，却不理解其原因：服务器在线程到达100之后，一般不再增加新的线程，新增加的在用完之后，会被迅速destroy，??褂玫哪诖嬉不厥樟恕Ｒ虼耍?旁诖航谄诩洌?鄄斓椒?衿髟?1.25-2.10所使用的线程基本是1.21-1.23创建的，因此没有再消耗新的内存。服务器持续运行时间，也因此大大超乎我5天的预期，到达了20天。<br />昨天所作的修改：<br />1.修改JAVA_OPTS,去掉+XX:AggressiveHeap，修改Xss。现在的JAVA_OPTS为：<br />－Xms 520m -Xmx 900m -Xss 128k<br />2.修改deploy/jbossweb-tomcat55.sar/service.xml<br />将maxThreads根据目前的访问量由默认的250降为75，并使用jboss 4默认未写在标准service.xml里面而jboss 3写入了的2个参数: maxSparseThreads=55，minSparseThreads=25<br />3.修改了oracle-ds.xml将最大连接数有150降为50.<br />4.去掉了一些不用的服务。 <br /><img src ="http://www.blogjava.net/jacally/aggbug/95356.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jacally/" target="_blank">Lib</a> 2007-01-22 16:12 <a href="http://www.blogjava.net/jacally/articles/95356.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>