The Safe Exam Browser Server web application simplifies and centralizes the configuration of SEB clients for exams. It interacts with a learning management or exam system for setting up and conducting e-assessments with Safe Exam Browser. It also improves security by allowing to monitor connected SEB clients in real time during e-assessments.
Mostly done, with some improvements pending with Ans. This implementation uses way fewer API calls and is simpler thanks to a new Ans search API which allows listing all assignments in one call. No need to retrieve courses or timeslots.
Tested and working for me:
Authentication using the simple personal bearer token
Searching LMS Exams ("Assignments" in Ans)
Getting single exam info
Setting and releasing SEB restriction using configuration keys (browser exam keys not supported by Ans)
Unsure:
Ans does not support browser exam keys, only config keys. I don't know the implications.
Ans has a rate limit of 500 requests/minute. This is not a problem at the small scale. 1 API call is needed to list 20 exams. 1 API call is needed to get user info on 1 user. Once there are more than a few hundred students taking an exam, the rate limiting could be an issue. Two options:
Implement client side rate-limiting to never go over the advertised quote (500/minute)
Get all users in a single API call and cache them in SEB server, only request current info on single users where necessary
Ans has 'timeslots' for each 'assignment' (exam). SEB restrictions are made at the assignment level. An assignment can exist without any timeslots.This implementation will show the start_at and end_at timestampts of an assignment (corresponding to the start of the first timeslot and end of the last timeslot), but if there are no timeslots, it generates a placeholder (now + 1 year). An alternative would be to simply not show exams that don't have a timeslot yet.
Filtering is not implemented at the API level, because the Ans API does not support searching for exams given a start date or incomplete name, only given exact matches. So we always retrieve all assignments.
At the moment, seb_server_enabled cannot be set inside the Ans GUI, only via the API, so we need to list all assignments. Maybe in the future, we can only list those for which seb server has been enabled in Ans (like in OLAT).
Not tested:
User info retrieval for monitoring
Whether the client works (getting a working test user pending with Ans)
Todo:
Generating correct exam URLs is not yet implemented, pending with Ans.
Mostly done, with some improvements pending with Ans. This implementation uses way fewer API calls and is simpler thanks to a new Ans search API which allows listing all assignments in one call. No need to retrieve courses or timeslots.
Tested and working for me:
Unsure:
Not tested:
Todo:
Generating correct exam URLs is not yet implemented, pending with Ans.