`
阅读更多
转载:http://www.jeedao.net/posts/list/0/44.page

  本文以JForum v2.1.7和JOSSO v1.5为例说明,JForum论坛单点登录的集成。
  JForum在设计之初就考虑了与其它系统进行SSO单点登录集成的接口,你需要做的是:
# 编写一个对接口net.jforum.sso.SSO.java的实现类。
# 修改配置文件“SystemGlobals.properties”,更改JForum的认证模式。
# 对JOSSO和jforum的相关配置文件进行设置。
  要与JOSSO集成,当然是先到http://www.josso.org/去下载一个JOSSO啦,呵呵。我下载的是“apache-tomcat-5.5.20_josso-1.5.zip”,这个包已经把大部分的配置设置好了,你不需要进行太多的设置工作。
  下面我们来看看整个配置过程吧:
  解开“apache-tomcat-5.5.20_josso-1.5.zip”得到目录“apache-tomcat-5.5.20_josso-1.5”,我们把jforum论坛拷贝到“\apache-tomcat-5.5.20_josso-1.5\webapps”目录下。
  出于实验目的我们需要先在jforum论坛中注册一个用户“user1”,所以我们先启动tomcat,注册一个用户名为“user1”的论坛用户。
  打开“\apache-tomcat-5.5.20_josso-1.5\bin”目录下的“josso-agent-config.xml”配置文件,参照原来的配置增加以下配置描述:
Code:

引用
<partner-app>
   <context>/jforum</context>
</partner-app>



为JForum论坛编写单点登录实现类,代码如下:
Code:

package net.jforum.sso;
 
 import net.jforum.context.RequestContext;
 import net.jforum.JForumExecutionContext;
 import net.jforum.entities.UserSession;
 import net.jforum.util.preferences.ConfigKeys;
 import net.jforum.util.preferences.SystemGlobals;
 import org.apache.log4j.Logger;
 
 public class Josso implements SSO {
 
         static final Logger logger = Logger.getLogger(Josso.class.getName());
 
         public String authenticateUser(RequestContext request) {        
                 String remoteUser = null;
                 
                 remoteUser = request.getRemoteUser();
                 logger.info("remoteUser:" + remoteUser);
                 
                 if(remoteUser == null) {
                         JForumExecutionContext.setRedirect(SystemGlobals.getValue(ConfigKeys.SSO_REDIRECT));
                         return null;
                 }
                 
                 if (remoteUser == null || remoteUser.trim().equals("")) {
                         JForumExecutionContext.setRedirect(SystemGlobals.getValue(ConfigKeys.SSO_REDIRECT));
                         return null; // no user found
                 } 
 
                 return remoteUser; // jforum username
         }
 
         public boolean isSessionValid(UserSession userSession, RequestContext request) {
 
                 String remoteUser = null;
                 
                 remoteUser = request.getRemoteUser(); //  jforum username
                 logger.info("remoteUser:" + remoteUser);
 
         // user has since logged out
         if(remoteUser == null && 
                 userSession.getUserId() != SystemGlobals.getIntValue(ConfigKeys.ANONYMOUS_USER_ID)) {
                         return false;
         // user has since logged in
         } else if(remoteUser != null && 
                 userSession.getUserId() == SystemGlobals.getIntValue(ConfigKeys.ANONYMOUS_USER_ID)) {
             return false;
         // user has changed user
         } else if(remoteUser != null && !remoteUser.equals(userSession.getUsername())) {
             return false;
         }
         return true; // myapp user and forum user the same
         }
 }



  
引用
更改JForum的配置文件“SystemGlobals.properties”:

    authentication.type = sso
    sso.implementation = net.jforum.sso.Josso
 



  更改JForum论坛的web.xml文件,在web.xml文件增加以下配置:
Code:

<security-constraint>
         <!-- Sample Security Constraint -->
         <web-resource-collection>
 
             <!-- We're going to protect this resource and make it available only to users in "role1". -->
             <web-resource-name>public-resources</web-resource-name>
 
             <url-pattern>/resources/*</url-pattern>
 
             <http-method>HEAD</http-method>
             <http-method>GET</http-method>
             <http-method>POST</http-method>
             <http-method>PUT</http-method>
             <http-method>DELETE</http-method>
 
         </web-resource-collection>
 
         <!--
         No roles required, it means that this are public resources !
         Usefull to tell JOSSO that resources matching this security constraint
         should not be subject to SSO protection.
         -->
 
     </security-constraint>
 
     <security-constraint>
         <!-- Sample Security Constraint -->
         <web-resource-collection>
 
             <!-- We're going to protect this resource and make it available only to users in "role1". -->
             <web-resource-name>protected-resources</web-resource-name>
 
             <url-pattern>/josso/*</url-pattern>
             <url-pattern>/protected/*</url-pattern>
             <url-pattern>/forums/*</url-pattern>
 
             <http-method>HEAD</http-method>
             <http-method>GET</http-method>
             <http-method>POST</http-method>
             <http-method>PUT</http-method>
             <http-method>DELETE</http-method>
 
         </web-resource-collection>
 
         <!-- NOTE: This role names will be retrieved by Josso using the propper identity store. -->
         <auth-constraint>
             <role-name>role1</role-name>
         </auth-constraint>
 
         <user-data-constraint>
             <transport-guarantee>NONE</transport-guarantee>
         </user-data-constraint>
 
     </security-constraint>
 
     <!-- We only need tomcat to redirect the user -->
     <login-config>
 
         <auth-method>FORM</auth-method>
 
         <form-login-config>
             <!--
             NOTE: This will redirect the user to the propper login page provided by JOSSO.
             -->
             <form-login-page>/login-redirect.jsp</form-login-page>
             <form-error-page>/login-redirect.jsp</form-error-page>
 
         </form-login-config>
 
     </login-config>
 
     <security-role >
         <description>Role 1</description>
         <role-name>role1</role-name>
     </security-role>



  好了,现在你重新启动tomcat,并访问论坛:http://localhost:8080/jforum/forums/list.page
  呵呵,页面被重定向到JOSSO的用户登录页面去了。请在登录页面输入用户名:user1,密码:user1pwd,成功登录后页面会自动重定向到 http://localhost:8080/jforum/forums/list.page,并且jforum论坛显示用户:user1已经处于在线登录状态了。
  细心查看JForum论坛的页面你会发现,论坛中的退出按钮已经不见了,这是因为退出功能应该由你的JOSSO来实现的原因。还有就是那个JForum原来的那个登录输入框也没有了。
  呵呵,别以为你已经完成单点登录的整合了哦,还有很多工作要做呢。例如,用户注册的时候你必须同时把jforum论坛必须的信息也保存到jforum论坛的相关库表中;你需要为论坛安置一个正确的退出按钮连接;你需要美好JOSSO的登录界面等。
分享到:
评论

相关推荐

    josso+tomcat配置之josso服务器配置(一)[参考].pdf

    josso+Tomcat配置之josso服务器配置 josso是基于Java的单点登录(SSO)服务器,能够提供身份验证和授权服务。Tomcat是Apache软件基金会开发的开源Java servlet容器。配置josso服务器需要将josso war文件部署到...

    单点登录JOSSO中间件

    JOSSO,全称为Java Open Single Sign-On Project,是一个开源的单点登录解决方案,旨在简化企业环境中多应用系统的身份验证流程。 JOSSO中间件的核心功能是提供一个中央身份验证服务(Central Authentication ...

    Josso2.3 译文

    JOSSO,全称Java Open Single Sign-On Project,是一个开源的身份认证和授权框架,专注于提供单点登录(Single Sign-On, SSO)解决方案。在JOSSO2.3版本中,它支持在Apache Tomcat这样的Java应用服务器上部署和运行...

    JOSSO实现SSO

    ### JOSSO 实现 SSO 的关键技术点 #### 一、JOSSO 概述 JOSSO(Java Open Single Sign-On)是一个开源的、基于 J2EE 的单点登录(Single Sign-On, SSO)基础设施。其核心目标是为用户提供一种集中式、平台无关的...

    GlassFish+josso单点登录

    ### GlassFish + Josso + MySQL 实现单点登录详解 #### 一、引言 随着企业信息化建设的深入,多系统间的用户身份认证与管理变得日益复杂。为了解决这一问题,单点登录(Single Sign-On,简称SSO)技术应运而生。...

    Glassfish + josso 单点登录范例

    ### Glassfish + Josso 单点登录实现及MD5加密技术详解 #### 一、引言 在现代企业级应用中,单点登录(Single Sign-On, SSO)已成为提高用户体验、增强安全性的重要手段之一。本文将详细介绍如何利用Glassfish应用...

    PyPI 官网下载 | python-josso-auth-0.1.3.tar.gz

    《Python-Josso-Auth库详解与应用》 在Python的开发世界中,后端库的选用至关重要,它们能够极大地提升开发效率并提供强大的功能支持。"python-josso-auth"是一个专门针对身份验证(Authentication)和授权...

    loginServer CAS / josso / LDAP / RBAC / ACL

    标题中的"loginServer CAS / josso / LDAP / RBAC / ACL"涉及到了多个IT领域的关键概念,这些都是构建安全、高效的企业级身份验证和授权系统的重要组成部分。以下是对这些概念的详细解释: 1. **CAS(Central ...

    josso2:第二代JOSSO(Java开放式单点登录)

    JOSSO,全称为Java Open Single Sign-On Project,是一个基于Java平台的开源单点登录(Single Sign-On,简称SSO)解决方案。第二代JOSSO(josso2)旨在提供一个标准化、可扩展且安全的SSO框架,使得用户在访问多个...

    josso-1.8.0-src.zip_Java 8_certificate x.509_java登录授权_sso 即插即用

    一个开源的J2EE-based的SSO(SSO:单一登录技术是一种认证和授权机制,它允许注册用户只需要在任一成员网站上登录一次,而后授权访问其他连接的分支网站,无需再进行验证登录)基础结构.它的目的是提供一种用来解决在...

    josso-final

    "josso-final"这个标题可能指的是一个Java项目或者框架的最终版本,可能是“Java Security and Single Sign-On”(Java安全和单点登录)的简称。单点登录(Single Sign-On, SSO)是一种身份验证机制,允许用户在一次...

    JOSSO-开源

    Atricore的JOSSO是一种开源且受商业支持的Internet单点登录(FSSO)解决方案,用于点击和基于标准(SAML2)的Internet规模SSO实施。 欲了解更多信息,请通过以下网址与我们联系:http://www.josso.org

    单点登录分析报告.pdf

    本文主要分析两种常见的SSO实现框架——JOSSO(Java Open Single Sign-On)和CAS(Central Authentication Service)。 JOSSO是一个基于Java和J2EE的开源SSO框架,其主要特点如下: 1. 100% Java实现,利用了JAAS...

    single sign on 分析报告

    JOSSO采用JAAS(Java Authentication and Authorization Service)标准,支持Web服务/SOAP、EJB、Struts、Servlet/JSP等技术,实现平台无关的用户验证。JOSSO的设计旨在简化SSO的实施和管理,适用于多应用环境。 ...

    SSO学习有CAS SSO配置.doc

    JOSSO(Java Open Single Sign-On)是另一个基于Java的SSO解决方案,尽管其在某些社区中的评价并不高。 学习和实施SSO时,开发者可以参考社区资源,如BEA广州UserGroup的讨论,以及David的博客和其他专家的文章,...

    CAS单点登录的经典配置,以及多数据库的处理方案

    josso 是另一个 Java 写的单点登录产品,通常认为比 OpenSSO 更成熟一些。CAS 是耶鲁大学开发的单点登录产品,也是我们最后选定的单点登录产品。CAS 的优点很多,例如设计理念先进、体系结构合理、配置简单、客户端...

    Single Sign On 分析报告

    JOSSO利用了JAAS、Web服务、EJB、Struts、Servlet/JSP等标准技术,可轻松集成到各种Java环境中,实现平台无关的用户验证。 这些解决方案的存在,为解决企业中的身份验证问题提供了有效工具,既提高了用户工作效率,...

    cas和ldap技术文档

    开源 SSO 软件包括 OpenSSO、JOSSO 和 CAS 等。这些软件通常具有高安全性、灵活性和可扩展性,同时也可以根据需要进行自定义。 4. CAS 介绍 CAS 是耶鲁大学开发的一种单点登录产品,具有先进的设计理念、合理的...

    spring security 中文指南

    - JOSSO、OpenNMS、AppFuse 等第三方认证服务 2. 简化配置与依赖注入 Spring Security 通过依赖注入原理简化了安全配置,使得开发者可以更轻松地集成和自定义安全组件。传统的 Spring Bean 配置方式往往需要手动...

    单点登录单点登录单点登录

    **开源SSO软件**如OpenSSO(基于Sun Java System Access Manager)、JOSSO和CAS(Yale University开发)。开源SSO产品的优势在于成本低、灵活性高,且通常有活跃的社区支持。例如,CAS以其先进的设计理念、合理的...

Global site tag (gtag.js) - Google Analytics