<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Latest posts for the topic "[v2.1.7] Cookie-based JForum Single Sign-On (SSO)"]]></title>
		<link>http://www.andowson.com/posts/list/7.page</link>
		<description><![CDATA[Latest messages posted in the topic "[v2.1.7] Cookie-based JForum Single Sign-On (SSO)"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>[v2.1.7] Cookie-based JForum Single Sign-On (SSO)</title>
				<description><![CDATA[ JForum預設cookie-based的sso.implementation是net.jforum.sso.CookieUserSSO，但是原始碼並沒有這個CookieUserSSO類別，所以如果我們照著[url=http://www.jforum.net/doc/SSOcookies]文件[/url]做會失敗。<br /> <br /> 在此附上一份經過實際測試沒有問題的CookieUserSSO.java及CookieUserSSO.class檔，如果您的需求是很單純的用Cookie來作Single Sign-On，則下載後重新編譯，將編譯後的class檔放到WEB-INF/classes/net/jforum/sso目錄下，然後重新載入JForum即可。<br /> [code]package net.jforum.sso;<br /> <br /> import javax.servlet.http.Cookie;<br /> import net.jforum.context.RequestContext;<br /> import net.jforum.JForumExecutionContext;<br /> import net.jforum.ControllerUtils;<br /> import net.jforum.entities.UserSession;<br /> import net.jforum.util.preferences.ConfigKeys;<br /> import net.jforum.util.preferences.SystemGlobals;<br /> import org.apache.log4j.Logger;<br /> <br /> public class CookieUserSSO implements SSO {<br /> <br /> 	static final Logger logger = Logger.getLogger(CookieUserSSO.class.getName());<br /> <br /> 	public String authenticateUser(RequestContext request) {		<br /> 		// myapp login cookie, contain logged username<br /> 		Cookie myCookie = ControllerUtils.getCookie(<br /> 				SystemGlobals.getValue(ConfigKeys.COOKIE_NAME_USER));		<br /> 		String username = null;<br /> 		<br /> 		if (myCookie != null) {<br /> 			username = myCookie.getValue();		<br /> 		}		 <br /> 		return username; // jforum username<br /> 	}<br /> <br /> 	public boolean isSessionValid(UserSession userSession, RequestContext request) {<br /> 		Cookie SSOCookie = ControllerUtils.getCookie(<br /> 				SystemGlobals.getValue(ConfigKeys.COOKIE_NAME_USER)); // myapp login cookie		<br /> 		String remoteUser = null;<br /> 		<br /> 		if (SSOCookie != null) {<br /> 			remoteUser = SSOCookie.getValue(); //  jforum username<br /> 		}<br /> <br />         // user has since logged out<br />         if(remoteUser == null && <br />                 userSession.getUserId() != SystemGlobals.getIntValue(ConfigKeys.ANONYMOUS_USER_ID)) {<br /> 			return false;<br />         // user has since logged in<br />         } else if(remoteUser != null && <br />                 userSession.getUserId() == SystemGlobals.getIntValue(ConfigKeys.ANONYMOUS_USER_ID)) {<br />             return false;<br />         // user has changed user<br />         } else if(remoteUser != null && !remoteUser.equals(userSession.getUsername())) {<br />             return false;<br />         }<br />         return true; // myapp user and forum user the same<br /> 	}<br /> }<br /> [/code]<br /> <br /> 另外，還要設定一下jforum-custom.conf，設定範例如下：<br /> [quote]authentication.type=sso<br /> sso.implementation=net.jforum.sso.CookieUserSSO<br /> sso.redirect=[color=red]http://member.andowson.com/login.jsp[/color]<br /> cookie.name.user=[color=red]username[/color][/quote]<br /> 紅色字體部分即是您需要依您實際狀況修改的地方，例如上面的例子意思是您的會員登入是在member.andowson.com控管，而login.jsp在驗證完畢後，會寫入一個username的cookie（domain需是andowson.com)，並讀出returnUrl參數來導回到原來的網址去。<br /> <br /> 參考資料：<br /> http://www.jforum.net/posts/list/3619.page]]></description>
				<guid isPermaLink="true">http://www.andowson.com/posts/preList/72/94.page</guid>
				<link>http://www.andowson.com/posts/preList/72/94.page</link>
				<pubDate><![CDATA[Fri, 18 May 2007 07:55:55]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:[v2.1.7] Cookie-based JForum Single Sign-On (SSO)</title>
				<description><![CDATA[ 最近我也在研究JForum的單點登錄，歡迎感興趣的朋友訪問《JForum與JOSSO集成單點登錄》：[url]http://www.jeedao.net/posts/list/44.page[/url]]]></description>
				<guid isPermaLink="true">http://www.andowson.com/posts/preList/72/111.page</guid>
				<link>http://www.andowson.com/posts/preList/72/111.page</link>
				<pubDate><![CDATA[Fri, 25 May 2007 00:22:19]]> GMT</pubDate>
				<author><![CDATA[ windstorm]]></author>
			</item>
	</channel>
</rss>
