130 likes | 261 Views
Linking External Tools with Sakai. David Ross Educational Technology, Albany Medical College. What is “linking”?. In this context, we mean to expose or “launch” an external application to users like it was a Sakai tool.
E N D
Linking External Tools with Sakai David Ross Educational Technology, Albany Medical College
What is “linking”? • In this context, we mean to expose or “launch” an external application to users like it was a Sakai tool. • In some cases, we are just keeping a Sakai user authenticated as they interact with the external application, which may not be a problem if you have Single Sign On. • In the absence of SSO, or when tighter integration is necessary, “linking” is one option.
Tighter integration? • Your external application could leverage the organization of Sakai, namely sites, sections, and groups. • In addition to authentication, the authorization framework (roles, permissions, groups) within Sakai can be used by your external application. • Your external application can leverage existing Sakai api(s)/tools
Common use cases • Existing application needs to run like a Sakai tool but can’t run within the Sakai JVM (it was probably written in PHP or ASP or CF or something else) • Existing developer talent is more familiar with alternative platforms, or you have a split development staff.
How? • Two pieces to this puzzle: • Rutger’s “Link Tool” • Just a servlet, but registered as a Sakai tool. • Spits out an IFRAME pointed at your external application • Passes user, role, site, tool placement, session id (signed via. digital signature) • Webservices • Rutger’s SakaiSigning.jws • External application verifies the user via this webservice • Optionally allows retrieval of a real Sakai session id
External Tool Linking Overview Sakai • http://ExternalApplication/launch • User • SessionID (digitally signed) • SiteId • ToolPlacementId Rutgers Link Tool External Application Sakai-Axis SakaiSigning.jws .testSign(QUERY_STRING) true | false
Link Tool Basics • You can install and configure within any Sakai site using the admin “sites” tool. • If you want your users to be able to add “linked” tools via. Site Info -> Add Tools, you can register the Link Tool with specific names & configurations. • Add a tool definition xml file within {sakai-src}/linktool/src/webapp/tools • Add a matching <servlet/> definition to {sakai-src}/linktool/src/webapp/WEB-INF/web.xml • Same class each time – just name it the same as your tool • Make sure you enable the Sakai request filter for each definition
SakaiSigning.jws basics • Copy into {sakai-src}/webservices/axis/src/webapp/ before building Sakai. • When your external application receives the “linked” request, it needs to pass the “query string” (every parameter in the url) to call of the testSign(…) method on the SakaiSigning webservice. The reply will be “true” or “false”, and your application should react accordingly (only let the user in if Sakai answers “true”).
Want to more with webservices? • Then you *need* a real session id from Sakai. • To keep things secure, you need to pass a “key” from your external application • The link tool can generate the key for you • you can request a session ID from SakaiSigning.jws for a specific user, or just the current logged in user
What do we “link” @ AMC? • Event “SignUp” tool – grew out of a tool to allow students to sign up to shadow our community physicians. Anyone can add this to their Sakai sites. • “Patient Logs” tool – students keep a log of the patients/procedures/diagnoses they see – this is only available to 3rd & 4th year course sites and is “shared” among all users – meaning faculty in course A can see student’s data from course B. Also is group-aware within the Sakai sites. • “Anatomy Reports” similar architecture to Patient Logs but used in the first year to collect students’ observations of their cadaver dissections.
Consolidation of our Linking Architecture • All linked tools go through a common local api for communication with Sakai. This api then talks to Sakai webservices. • Enables quick addition of new linked tools without duplicating the “glue” code.
More linkage… • Legacy exam tool • More stable than Samigo (all final exams are delivered online) • Instructor familiarity • Gradebook integration • Works *better* linked with Sakai than standalone because we leverage the Sakai “containers” – meaning sites and roles. Instructors no longer have to manually assign the students to each assessment.