eXo Platform 3.0

- Prev
- Next

## Chapter 7. System Integration

This chapter will help you integrate eXo Platform 3.0 to your information system.

## Authentication

### SSO

When logging into the portal, users gain access to many systems through portlets using a single identity. However, in many cases the portal infrastructure must be integrated with other SSO enabled systems. There are many different Identity Management solutions available. The GateIn documentation gives detailed configuration for different SSO implementation: http://docs.jboss.com/gatein/portal/3.1.0-FINAL/reference-guide/en-US/html_single/index.html#chap-Reference_Guide-SSO_Single_Sign_On.

### Central Authentication Service (CAS)

Central Authentication Service (CAS) is a Web Single Sign-On (WebSSO), developped by JA-SIG as an open-source project. CAS allows users working on different applications to log-in only once be recognized and authentified by all applications. Details about CAS can be found here http://www.ja-sig.org/products/cas/.

The CAS integration consists of two parts; the first part consists of installing or configuring a CAS server, the second part consists of setting up the portal to use the CAS server.

Read the GateIn documentation for more CAS configuration: http://docs.jboss.com/gatein/portal/3.1.0-FINAL/reference-guide/en-US/html_single/index.html#sect-Reference_Guide-Single_Sign_On-CAS_Central_Authentication_Service.

### Kerberos SSO on Active Directory

eXo Portal 3.0 supports Kerberos authentication on a Microsoft Active Directory. You will need to configure both your Active Directory server and the application server.

In this example, we suppose that the complete name of the machine on which Tomcat server runs is ubu.exoua-int, and that it runs on the Linux host (Ubuntu 7.04). This machine must be in a Windows domain.

Our implementation makes it possible to use SPNEGO or NTLM. The client will get two authentication headers 'Negotiate' and 'NTLM' and will use whichever is supported by the browser. In Firefox it is possible to manage authentication types, but it isn't in IE, therefore SPNEGO will be used.

Reference guide for configuring Kerberos SSO: NEED LINK

## Users integration

### Organization Service

To specify the initial Organization configuration, the content of yourextension.war:/WEB-INF/conf/organization/organization-configuration.xml should be edited. This file uses the portal XML configuration schema. It lists several configuration plugins.

The plugin of type org.exoplatform.services.organization.OrganizationDatabaseInitializer is used to specify a list of membership types, a list of groups, and a list of users to be created.

### Memberships, Groups and Users

The predefined membership types are specified in the membershipType field of the OrganizationConfig plugin parameter.

    <field name="membershipType">
      <collection type="java.util.ArrayList">
        <value>
          <object type="org.exoplatform.services.organization.OrganizationConfig$MembershipType">
            <field name="type">
              <string>member</string>
            </field>
            <field name="description">
              <string>member membership type</string>
            </field>
          </object>
        </value>
        <value>
          <object type="org.exoplatform.services.organization.OrganizationConfig$MembershipType">
            <field name="type">
              <string>owner</string>
            </field>
            <field name="description">
              <string>owner membership type</string>
            </field>
          </object>
         </value>
       </collection>
    </field>

The predefined groups are specified in the group field of the OrganizationConfig plugin parameter.

    <field name="group">
      <collection type="java.util.ArrayList">
        <value>
          <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
            <field name="name">
              <string>portal</string>
            </field>
            <field name="parentId">
              <string></string>
            </field>
            <field name="type">
              <string>hierachy</string>
            </field>
            <field name="description">
              <string>the /portal group</string>
            </field>
          </object>
        </value>
        <value>
          <object type="org.exoplatform.services.organization.OrganizationConfig$Group">
            <field name="name">
              <string>community</string>
            </field>
            <field name="parentId">
              <string>/portal</string>
            </field>
            <field name="type">
              <string>hierachy</string>
            </field>
            <field name="description">
              <string>the /portal/community group</string>
            </field>
          </object>
        </value>
        ...
      </collection>
    </field>

The predefined users are specified in the membershipType field of the OrganizationConfig plugin parameter.

    <field name="user">
      <collection type="java.util.ArrayList">
        <value>
          <object type="org.exoplatform.services.organization.OrganizationConfig$User">
            <field name="userName"><string>root</string></field>
            <field name="password"><string>exo</string></field>
            <field name="firstName"><string>root</string></field>
            <field name="lastName"><string>root</string></field>
            <field name="email"><string>exoadmin@localhost</string></field>
            <field name="groups"><string>member:/admin,member:/user,owner:/portal/admin</string></field>
          </object>
        </value>
        <value>
          <object type="org.exoplatform.services.organization.OrganizationConfig$User">
            <field name="userName"><string>exo</string></field>
            <field name="password"><string>exo</string></field>
            <field name="firstName"><string>site</string></field>
            <field name="lastName"><string>site</string></field>
            <field name="email"><string>exo@localhost</string></field>
            <field name="groups"><string>member:/user</string></field>
          </object>
        </value>
        ...
      </collection>
    </field>

### Organization API

The exo.platform.services.organization package has five main components: user, user profile, group, membership type and membership. There is an additional component that serves as an entry point into Organization API - OrganizationService component, that provides handling functionality for the five components. For more details, take a look at the GateIn documentation .

## Email

The e-mail service can use any SMTP account configured in $JBOSSHOME/server/default/conf/gatein/configuration.properties (or $TOMCATHOME/gatein/conf/configuration.properties if you are using Tomcat).

The relevant section looks like:

    # EMail
    gatein.email.smtp.username=
    gatein.email.smtp.password=
    gatein.email.smtp.host=smtp.gmail.com
    gatein.email.smtp.port=465
    gatein.email.smtp.starttls.enable=true
    gatein.email.smtp.auth=true
    gatein.email.smtp.socketFactory.port=465
    gatein.email.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory

It is preconfigured for GMail, so that any GMail account can easily be used (simply use the full GMail address as username, and fill-in the password).

In corporate environments you will want to use your corporate SMTP gateway. When using it over SSL, like in default configuration, you may need to configure a certificate truststore, containing your SMTP server's public certificate. Depending on the key sizes, you may then also need to install Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files for your Java Runtime Environment.

- Prev
- Up
- Home
- Next