Cybersecurity
DevOps Cloud (ADM)
IT Operations Cloud
In this article, we will look at a basic example of LMS integration through a JDBC driver, and look at a few use cases together.
I selected to use OLAT Open Source LMS as an example, but it would be fairly simple to adapt to other LMS.
For more information on OLAT, see: http://www.olat.org/website/en/html/index.html
Figure 9: Make sure you select Use evidence of Achievement in Settings, so scores are saved in the table.
Now we need to create a view in front of the OLAT tables, so we can use the IDM JDBC driver to query the view for score information. We can ask the DBA to create the view and configure read only access for the account used by the driver.
SQL script to create view:
create view View_SCORES AS (select a.ID pk_ID,a.NAME pk_NAME,c.DISPLAYNAME pk_DISPLAYNAME,b.ISPASSED, MAX(b.SCORE) SCORE from O_BS_IDENTITY a,O_QTIRESULTSET b,O_REPOSITORYENTRY c WHERE a.ID=b.IDENTITY_ID and b.REPOSITORYREF_FK=c.REPOSITORYENTRY_ID GROUP BY ID,NAME,ISPASSED,DISPLAYNAME);
Now let's create the driver. You will need to copy the 3rd party JDBC driver hsqldb.jar (in zip attachment below) to the classes subdirectory for your server.
Figure 14: Schema mapping for Score View. We have extended the schema with effective class LMSScore(From Top, contained by Domain, Organization and Oganizational Unit) and optional attributes.
Figure 16: Command Transform that updates the user object with Score information. We have assumed that 2 attributes per exam are added to an Aux Class for User to receive score and tell if user attempted exam.
My driver export is provided as an attachment.
Now that we have score information for one or more exams for Users, we can build provisioning rules or workflow form logic to consume that information. Let's look at a simple example using a Provisioning Request.
Figure 17: Form that consumes score attributes. DAL must be modified to expose LMSScore and attributes(single-value).
Figure 19: Validation script that performs a validation, and will reject Provisioning Request if minimal score is not achieved.
Validation Script:
// TODO Auto generated function stub.
function checkMinSecIsPassed(form,IDVault) {
var dn = form.getValue("recipient");
var v = IDVault.get(null, dn,"user","LMSMinimumSecurityIsPassed");
var score = IDVault.get(null, dn,"user","LMSMinimumSecurityScore");
if (score < 4) {
alert("You need to successfully pass the exam for Minimum Security. Your score is " score ". Minimum score is 4. You did not get the minimum score");
form.submit("CancelAction");
return;
}
form.showMsg("Validation ok, please proceed");
}
Let's try to make the Request for a user that did not pass the exam:
Figure 20: User who did not pass the exam cannot submit Provisioning Request to request membership for AD Domain Admin Group.