Thursday, July 26, 2007

Can I launch courses directly from a portal so that learners don't have to log into EKP, but still have EKP track the learners' progress?

In order to link to a course so that the course launches immediately, and is tracked by EKP, you can link to the launchByCourseId transaction, e.g.:

/ekp/servlet/ekp/launchByCourseId?courseId=My_Course

(Note that this requires that the learner already be enrolled in My_Course, so you might want to pre-enroll learners using a Group Enroll or Auto-Enroll.)

If you link directly to the URL above, and the learner does not yet have a session with EKP, she will be prompted to log in as normal. In order to achieve “transparent login”, you can use one of the two mechanisms described below.

  1. Implement the "external authentication service" mechanism. To implement this, the portal would need to be modified to generate “authentication tokens” (cryptographic hashes) when requested by EKP. Then, EKP's configuration is modified so that, when it needs to authenticate a user, it redirects to the portal to request an authentication token instead of showing the standard login page.

    Note that this mechanism has the significant advantage that it is not required that users' passwords be synchronized in the two systems. In fact, when using this mechanism, the passwords stored in EKP's database are never used.
  2. Use the standard verify transaction. This is the transaction that is used to validate a user ID and password submitted using the normal login page. It is possible to add a target parameter to specify the page to which the user should be redirected after a successful login (instead of the normal home page). In particular, if you want to start a course after login, you can specify the launchByCourseId transaction (with appropriate courseId parameter value) as the value of the target parameter. E.g.:
    /ekp/servlet/ekp?TX=VERIFY&UID=joestudent&PWD=password&target=%2Fekp%2Fservlet%2Fekp%2FlaunchByCourseId%3FcourseId%3DMy_Course
    Note that the value of the target parameter has been percent-encoded.

    The above example includes the parameters in the query string—however, for security reasons you should avoid including the user ID and password in the URL—therefore, the portal should be coded to use the POST method rather than GET to invoke the verify transaction.

Note that, unlike method 1, method 2 requires passwords to be synchronized between the two systems, which could be difficult to achieve if passwords are changed regularly (a good security practice). (This problem can be avoided by configuring both systems to use the same directory server, i.e. Active Directory or LDAP.) In addition, method 2 requires embedding the user's password in an HTML page (or HTTP redirect header), which might be cached. For these reasons, we recommend using method 1 if possible.

3 comments:

Nick said...

Hey Rob, I tried doing this but got the following error Sorry, but the transaction (launchByCourseId ) requested is unknown to the system
We are on 4.7, any ideas?

Rob said...

Hi Nick,

This capability should work on all EKP 4.7 builds. In your comment, I notice there is a space in the error message after "launchByCourseId". I'm not sure if that was in the original error message or is just a copy-and-paste artifact, but I'd suggest you double-check the URL you are using to ensure there isn't an extraneous space between "launchByCourseId" and the question mark character ("?").

If you are still having problems I'd suggest you open a support case and paste in the exact URL that you are using.

Thegreatcerebral said...

Hey Rob,

First of all I want to say that I love the site and wish there was even more info out there about EKP.

Second I have a question in regards to this and the other post about linking directly to a page in EKP without losing the navigation frames.

Now I have nothing bad to say about EKP. We use it internally for training and it does everything we need it to do and when combined with Articulate is is one of the quickest ways to get training up and have it be massively effective and requires little to no knowledge by the learning creators :)

We have a portal site using Joomla. We WERE using a wiki site to house the course catalog for various reasons however since we are making the move to Joomla and how extensive that beast is it only makes sense to move the catalog there. It will allow us to do much more than the EKP catalog will allow all while having ONE site everyone will go to etc.

In this article you mention that in order for the link to work you must be registered for the course. I have verified this is true. Also in your other article you allow me to link to the course catalog information for the course within EKP.

Is there a way (and I've tried a couple already but am probably missing something) to directly link the "register" function from an external site?

It seems like there should be considering you still need to login to the site to be able to take the course or even see the course catalog page so any permissions would sill block/trigger after logging in.

I am just trying to cut out one more mouse click for my users.

If not then I will just link them to the catalog page for the course.

I hope to hear from you.

Thank you,
TGC