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.
Tested and working for me:
Authentication, but just using the simple personal token, not OAuth2 (client credential flow not supported by Ans)
Searching LMS Exams ("Assignments" in Ans) but without any filtering
Getting single exam info
Unsure:
Getting/setting/deleting SEB restriction for exam. Ans does not support browser exam keys, only config keys. I don't know the implications. Also, it seems like some additional things are missing in Ans (like enabling/disabling the restriction). This topic is pending with Ans.
Ans has a rate limit of 500 requests/minute. This is not a problem at the small scale, but to list a single exam, 4 API requests are necessary (school courses, course assignments, assignment data and timeslots). Once there are more than 100 or so exams (or 500 students taking an exam?), client-side rate-limiting may be necessary in SEB server.
Ans has 'timeslots' for each 'assignment' (exam). But an assignment can exist without any timeslots. SEB restrictions are made at the assignment level. This implementation tries to get the first timeslot of an assignment for display in SEB server, but if there are no timeslots, it generates a placeholder (now + 90 days). An alternative would be to simply not show exams that don't have a timeslot yet.
Not tested:
User info retrieval for monitoring
Todo:
Ans expects a 'school' id, which identifies the school/uni/institution/customer, for example: /api/v2/schools/{school_id}/courses. Where should we store this in SEB server? There is no suitable field in LmsSetup, but we could abuse the LMS Server Username field, since no username is necessary (because we use a personal bearer token, not OAuth2).
Generating correct exam URLs is not yet implemented, pending with Ans.
Filtering is not implemented when listing exams. This is not yet supported by the Ans API but apprently being developed. We could filter locally, but it seems unnecessary at this time.
Mostly done, with some improvements pending with Ans.
Tested and working for me:
Unsure:
Not tested:
Todo:
/api/v2/schools/{school_id}/courses
. Where should we store this in SEB server? There is no suitable field in LmsSetup, but we could abuse the LMS Server Username field, since no username is necessary (because we use a personal bearer token, not OAuth2).This is not yet supported by the Ans API but apprently being developed. We could filter locally, but it seems unnecessary at this time.