[midPoint] Use in higher education?
Pavol Mederly
mederly at evolveum.com
Mon Feb 22 10:14:24 CET 2016
Hello Richard,
our experience at Comenius University is quite similar to yours - even
if our home-made integration solution is much younger than yours
(started in 2003).
Systems connected are: O365, AD, LDAP, Kerberos server, LMS, library,
cards, SAP ERP+HR, ... (about 15-20 in total)
Primary technology is like yours: messaging (done via SonicMQ/SonicESB).
The overall size is comparable: 30K students, 4-5K full time employees,
a couple of thousands part-timers.
Even the primary problem is similar: there are only two developers (~
1,5 FTE) that maintain the core of the solution (120 KSLOC primarily in
Java and XSLT) + one developer that maintains sophisticated scripts that
do O365/AD/LDAP/Kerberos provisioning. Obviously, this is not feasible
in the long run.
So, we are undergoing partial or full migration to midPoint. [The choice
of midPoint is perhaps also because both of us Java developers are
working on midPoint as well :) Also, because recently midPoint got
features that are crucial for our university environment, like delegated
administration.] We do it gradually. First, we installed and integrated
midPoint in order to provide some functionality that was needed and was
not covered by the existing solution. Second, we plan to replace
provisioning scripts by midPoint. And then we'll probably gradually
migrate the core functionality to midPoint, adding maybe some advanced
features not provided by existing solution (approval workflows,
certification, ...).
As for your questions:
> How painful is it to have a large number of attributes on a user?
How many of them do you expect?
I see three views there:
1. Developer view - how to maintain the attributes. Extension attributes
can be stored in one or more XSD files, so maintaining a long list of
them should be no problem.
2. Performance view. Non-searchable extension attributes are stored
within the XML clob column (as part of the whole object XML
representation), so they do not impact performance directly, only if
they would be excessively large. Searchable ones are stored as key-value
pairs. But how many extension attributes you need to be searchable? So,
generally, I don't think this should be a problem.
3. User experience view. The default page rendering is such that all
extension attributes are present as a flat list. However, there is a
mechanism for creating custom tabs in GUI e.g. when editing a user. So
I don't think this would be a problem either.
> As noted in the comparison, academia doesn't have clean organizational
> units.
What exactly do you mean? Our universities are divided into faculties
(13 at Comenius), then to departments (~ 500 at Comenius). Each
department belongs to one faculty. Each teacher belongs to one or more
departments (if having part-time allocations). Each department
participates on a couple study programmes (and most programmes are
covered by more than one department, and even by more than one faculty),
and on one or more research or other projects.
Because midPoint has a very flexible organization structure model
(arbitrary directed acyclic graph), all of this can be easily modeled in it.
> Is there any sensible way to store something like course registrations
> in the system? I'm guessing that I'll still need to manage that
> separately for the systems that need that information and/or to make
> decisions off of that information.
If you'd like to have simple list of courses a student is currently
enrolled in, it can be done by a single multivalued string extension
attribute. We at Comenius don't use even this. We are OK with
maintaining study programme(s) one is currently enrolled in (again, as a
multivalued string attribute).
If you'd like to provide more information (e.g. from/to dates, or any
additional attributes), this might or might not be a problem. Maybe you
could model this via org structure (e.g. along the path of department ->
study programme -> course). If you need just to pass this information
from source to destination systems, it could be maybe done by a
non-searchable extension attribute.
> It's not immediately obvious to me, how hard is it to write a
> connector that operates asynchronously?
This is really interesting question; how to match asynchronous nature of
our existing system with basically synchronous operation of midPoint.
I'm currently not sure how we (at Comenius) will deal with it. But there
are plans to provide fully asynchronous operation in midPoint; Radovan
will surely provide more specific information. Also, I thought of
pushing the responsibility for "store-and-forward" functionality
(currently provided by MQ) directly to midPoint. Its advanced
consistency mechanism provides the retry functionality, with a bonus of
having real-time overview of e.g. incomplete operations. (Although not
available in GUI yet, it can be easily added there.)
But, overall, we plan to keep MQ for other integration tasks, not
directly involving IdM - like distribution of card-related events from
one system to another.
I hope that this provides you at least a partial information. I'm sure
others would give you more details.
Best regards,
Pavol
On 18.02.2016 23:15, Richard Frovarp wrote:
> I am evaluating open source IAM solutions for use at my institution.
> We are currently running a custom engineered solution, that while it
> handles most of what we want, only a couple of us are familiar with
> it. I'm hoping to get more capability, and better ease of use by
> switching to an open source solution.
>
> We have around 40,000 active accounts, plus several thousand more for
> another institution that we provide some IAM services for.
>
> Our current solution has evolved over the 20+ years since we first
> started doing IDM. We tie pretty much everything we can into IAM. We
> are doing the standard O365, Google Apps, and AD, plus of course our
> LMS. We're also pushing data to the library system, the clinic, the
> gym, and the system that lets students check out bikes for 30 minutes
> at a time on campus and in town. That last one also has to pull card
> data from the card system. Going the other way we provision printing
> allocation to the card system each semester. I have vendors that need
> flat files via scp or SFTP, or via web services. I have connectors
> running in Java, Perl, Powershell, and Go. The current solution relies
> on sending JSON messages via RabbitMQ, which works very well. If
> RabbitMQ is down, the changes are attempted to be pushed at a later
> time. If the end points are down, they just check in with RabbitMQ at
> a later point. I also have some services such as Office 365, that when
> it is provisioned, it triggers a modify in AD, and in Java which uses
> Graph after a DirSync is ran. The Java then pushes off new messages
> that are ran in PowerShell against mailboxes.
>
> My question is how much of my need can be met by midPoint? I
> understand that it is a provisioning engine, which is what I'm after.
> Our self service needs are unique enough that this functionality would
> remain a separate system.
>
> How painful is it to have a large number of attributes on a user? I
> see in the demo how a couple were added. To start tracking everything,
> I'm going to need a lot more. As noted in the comparison, academia
> doesn't have clean organizational units.
>
> Is there any sensible way to store something like course registrations
> in the system? I'm guessing that I'll still need to manage that
> separately for the systems that need that information and/or to make
> decisions off of that information.
>
> It's not immediately obvious to me, how hard is it to write a
> connector that operates asynchronously? The RabbitMQ model works quite
> well for us, and it would be quickest and easiest to to move those
> over as is until time permits new options to be developed. For some of
> them doing PowerShell, there might not be good other options anyway.
>
> How does it handle username changes? The connectors would need to know
> what the old username was, and what the new one will be so they can
> find and update the username in the remote system.
>
> We also need to keep track of training / terms of service usage that
> needs to be renewed. This then drives access to other systems. I'm
> guessing that we could implement that via assignments with expiration
> dates that are then used as dependencies for other services?
>
> Thank you in advance for any information that is provided. It looks
> like a good product, it's just that higher education presents some
> very unique challenges.
>
> Thanks,
>
> Richard
> _______________________________________________
> midPoint mailing list
> midPoint at lists.evolveum.com
> http://lists.evolveum.com/mailman/listinfo/midpoint
More information about the midPoint
mailing list