Page authors

  • Scott Fehrman
    April 4, 2012
  • Derrick Harcey
    December 30, 2011
  • Terry Sigle
    December 19, 2011
Release 2.x‎ > ‎

Notes: 2.0

Release 2.0 of Project OpenPTK builds on the success of Release 1.x. The goal ... enable developers to create custom interfaces to a variety of repositories ... has not changed.  Release 2.0 gives the developer more choices for how they want to create custom interfaces. Release 2.0 also supports more back-end repositories. The "core" Framework Tier has also been enhanced to include "models", authentication, authorization, pre-actions, post-actions.

Following features, enhancements and resolved issues are new in Release 2.0:


Servlet-Based (Engine Architecture)

Problem

Release 1.x was a monolithic design.  The OpenPTK architecture was "packaged" with the application and deployed as a single unit.  This made it difficult and near impossible to separate the OpenPTK Framework and Services from the application and maintain and manage them as separate components from the developers application or client.

Solution

A client-server design ... OpenPTK Release 2.0 user a client-server design allowing the "client" to communicate to the "server" as an "Engine" taking client requests, applying the proper authentication, authorization, encryption, etc and fulfilling these requests with back-end services.  The new "Engine", is made up from the architecture components below from the:

  • Server Tier
  • Framework Tier
  • Service Tier


RESTful-based Web Service

Problem

Web 2.0 Developers are leveraging a variety of tools and languages to build end-user interfaces. Solutions are being built (such as AJAX) which require a standardized mechanism to access information. These types of applications typically use a RESTful Web Service which supports standard JSON/XML data structures.

Solution

In Release 2.0, OpenPTK's "Server Tier" provides the RESTful Web Service (supporting JSON and XML).  The RESTful Web Service offers multiple ways to "represent" the data between the Server and the applications. Bi-directional data can be represented using either JSON or XML syntax. 

Service / Operation Level Configuration

Problem

In Release 1.x, OpenPTK's Service architecture is used to define and implement access to a provisioning backing-store (SPML, JNDI, LDAP).  A Service provided an implementation of some or all of the OpenPTK Framework "operations" (Create, Read, Update, Delete, ...). All "operations" when to the same backing-store.

Solution

In Release 2.0, OpenPTK's Service architecture separates the definition and implementation of access to the various provisioning backing-stores.  A Service can be configured where each Operation could reference a different backing-store. For example, a Service, related to a Context could have its CREATE, UPDATE, and DELETE Operations use SPML, while its READ and SEARCH Operations use JNDI.




Client-Side Java API

Problem

Release 1.x had little in the way of a Client-side Java API.

Solution

Release 2.0 includes a fully documented Client-Side Java API that includes only those classes necessary for a client to connect over REST to the OpenPTK Server Tier implementing all connection, encryption, conversion of the contents to/from the OpenPTK Server.  The Client-Side Java API can always be reached at:




Authentication

Problem

Release 1.x didn't include authentication to the OpenPTK framework or services.  It was up to the implementer to include their own authentication framework.

Solution

Refer to the detailed design and implementation notes on Release 2.0 Authentication.



Authorization

Problem

Release 1.x didn't include authentication to the OpenPTK framework or services.  It was up to the implementer to include their own authentication framework.

Solution

Refer to the detailed design and implementation notes on Release 2.0 Authorization.



Models, Views and Relationships

Problem

Release 1.x didn't include any ability to connect up back end services to one another resulting in a model made up of views and relationships between these services.  It was up to the implementor to do create and implement their own connections.

Solution

Refer to the detailed design and implementation notes on Release 2.0 Models, Views and Relationships.



Actions

Problem

In Release 1.x, OpenPTK was focused on performing basic operations within Contexts such as basic CRUD operations (Create, Read, Update and Delete) and few more around passwords.  Outside of performing these basic data tasks, there was no facility to perform other actions, such as sending an email.

Solution

Release 2.0 includes the ability to define pre and post actions to a particular operation.  An example action might be the sending of an email:


 This simple action is contained as part of the create operation of a context within the OpenPTK config file.

    <Action id="notify" mode="post">
        <Properties>
            <Property name="sendemail.subject"      value="Your Account has been created"/>
            <Property name="sendemail.fromaddress"  value="%{email.fromaddress}" />
            <Property name="sendemail.toaddress.attribute" value="email" />
            <Property name="template.document"      value="EmailTemplate-AccountCreated" />
        </Properties>
    </Action>

The Operation Actions define the notify action.

    <OperationActions>
        <Action id="notify" classname="org.openptk.context.actions.Notify">
            <Properties>
                <Property name="plugin.template" value="template"/>
                <Property name="plugin.email"    value="sendemail"/>
            </Properties>
        </Action>
        ...
    </OperationActions>

The Plugins define the sendmail and template plugins.

    <Plugins>
        <Plugin id="sendemail" ... classname="org.openptk.plugin.sendemail.SendEmailPlugin">
            <Properties>
                ...
            </Properties>
        </Plugin>
        <Plugin id="template" ... classname="org.openptk.plugin.template.TemplatePlugin">
            <Properties>
                ...
            </Properties>
        </Plugin>
    </Plugins>


Encryption

Problem

What is the basic problem being solved from Release 1.x

Solution

What is the solution implemented in Release 2.x


Templates

Problem

What is the basic problem being solved from Release 1.x

Solution

What is the solution implemented in Release 2.x


Definition Functions

Problem

What is the basic problem being solved from Release 1.x

Solution

What is the solution implemented in Release 2.x


Enhanced Search

Problem

What is the basic problem being solved from Release 1.x

