Using Sakai in  Stellar at MIT Mark J. Norton, Nolaria Consulting Craig Counterman, MIT Mark Brown, MIT
The MIT Course Management System is called Stellar designed and built by Craig Counterman. The project was started in 2001 to provide on-line support for existing MIT classes. Quickly grew to support basic support needs:  homework, schedule, forums, etc.
Background and History 2001 :  Stellar project started to provide on-line support for MIT classes. 2002 :  OKI objects added. 2004 :  MIT is a founding partner of the Sakai project. 2005 :  Explored adding Sakai tools. 2006 :  Stellar and Sakai integrated.
Statistics There are 509 classes on Stellar for Spring 2006 (so far). 2729 Stellar class websites have been created since 2001. Of all Stellar class websites 49.7 % are graduate courses and 50.3 % are undergraduate courses. http://stellar.mit.edu
Original Stellar Architecture Plug-in tool capability: Stand alone tools Integrated tools Core objects were based on the emerging OKI OSID specifications. Several presentation technologies  are supported. A diagram shows it better….
Stellar 1 Architecture
Stellar Tools Materials Homework and drop box Schedule and Announcements Sign up for Sections Discussion forum based on Jive Syllabus Etc.
New Tool Development New tools are easy to build in Stellar. The new ImageTool, for example. However, MIT wants to take advantage of the large number of tools being developed for Sakai. A replacement for Jive was needed.
Stellar Home Page
Some Problems Sakai has it’s own portal – Charon. Maintains it’s own user sessions. Runtime includes Component management. Tool state and placements. Preferences, etc. Tools use Sakai’s authorization system.
Solution! Create a null portal that: Accepts requests for Sakai tools Maintains the Sakai user session Creates or finds tool placement as needed Manage other environment concerns This is called LaunchPortal in Stellar. Leads to a new architecture….
Stellar 2 Architecture
Request Processing In stellar, a URL is of the form: nexus/nexus/nexus/tool/tool-arguments Each request is processed to find a tool.   Proxy tools are added to forward a request to the LaunchPortal. The LaunchPortal then forwards it to the appropriate Sakai tool along with a context. Tools return HTML.
Request and Response Flow Stellar Tool Proxy Launch Sakai Tool Aggregator Request Response HTML Content Aggregated Content
Preserving the Sakai Session Stellar uses a regular java.servlet  session and a servlet session cookie for state.   This is the JSESSIONID cookie. Stellar was already using this, so code had to be added to preserve Sakai session information and forward it to the request handler This is done via a HttpServletRequestWrapper  in the proxy tool which eliminates the non-Sakai cookie from the request.
The Launch Portal LaunchPortal is a null portal built by stripping down Mercury to it’s essentials. It still has a very limited UI, but is intended to run without a UI by forwarding requests to appropriate Sakai tools based on incoming tool id.
LaunchPortal public class LaunchPortal extends HttpServlet { public String getServletInfo() public void init(ServletConfig config) throws ServletException protected void doGet(HttpServletRequest req, HttpServletResponse res) protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException protected void doError(HttpServletRequest req, HttpServletResponse res, Session session) throws IOException protected void doHome(HttpServletRequest req, HttpServletResponse res, Session session) protected void doTool(HttpServletRequest req, HttpServletResponse res, Session session, String toolId,    String context, String toolContextPath, String toolPathInfo) throws IOException protected void forwardTool(ActiveTool tool, HttpServletRequest req, HttpServletResponse res, Placement p,   String toolContextPath, String toolPathInfo) protected void showSession(PrintWriter out, boolean html) private void initSession (HttpServletRequest req, HttpServletResponse res, Session session, String context) }
Request Processing The doGet() method is the usual entry point to the LaunchPortal since most are HTTP GET requests. doPost() replicates most of doGet() just in case a POST request is needed.
1.  Logic in doGet() User name is passed in on an attribute. Largely manages paths and URLs. If there is no session, one is created for this user.  This happens in initSession(). Checks for development UI case or, Calls doTool().  Context also passed via an attribute.
2.  Logic in doTool() Gets the Sakai tool associated with the tool id passed. Uses the context to find or create a tool placement, a combination of a tool and a context (usually a site or section). Calls forwardTool().
3.  Logic in forwardTool() Makes sure that attributes are set for the HTML head and style sheet references. Uses the forward() method in the Sakai tool to forward the request to the tool being invoked.
Error Handling Since LaunchPortal is a real servlet, any errors encountered while preparing to launch or transfer to a Sakai tool can be wrapped into an HTML error page. Exception information is logged in catalina.out
Content Aggregation Sakai tools are generally written to appear in an iFrame. Stellar avoids the use of iFrames for accessibility and graphic design reasons. HTML content from Sakai tools will be aggregated via an XML transform.  TBD
JForum in Stellar
Sakai Tool Integration In order for Sakai tools to work fully in the Stellar environment, they must be integrated with user and group data. Sakai includes three providers for integration to enterprise data services: UserDirectoryProvider Implemented GroupProvider Extended CourseManagementProvider Unused
User Integration StellarUserProvider fully implements the UserDirectoryProvider against Stellar user data using a OkapiUser object. User data is currently limited to: First and Last Name Email address (but more data could be added)
Authorization Sakai provides limited support for authorization integration using the GroupProvider API. This provider gives access to group names, membership, and group roles. It does NOT allow authorization grants to be resolved externally.
Extensions to GroupProvider Since Stellar sites are not defined as groups in Sakai, access can’t be determined locally by the Security Service. In order to properly determine authorization requests by Sakai tools against Stellar users and groups, the Group Provider was extended with three methods: isAllowed() isGroup() getAllowedFunctions()
Three New Methods Boolean isAllowed (userId, ftn, realm); Boolean isGroup (groupId); Set getAllowedFunctions(role, groups); More methods than these may be needed to fully support external authorization.  These were the minimal ones needed to make Message Center and Jforum work.
GroupProvider Implementation The StellarGroupProvider is implemented against Stellar Nexus data that contains sites, roster lists, and user roles. This is done directly against Nexus objects, thus avoiding database interaction.
Tool Lessons Learned Sakai tools can be made to work in non-Sakai UI environments using an intermediary to maintain a Sakai session. Some hand-off support is needed to ensure tool ids, context, and arguments. The environment is more flexible than some might think!
Integration Lessons Learned Authorization is at the heart of integration. User and Group info is easy, but authorization can be hard. The Sakai providers are good, but can be improved for greater flexibility.
Future Work External authorization may be better done by re-implementing AuthZGroups rather than via the GroupProvider. Course Management and Sectioning providers will be needed to allow any Sakai tool to run in Stellar.

