Developing New Data Types with Plone


Published on

Delivering New Data Types With Plone NWU

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Developing New Data Types with Plone

  1. 1. Delivering New Data Types With Plone: © Blackboard, Inc. © Northwestern University All rights reserved. A Building Block for Versatile Content Management Patricia Goldweic, Brian Nielsen Northwestern University
  2. 2. Abstract <ul><li>Northwestern University has developed a Blackboard Building Block that offers users a versatile open source content management system called Plone. Plone provides workflow capabilities and extensible content types to allow unique functionalities for Blackboard users. Using Plone as the image repository, an image zooming and annotation tool will be demonstrated. </li></ul>
  3. 3. Session Overview <ul><li>Northwestern’s environment and history with Building Blocks </li></ul><ul><li>The Problem: How many times will we have to do this? </li></ul><ul><li>The Application Link Maker B 2 and Plone </li></ul><ul><li>How does it work? </li></ul><ul><li>Demonstration: Plone and Project Pad within Bb </li></ul><ul><li>Q & A </li></ul>
  4. 4. About Northwestern University <ul><li>Private research university with ~20,000 students, </li></ul><ul><li>Bb customer since early 1999 </li></ul><ul><li>Learning System, PeopleSoft integration, use of other Blocks, e.g. SafeAssignment, eLMS </li></ul>
  5. 5. NU’s Earlier B 2 Development <ul><li>The “Depot” block: login integration with a local Xythos system , and document serving in content areas </li></ul><ul><li>The RefWorks block: login integration and provision of bibliographies in content areas </li></ul>
  6. 6. NU’s Earlier B 2 Development <ul><li>The “Depot” block: login integration with a local Xythos system, and document serving in content areas </li></ul><ul><li>The RefWorks block: login integration and provision of bibliographies in content areas </li></ul>
  7. 7. How Many Times Will We Have To Do This? <ul><li>Project Pad toolset in Sakai: </li></ul>
  8. 8. Two Possible Solutions <ul><li>Link into a more general-purpose tool (but which? ) </li></ul><ul><li>Make a more generalized linking mechanism for A VARIETY OF tools </li></ul>
  9. 9. Our Answer: the Application Link Maker B 2 And . . .
  10. 10. Plone: <ul><li>An Open Source content management system </li></ul><ul><ul><li>In wide use </li></ul></ul><ul><ul><li>Python-based </li></ul></ul><ul><ul><li>Very flexible </li></ul></ul><ul><ul><li>Well documented and with several service providers </li></ul></ul>
  11. 11. Application Link Maker as A General Purpose Single sign-on Mechanism <ul><li>Application Link Maker B 2 provides 50% of the single sign-on functionality </li></ul><ul><li>Other 50% is provided by a custom authentication ‘module’ (‘tweak’) in the external application that interprets parameters sent in an http request by the B 2 . </li></ul><ul><li>A trust relationship </li></ul>
  12. 12. Exploring the Application Link Maker Side <ul><li>Creates secure links to external app carrying user info (user id, course id, etc.) plus a time-based encrypted token </li></ul><ul><li>Encryption done through a Java class created for NU’s B 2 (EncryptionUtils) </li></ul><ul><li>The same class (or an appropriate port in a different language) used for both the B 2 and the external application </li></ul><ul><li>The Plone integration required porting this class to Python </li></ul>
  13. 13. class <ul><li>Important methods: </li></ul><ul><ul><li>EncryptionUtils (String pass, String id, String algorithm, int delta) - Used on both the building block and the external application </li></ul></ul><ul><ul><li>public String encrypt () – Used only in building block </li></ul></ul><ul><ul><li>public boolean verify (String given) – Used only in external application </li></ul></ul>
  14. 14. http request resource location one-way encryption key user identity course identity timestamp any other parameters
  15. 15. Receiver Processing confirms valid encryption: (user identity and timestamp) logs user on places user in “course”
  16. 16. Package package; import*; import java.util.*; import*; import; /** * * This class implements a simple encryption (hashing) algorithm as follows: * * It provides the ability to: * - Encrypt a (string) password given as additional inputs a user id string, and a MessageDigest algorithm * (method 'encrypt'). The encryption is time-based and it is done using the MessageDigest class in * the JSDK, and using as inputs the string, the user id and the current time. * - Verify whether a given (encrypted) string has been obtained using the previous mechanism and * passes the 'time' test (that is, whether the encryption and verification happen within a restricted * time frame). (method: 'verify). * * * @author Patricia Goldweic */ public class EncryptionUtil { /** This algorithm's password */ private String m_pass; . . . (available, site TBD)
  17. 17.
  18. 18. Q & A