<?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>https://forum.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 &amp;&amp; 
<br>
 userSession.getUserId() != SystemGlobals.getIntValue(ConfigKeys.ANONYMOUS_USER_ID)) { 
<br>
 return false; 
<br>
 // user has since logged in 
<br>
 } else if(remoteUser != null &amp;&amp; 
<br>
 userSession.getUserId() == SystemGlobals.getIntValue(ConfigKeys.ANONYMOUS_USER_ID)) { 
<br>
 return false; 
<br>
 // user has changed user 
<br>
 } else if(remoteUser != null &amp;&amp; !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 
<br>
http://www.coderanch.com/t/577176/jforum/Cookie-based-SSO]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/72/94.page</guid>
				<link>https://forum.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] 
<br>
備用網址:[url]http://pipo.iteye.com/blog/82999[/url]]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/72/111.page</guid>
				<link>https://forum.andowson.com/posts/preList/72/111.page</link>
				<pubDate><![CDATA[Fri, 25 May 2007 00:22:19]]> GMT</pubDate>
				<author><![CDATA[ windstorm]]></author>
			</item>
			<item>
				<title>[v2.1.7] Cookie-based JForum Single Sign-On (SSO)</title>
				<description><![CDATA[ 很神奇的功能,如果在网站中用的密码，在jforum中登陆好用吗]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/72/1311.page</guid>
				<link>https://forum.andowson.com/posts/preList/72/1311.page</link>
				<pubDate><![CDATA[Tue, 17 Jun 2014 14:00:26]]> GMT</pubDate>
				<author><![CDATA[ xiaofanku]]></author>
			</item>
	</channel>
</rss>