More Related Content

PPTX
Spring & hibernate
PPTX
java code and document security
PPTX
Introduction to Hibernate Framework
PDF
Hibernate Interview Questions | Edureka
PPTX
Machine Learning Exposed!
PPTX
Skillwise Struts.x
PPT
Adcom2006 Full 6
PDF
Hibernate An Introduction
Spring & hibernate
java code and document security
Introduction to Hibernate Framework
Hibernate Interview Questions | Edureka
Machine Learning Exposed!
Skillwise Struts.x
Adcom2006 Full 6
Hibernate An Introduction

Viewers also liked (19)

PPT
Hkust Sakai China Day Presentation
DOC
Sakai Tool
PDF
Scorm_2004_3rdEd_ RunTimeEnv
PPT
Bupt Sakai Melete
PPT
The Cooperation Of Bupticet And Sakai
PPT
Sakai Portlet V03
PPT
2004 01 10 Chef Sa V01
PDF
Sakai3白皮书
PPSX
Bob Dylan One More Cup Of Coffee
PPT
Our House Finsihed Old Pp
PDF
Configuring Sakai Newport
PDF
Bootstrap
PPT
Strategize! profile
PPSX
Barcelona Power Point Presentation
PDF
Sakai Technical
PPSX
Armani Prive Presentation
Hkust Sakai China Day Presentation
Sakai Tool
Scorm_2004_3rdEd_ RunTimeEnv
Bupt Sakai Melete
The Cooperation Of Bupticet And Sakai
Sakai Portlet V03
2004 01 10 Chef Sa V01
Sakai3白皮书
Bob Dylan One More Cup Of Coffee
Our House Finsihed Old Pp
Configuring Sakai Newport
Bootstrap
Strategize! profile
Barcelona Power Point Presentation
Sakai Technical
Armani Prive Presentation
Ad