Solution

What is the solution implemented in Release 2.x


Services

Problem

What is the basic problem being solved from Release 1.x

Solution

Release 2.0 implemented the following new services:

Starting with 2.0 the following services will stop being enhanced, tested and included in binary distributions, and are candidates to be removed from the repository at anytime.  The code and projects will be left around for example and experimental use going forward.
  • SPML v1
  • SPE

Release 2.0


Resolved Issues

Issue Description
OPENPTK-166 Support quoted arguments/values in CLI
OPENPTK-182 Handle unsuccessful deletes in CLI with better return message
OPENPTK-187 HTTP Response Codes for no content results
OPENPTK-188 JNDI doDelete() should return a SUCCESS when uniqueId not found
OPENPTK-193 Invalid connection uri causes NullPointer
OPENPTK-194 CLI continues after USER session expires
OPENPTK-195 CLI handling offline services
OPENPTK-206 ReAuthenticating after closing connection fails
OPENPTK-216 CLI Search Output causes extra data in header
OPENPTK-219 OIM 11g Service returns an error when no search arguments are provided
OPENPTK-247 Need to remove stale openptk.tld's in Server, IdentityCentral, UML, Register
OPENPTK-249 Long values are processed as generic Objects
OPENPTK-258 JDBC Primary Key using integer with a Context fails to return correct uniqueid on read and search operations
OPENPTK-264 No symbol or space is allowed in the context key or uniqueid
OPENPTK-266 uniqueid can not contain space
OPENPTK-271 Removal/Cleanup of passwords from any logging
OPENPTK-272 Subject uniqueid's are being lost when both the Connection getStructureFromInput and SubjectRepresentation processSubjectInput run
OPENPTK-274 ptkadmin utility is not generating encrypted values
OPENPTK-275 Incompatible oimclient.jar file
OPENPTK-281 ServerAuthFilter doesn't use cookie from request headers
OPENPTK-282 CLI: unclear error message for UPDATE operation
OPENPTK-292 LDAP Search is broken when query string has space in it
OPENPTK-306 Double Quoating an attributeKey in the CLI update command causes an invalid exception

New Features

Issue
Description
OPENPTK-28 Design authentication features
OPENPTK-29 Design authorization features
OPENPTK-154 Configure Context for JavaDB with JDBC Service
OPENPTK-199 Service for Oracle Id Mgr Registration
OPENPTK-200 Registration sample application
OPENPTK-201 Oracle Id Mgr 11g API Service
OPENPTK-202 Service specific validation of forgotten password data
OPENPTK-203 Configure and test JDBC Service with Oracle DB
OPENPTK-210 Shell script to run API tests
OPENPTK-211 Taglib for getting existing session type and principal information
OPENPTK-212 Add a tag in the tag library to get client connection property
OPENPTK-223 Decouple the Web Interface components from OpenPTK Server .war
OPENPTK-228 Create Oracle Request Service/Operations
OPENPTK-250 Association table mapping
OPENPTK-261 Additional JSR-168 Portlet for Registration
OPENPTK-268 Create Timer utility class for timings
OPENPTK-302 Frequent service down

Improvements

Issue
Description
OPENPTK-124 Create an LDAP Service using UnboundID LDAP SDK
OPENPTK-135 Identity Central Interface
OPENPTK-141 Add principal to all log entries
OPENPTK-162 Document Removal of User Interface from Server
OPENPTK-164 Extend Client API and Taglibs to support context get/set
OPENPTK-167 build process update
OPENPTK-176 Client API does not allow sharing of existing session information
OPENPTK-179 Update doCreate TAG to return uniqueId
OPENPTK-191 Add Actions to /resources/engine interface
OPENPTK-208 Enhance Setup.getConnection() to indicate different types of failures
OPENPTK-213 Return Un-Authorized Operation Error Code
OPENPTK-220 Centralize logging
OPENPTK-224 Enhance the openptkconfig authenticator to use encrypted password
OPENPTK-225 Create wrapper execution script for ptkadmin utility
OPENPTK-226 Change the CLI command line binary to "openptk"
OPENPTK-227 Change Response.results to use ComponentIF interface
OPENPTK-230 Use existing SessionId to get a Connection via a JSP Tag
OPENPTK-241 Create OpenPTK-LDAP project
OPENPTK-242 Add Component setState methods to set default Error flags and message
OPENPTK-244 Capture operation STATISTICS in the Command Line Interface (CLI)
OPENPTK-245 Capture operation TIMINGS in the Command Line Interface (CLI)
OPENPTK-246 Create Global Encryptor Singleton instance
OPENPTK-251 Enhance UnboundID LDAPSDK to use connection pools
OPENPTK-252 Improve the OpenPTK Logger to support multiple logging instances for different applications within a single JVM
OPENPTK-253 Enhance UnboundID LDAPSDK to use In-Memory Directory
OPENPTK-257 Create OPENPTK HOME
OPENPTK-259 Add Glassfish Embedded Server into QuickInstall/Demo environment
OPENPTK-263 Support resource request for oracle OIM 11g
OPENPTK-269 Improve the confusing env, show and set CLI commands
OPENPTK-270 Improve the use of the contexts CLI command
OPENPTK-277 Add OpenPTK prefix to system type logging
OPENPTK-285 Clean input for JDBC Service
OPENPTK-287 Release cycle process issues with openptk.xml and openptk_client.properties
OPENPTK-290 Implement LDAP FailoverServerSet with UnboundID service
OPENPTK-295 Support encrypted password for plugin.sendemail.authen.password in openptk.xml