1 JSPWiki数据迁移
<Resource name="PostgresqlDataSource" @H_502_11@
auth="Container"@H_502_11@
type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"@H_502_11@
url="jdbc:postgresql://192.168.0.180:5432/jspwiki_trial"@H_502_11@
password="javac"@H_502_11@
maxActive="5"@H_502_11@
maxIdle="3"@H_502_11@
maxWait="-1"/>@H_502_11@
从下载的包中复制JDBCProvider.jar到WEB-INF下的lib目录中@H_502_11@
3. 在/WEB-INF下创建文件jdbcprovider.properties
connectionProvider = com.forthgo.jspwiki.jdbcprovider.JNDIConnectionProvider@H_502_11@
jndi.datasource = PostgresqlDataSource@H_502_11@
database.flavour = pgsql ## POSTGREsql; other,MysqL,oracle etc.@H_502_11@
## Copy the jdbcprovider.<flavour>.properties file to .../WEB-INF@H_502_11@
driver.useUnicode = true@H_502_11@
driver.characterEncoding = utf8@H_502_11@
driver.connectionCollation = utf8_bin@H_502_11@
database.create = false@H_502_11@
continuationEditMinutes = 15@H_502_11@
从下载的包中复制文件jdbcprovider.pgsql.properties到/WEB-INF目录下@H_502_11@
5. 修改jspwiki.properties
jspwiki.pageProvider = FileSystemProvider@H_502_11@
jspwiki.fileSystemProvider.pageDir = /p/web/www-data/jspwiki/@H_502_11@
jspwiki.attachmentProvider = BasicAttachmentProvider@H_502_11@
jspwiki.basicAttachmentProvider.storageDir = /p/web/www-data/jspwiki/@H_502_11@
jspwiki.pageProvider = com.forthgo.jspwiki.jdbcprovider.JDBCPageProvider@H_502_11@
jspwiki.attachmentProvider = com.forthgo.jspwiki.jdbcprovider.JDBCAttachmentProvider@H_502_11@
jspwiki.jdbcprovider.configuration=jdbcprovider.properties@H_502_11@
在新建180上新建数据库jspwiki_trial,字符集编码UTF-8@H_502_11@
脚本如下:@H_502_11@
CREATE TABLE "WIKI_PAGE"@H_502_11@
(@H_502_11@
"NAME" character varying(100) NOT NULL,@H_502_11@
"VERSION" integer NOT NULL,160) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> "CHANGE_TIME" timestamp without time zone,160) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> "CHANGE_BY" character varying(50),160) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> "CHANGE_NOTE" character varying(100),160) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> "CONTENT" text@H_502_11@
);@H_502_11@
ALTER TABLE ONLY "WIKI_PAGE"@H_502_11@
ADD CONSTRAINT "WIKI_PAGE_UNIQUE_KEY" UNIQUE ("NAME","VERSION");@H_502_11@
ADD CONSTRAINT "WIKI_PAGE_PKEY" PRIMARY KEY ("NAME",160) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> @H_502_11@
CREATE INDEX "WIKI_PAGE_CHANGE_TIME_IX" ON "WIKI_PAGE" USING btree ("CHANGE_TIME");@H_502_11@
CREATE TABLE "WIKI_ATT"@H_502_11@
"PAGENAME" character varying(100) NOT NULL,160) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> "FILENAME" character varying(100) NOT NULL,160) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> "CHANGE_BY" character varying(50),160) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> "LENGTH" integer,160) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> "DATA" bytea@H_502_11@
ALTER TABLE ONLY "WIKI_ATT"@H_502_11@
ADD CONSTRAINT "WIKI_ATT_UNIQUE_KEY" UNIQUE ("PAGENAME","FILENAME",160) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> ADD CONSTRAINT "WIKI_ATT_PKEY" PRIMARY KEY ("PAGENAME",160) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">CREATE INDEX "WIKI_ATT_CHANGE_TIME_IX" ON "WIKI_ATT" USING btree ("CHANGE_TIME");@H_502_11@
1. 新建数据表
create table wiki_users (@H_502_11@
email varchar(100),160) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> full_name varchar(100),160) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> login_name varchar(100) not null primary key,160) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> password varchar(100),160) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> wiki_name varchar(100),160) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> created timestamp,160) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> modified timestamp@H_502_11@
);@H_502_11@
create table wiki_role (@H_502_11@
login_name varchar(100) not null,160) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> wiki_role varchar(100) not null@H_502_11@
create table wiki_groups (@H_502_11@
name varchar(100) not null primary key,160) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> creator varchar(100),160) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> modifier varchar(100),160) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">create table wiki_member (@H_502_11@
name varchar(100) not null,160) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> wiki_member varchar(100) not null,160) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> constraint wiki_member_pk@H_502_11@
primary key (name,wiki_member)@H_502_11@
grant select,insert,update,delete on wiki_users to pgsql;@H_502_11@
sql; sql; sql;
用户数据源可以与内容数据源相同。如果用不同的数据源,同第一节所示,在Tomcat的server.xml添加数据源即可。本例使用相同的数据源。
3. 修改jspwiki.properties文件
jspwiki.groupdatabase = com.ecyrd.jspwiki.auth.authorize.XMLGroupDatabase@H_502_11@
jspwiki.userdatabase = com.ecyrd.jspwiki.auth.user.XMLUserDatabase@H_502_11@
jspwiki.userdatabase.isSharedWithContainer = false@H_502_11@
jspwiki.groupdatabase =com.ecyrd.jspwiki.auth.authorize.JDBCGroupDatabase@H_502_11@
jspwiki.userdatabase = com.ecyrd.jspwiki.auth.user.JDBCUserDatabase@H_502_11@
jspwiki.userdatabase.datasource=PostgresqlDataSource@H_502_11@
jspwiki.groupdatabase.datasource=PostgresqlDataSource@H_502_11@
jspwiki.userdatabase.table=wiki_users@H_502_11@
jspwiki.userdatabase.email=email@H_502_11@
jspwiki.userdatabase.fullName=full_name@H_502_11@
jspwiki.userdatabase.loginName=login_name@H_502_11@
jspwiki.userdatabase.password=password@H_502_11@
jspwiki.userdatabase.wikiName=wiki_name@H_502_11@
jspwiki.userdatabase.created=created@H_502_11@
jspwiki.userdatabase.modified=modified@H_502_11@
jspwiki.userdatabase.roleTable=wiki_role@H_502_11@
jspwiki.userdatabase.role=wiki_role@H_502_11@
jspwiki.groupdatabase.table=wiki_groups@H_502_11@
jspwiki.groupdatabase.membertable=wiki_member@H_502_11@
jspwiki.groupdatabase.created=created@H_502_11@
jspwiki.groupdatabase.creator=creator@H_502_11@
jspwiki.groupdatabase.name=name@H_502_11@
jspwiki.groupdatabase.member=wiki_member@H_502_11@
jspwiki.groupdatabase.modified=modified@H_502_11@
jspwiki.groupdatabase.modifier=modifier@H_502_11@
jspwiki.userdatabase.isSharedWithContainer = true@H_502_11@
访问:http://localhost:8080/wiki/后,单击右上角登录按钮,后选择注册新用户@H_502_11@
密码: 123456@H_502_11@
密码验证: 123456@H_502_11@
名字: Administrator@H_502_11@
创建组Admin,后将Administrator加入到Admin组中@H_502_11@
注意:@H_502_11@
在将数据存储路径改为数据库后,禁止访问Install.jsp页面,否则会丢失修改。@H_502_11@
2 CAS整合
2.1 建立CAS Server
2.2 配置CAS Client
1. 将CAS SSL证书导入到jspWiki所在的JDK中
(1)复制CAS服务器上tomcatsso.crt 文件到%JAVA_HOME%/jre/lib/security。@H_502_11@
(2)然后用下面命令将证书tomcatsso.crt 文件导入到cacerts文件中。@H_502_11@
Cd %JAVA_HOME%/jre/lib/security@H_502_11@
keytool -import -alias tomcatsso -file tomcatsso.crt -keystore cacerts -storepass changeit @H_502_11@
复制cas-client-core-
在web.xml中添加CAS Filter@H_502_11@
<context-param>@H_502_11@
<param-name>contextConfigLocation</param-name>@H_502_11@
<param-value>/WEB-INF/spring-appContext.xml</param-value>@H_502_11@
</context-param>@H_502_11@
<filter>@H_502_11@
<filter-name>CAS Single Sign Out Filter</filter-name>@H_502_11@
<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>@H_502_11@
</filter>@H_502_11@
<filter-mapping>@H_502_11@
<filter-name>CAS Single Sign Out Filter</filter-name>@H_502_11@
<url-pattern>/*</url-pattern>@H_502_11@
</filter-mapping>@H_502_11@
<listener>@H_502_11@
<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>@H_502_11@
</listener>@H_502_11@
@H_502_11@
<filter-name>CAS Authentication Filter</filter-name>@H_502_11@
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>@H_502_11@
<init-param>@H_502_11@
<param-name>targetBeanName</param-name>@H_502_11@
<param-value>casAuthenticationFilter</param-value>@H_502_11@
</init-param>@H_502_11@
<filter-name>CAS Validation Filter</filter-name>@H_502_11@
<param-value>casValidationFilter</param-value>@H_502_11@
</init-param>@H_502_11@
<filter-name>CAS HttpServletRequestWrapperFilter</filter-name>@H_502_11@
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>@H_502_11@
<init-param>@H_502_11@
<param-name>targetBeanName</param-name>@H_502_11@
<param-value>casHttpServletRequestWrapperFilter</param-value>@H_502_11@
<url-pattern>/Login.jsp</url-pattern>@H_502_11@
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>@H_502_11@
</listener>@H_502_11@
4. 插入spring-appContext.xml
在WEB-INF目录下添加spring-appContext.xml文件@H_502_11@
<?xml version="1.0" encoding="UTF-8"?>@H_502_11@
<beans xmlns="http://www.springframework.org/schema/beans"@H_502_11@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"@H_502_11@
xsi:schemaLocation="http://www.springframework.org/schema/beans @H_502_11@
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">@H_502_11@
<bean id="casAuthenticationFilter"@H_502_11@
class="org.jasig.cas.client.authentication.AuthenticationFilter">@H_502_11@
<property name ="casServerLoginUrl" value="https://www.test.com:443/cas-server/login"/>@H_502_11@
<property name ="serverName" value="http://192.168.0.116:8080"/>@H_502_11@
</bean>@H_502_11@
<bean id="casValidationFilter"@H_502_11@
class="org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter">@H_502_11@
<property name="ticketValidator">@H_502_11@
<ref bean="Cas20ProxyTicketValidator"/>@H_502_11@
</property> @H_502_11@
<property name="useSession" value="true"/>@H_502_11@
<property name="serverName" value="http://192.168.0.116:8080"/>@H_502_11@
<property name="redirectAfterValidation" value="false"/>@H_502_11@
</bean>@H_502_11@
@H_502_11@
<bean id="Cas20ProxyTicketValidator"@H_502_11@
class="org.jasig.cas.client.validation.Cas20ProxyTicketValidator">@H_502_11@
<constructor-arg index="0" value="https://www.test.com:443/cas-server" />@H_502_11@
<bean id="casHttpServletRequestWrapperFilter"@H_502_11@
class="org.jasig.cas.client.util.HttpServletRequestWrapperFilter"/>@H_502_11@
</beans>@H_502_11@
5. 修改jspWiki的Login.jsp文件
注释掉@H_502_11@
@H_502_11@
/* @H_502_11@
if( wikiSession.isAuthenticated() )@H_502_11@
{@H_502_11@
response.sendError( HttpServletResponse.SC_FORBIDDEN,@H_502_11@
rb.getString("login.error.noaccess") );@H_502_11@
return;@H_502_11@
}@H_502_11@
*/@H_502_11@
6. 修改jspWiki的logout.jsp文件
response.sendRedirect("https://www.test.com:443/cas-server/logout?url=http://192.168.0.116:8080/wiki");@H_502_11@