Similar to Stellar Sakai Integration (20)

KEY
Getting started with Sakai development
PPT
Sakai Overview 06-2004
PPT
Sakai App Structure
PPT
Sakai 2.0 Architecture Update 2005-06-09
PPTX
Ja Sakai 09 V01
PPTX
Sakai 3, version 8
PPTX
Sakai 3 Boston V03
PPTX
Sakai 3 Boston
PDF
Sakai Technical (Chinese)
PDF
Sakai Technical Chinese
PDF
Osgi Democamp
PPTX
Sakai 3 V07
PPS
Edu0442
PPT
Keynote Address: Strategic Perspectives on an Exciting Future with Sakai
PPT
OAE Developer Bootcamp
PPT
Sakai Overview 02-12-2004
PPT
Participate Sakai 3
PPT
Participate in Sakai 3
PPTX
g-Social - Enhancing e-Science Tools with Social Networking Functionality
PDF
Sakai and uPortal 4
Getting started with Sakai development
Sakai Overview 06-2004
Sakai App Structure
Sakai 2.0 Architecture Update 2005-06-09
Ja Sakai 09 V01
Sakai 3, version 8
Sakai 3 Boston V03
Sakai 3 Boston
Sakai Technical (Chinese)
Sakai Technical Chinese
Osgi Democamp
Sakai 3 V07
Edu0442
Keynote Address: Strategic Perspectives on an Exciting Future with Sakai
OAE Developer Bootcamp
Sakai Overview 02-12-2004
Participate Sakai 3
Participate in Sakai 3
g-Social - Enhancing e-Science Tools with Social Networking Functionality
Sakai and uPortal 4
Ad

More from jiali zhang (20)

PDF
Scorm_2004_3rdEd_ SeqNav
PDF
Scorm_2004_3rdEd_ Cam
PDF
Scorm_2004_3rdEd_Overview
PDF
Scorm.2004.3 Ed.Impacts Summary
PDF
VensimPLE Quick Reference and Tutorial
PDF
Eeveloping Interactive Logbook A Personal Learning Environment
PDF
Form Learning Over E Learning To My Learning
PDF
7thingsabout Ple
PPT
PPT
Stellar Sakai Integration
DOC
PDF
从Sakai项目谈高校网络辅助教学平台
PDF
基于Sakai的开源学习管理系统的构建
PPT
Sakai Enterprise Integration[1]
PDF
自由 开放的Sakai平台
PPT
教学与Sakai
PPT
Conception To Production V7 Nercomp
DOC
Sakai3白皮书(中文版)
PPT
Sakai在华师
PDF
Hua Zhong Sakai
Scorm_2004_3rdEd_ SeqNav
Scorm_2004_3rdEd_ Cam
Scorm_2004_3rdEd_Overview
Scorm.2004.3 Ed.Impacts Summary
VensimPLE Quick Reference and Tutorial
Eeveloping Interactive Logbook A Personal Learning Environment
Form Learning Over E Learning To My Learning
7thingsabout Ple
Stellar Sakai Integration
从Sakai项目谈高校网络辅助教学平台
基于Sakai的开源学习管理系统的构建
Sakai Enterprise Integration[1]
自由 开放的Sakai平台
教学与Sakai
Conception To Production V7 Nercomp
Sakai3白皮书(中文版)
Sakai在华师
Hua Zhong Sakai

Recently uploaded (20)

