Fall 2009 Day 2 - IdM Plumbing for Developers
What would be the right set of services and what would their contracts provide for open source developers?
start from the point of view of the applications or the user's needs?
use the word functions instead of contracts
you have all the information you need but usually you have to manually wire them up, that's the kind of plumbing we need
Gauge of train tracks used to be different so trains couldn't go all the way, our applications are like trains that need to be unloaded and the contents transferred to a different train that can run on a different track for the next leg of the journey
If you had an authorization engine, how would you talk to it and what functions would they need to do?
most developers have a framework that does these things for their specific development group
what about the issue of consumers misunderstanding what an attribute means, this is a mapping problem
Levels of user identification
Definition: outside of applications we have a person's definition (student,staff)
Roles: then there is stuff that is roles relevant to applications
Permissions: then there are permissions that is hyper local and very application specific
If the rest of the world would get their act together, the developers would have a much easier time
For example, we give people CAS code snippets instead of talking about protocol
possible starting point would be to look at Spring and see what else it needs to meet this particular problem space
the solution often seems to be making the library/snippet available to the implementers, it's about the tool set
What does plumbing mean?
<spec>
Web Services
Spring
But don't get stuck on technology name
would like a higher ed ontology for common pieces
lets start by staring at solutions
the Kuali identity management solution is a potential starting point
ID Framework Functions
authorization
what can subject X access or who has attribute X?
give X's attributes
don't care where the answer came from
manage change in attributes
change in content/context
how do I know when the definition of an attribute changes?
flip side is how do I know when the content of the attribute changes?
provisioning and de-provisioning based on attribute change
service should set thresholds to trap exceptional changes
introduce concept of versioning for attribute definitions
group management
a list of subjects
name of a group is like the name of an attribute
role management
a list of subjects with permissions
this is a deeper match into the security model of an application