PDF
Zenith AI: Advanced Artificial Intelligence
PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
PDF
Unlock new opportunities with location data.pdf
PDF
Five Habits of High-Impact Board Members
PDF
Hybrid model detection and classification of lung cancer
PPTX
The various Industrial Revolutions .pptx
PDF
A contest of sentiment analysis: k-nearest neighbor versus neural network
PPTX
Modernising the Digital Integration Hub
PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PDF
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
PPT
Module 1.ppt Iot fundamentals and Architecture
PDF
August Patch Tuesday
PDF
A review of recent deep learning applications in wood surface defect identifi...
PDF
CloudStack 4.21: First Look Webinar slides
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PDF
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PDF
STKI Israel Market Study 2025 version august
PDF
Getting Started with Data Integration: FME Form 101
PDF
A novel scalable deep ensemble learning framework for big data classification...
Zenith AI: Advanced Artificial Intelligence
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
Unlock new opportunities with location data.pdf
Five Habits of High-Impact Board Members
Hybrid model detection and classification of lung cancer
The various Industrial Revolutions .pptx
A contest of sentiment analysis: k-nearest neighbor versus neural network
Modernising the Digital Integration Hub
NewMind AI Weekly Chronicles – August ’25 Week III
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
Module 1.ppt Iot fundamentals and Architecture
August Patch Tuesday
A review of recent deep learning applications in wood surface defect identifi...
CloudStack 4.21: First Look Webinar slides
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
Univ-Connecticut-ChatGPT-Presentaion.pdf
STKI Israel Market Study 2025 version august
Getting Started with Data Integration: FME Form 101
A novel scalable deep ensemble learning framework for big data classification...

Stellar Sakai Integration

  • 1. Using Sakai in Stellar at MIT Mark J. Norton, Nolaria Consulting Craig Counterman, MIT Mark Brown, MIT
  • 2. The MIT Course Management System is called Stellar designed and built by Craig Counterman. The project was started in 2001 to provide on-line support for existing MIT classes. Quickly grew to support basic support needs: homework, schedule, forums, etc.
  • 3. Background and History 2001 : Stellar project started to provide on-line support for MIT classes. 2002 : OKI objects added. 2004 : MIT is a founding partner of the Sakai project. 2005 : Explored adding Sakai tools. 2006 : Stellar and Sakai integrated.
  • 4. Statistics There are 509 classes on Stellar for Spring 2006 (so far). 2729 Stellar class websites have been created since 2001. Of all Stellar class websites 49.7 % are graduate courses and 50.3 % are undergraduate courses. http://stellar.mit.edu
  • 5. Original Stellar Architecture Plug-in tool capability: Stand alone tools Integrated tools Core objects were based on the emerging OKI OSID specifications. Several presentation technologies are supported. A diagram shows it better….
  • 7. Stellar Tools Materials Homework and drop box Schedule and Announcements Sign up for Sections Discussion forum based on Jive Syllabus Etc.
  • 8. New Tool Development New tools are easy to build in Stellar. The new ImageTool, for example. However, MIT wants to take advantage of the large number of tools being developed for Sakai. A replacement for Jive was needed.
  • 10. Some Problems Sakai has it’s own portal – Charon. Maintains it’s own user sessions. Runtime includes Component management. Tool state and placements. Preferences, etc. Tools use Sakai’s authorization system.
  • 11. Solution! Create a null portal that: Accepts requests for Sakai tools Maintains the Sakai user session Creates or finds tool placement as needed Manage other environment concerns This is called LaunchPortal in Stellar. Leads to a new architecture….
  • 13. Request Processing In stellar, a URL is of the form: nexus/nexus/nexus/tool/tool-arguments Each request is processed to find a tool.  Proxy tools are added to forward a request to the LaunchPortal. The LaunchPortal then forwards it to the appropriate Sakai tool along with a context. Tools return HTML.
  • 14. Request and Response Flow Stellar Tool Proxy Launch Sakai Tool Aggregator Request Response HTML Content Aggregated Content
  • 15. Preserving the Sakai Session Stellar uses a regular java.servlet  session and a servlet session cookie for state.  This is the JSESSIONID cookie. Stellar was already using this, so code had to be added to preserve Sakai session information and forward it to the request handler This is done via a HttpServletRequestWrapper in the proxy tool which eliminates the non-Sakai cookie from the request.
  • 16. The Launch Portal LaunchPortal is a null portal built by stripping down Mercury to it’s essentials. It still has a very limited UI, but is intended to run without a UI by forwarding requests to appropriate Sakai tools based on incoming tool id.
  • 17. LaunchPortal public class LaunchPortal extends HttpServlet { public String getServletInfo() public void init(ServletConfig config) throws ServletException protected void doGet(HttpServletRequest req, HttpServletResponse res) protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException protected void doError(HttpServletRequest req, HttpServletResponse res, Session session) throws IOException protected void doHome(HttpServletRequest req, HttpServletResponse res, Session session) protected void doTool(HttpServletRequest req, HttpServletResponse res, Session session, String toolId, String context, String toolContextPath, String toolPathInfo) throws IOException protected void forwardTool(ActiveTool tool, HttpServletRequest req, HttpServletResponse res, Placement p, String toolContextPath, String toolPathInfo) protected void showSession(PrintWriter out, boolean html) private void initSession (HttpServletRequest req, HttpServletResponse res, Session session, String context) }
  • 18. Request Processing The doGet() method is the usual entry point to the LaunchPortal since most are HTTP GET requests. doPost() replicates most of doGet() just in case a POST request is needed.
  • 19. 1. Logic in doGet() User name is passed in on an attribute. Largely manages paths and URLs. If there is no session, one is created for this user. This happens in initSession(). Checks for development UI case or, Calls doTool(). Context also passed via an attribute.
  • 20. 2. Logic in doTool() Gets the Sakai tool associated with the tool id passed. Uses the context to find or create a tool placement, a combination of a tool and a context (usually a site or section). Calls forwardTool().
  • 21. 3. Logic in forwardTool() Makes sure that attributes are set for the HTML head and style sheet references. Uses the forward() method in the Sakai tool to forward the request to the tool being invoked.
  • 22. Error Handling Since LaunchPortal is a real servlet, any errors encountered while preparing to launch or transfer to a Sakai tool can be wrapped into an HTML error page. Exception information is logged in catalina.out
  • 23. Content Aggregation Sakai tools are generally written to appear in an iFrame. Stellar avoids the use of iFrames for accessibility and graphic design reasons. HTML content from Sakai tools will be aggregated via an XML transform. TBD
  • 25. Sakai Tool Integration In order for Sakai tools to work fully in the Stellar environment, they must be integrated with user and group data. Sakai includes three providers for integration to enterprise data services: UserDirectoryProvider Implemented GroupProvider Extended CourseManagementProvider Unused
  • 26. User Integration StellarUserProvider fully implements the UserDirectoryProvider against Stellar user data using a OkapiUser object. User data is currently limited to: First and Last Name Email address (but more data could be added)
  • 27. Authorization Sakai provides limited support for authorization integration using the GroupProvider API. This provider gives access to group names, membership, and group roles. It does NOT allow authorization grants to be resolved externally.
  • 28. Extensions to GroupProvider Since Stellar sites are not defined as groups in Sakai, access can’t be determined locally by the Security Service. In order to properly determine authorization requests by Sakai tools against Stellar users and groups, the Group Provider was extended with three methods: isAllowed() isGroup() getAllowedFunctions()
  • 29. Three New Methods Boolean isAllowed (userId, ftn, realm); Boolean isGroup (groupId); Set getAllowedFunctions(role, groups); More methods than these may be needed to fully support external authorization. These were the minimal ones needed to make Message Center and Jforum work.
  • 30. GroupProvider Implementation The StellarGroupProvider is implemented against Stellar Nexus data that contains sites, roster lists, and user roles. This is done directly against Nexus objects, thus avoiding database interaction.
  • 31. Tool Lessons Learned Sakai tools can be made to work in non-Sakai UI environments using an intermediary to maintain a Sakai session. Some hand-off support is needed to ensure tool ids, context, and arguments. The environment is more flexible than some might think!
  • 32. Integration Lessons Learned Authorization is at the heart of integration. User and Group info is easy, but authorization can be hard. The Sakai providers are good, but can be improved for greater flexibility.
  • 33. Future Work External authorization may be better done by re-implementing AuthZGroups rather than via the GroupProvider. Course Management and Sectioning providers will be needed to allow any Sakai tool to run in Stellar.