Hi,
I'm pretty new to ADFS, but I do have it up and running successfully in a couple of my ASP.NET apps. I have a problem with an ASP.NET custom RoleProvider, and I'm having trouble finding an answer to this question because the problem spans both ADFS and ASP.NET. But I hope someone here can help....
I've just written a simple custom RoleProvider and it functions correctly in my ADFS apps. However I'm running into a problem with the RoleProvider's IsUserInRole() and GetRolesForUser() methods. Both these methods have a parameter named username. This is the value I have to then use to uniquely identify the user and look up their roles. The value sent into this parameter (by the ASP.NET RoleProvider mechanism) appears to be from the SingleSignOnIdentity.Name property. The value in the SingleSignOnIdentity.Name property appears to come from the AD value of UPN. This is a problem, because I'm in a very large coporation with multiple forests and the UPN is not guaranteed to be unique across forests (for example, we use the user's email address for the UPN value, so it's possible someone with an account in each of our forests puts in the same email address in both accounts). So it's a security hole if I use UPN.
So my questions are:
1.) Are my assumptions right as to where these values come from?
2.) Wherever it comes from, can I map some other value in ADFS that will eventually show up in these RoleProvider's method parameters (username)? Ideally I'd like to use the user's SID, because it's guaranteed to be unique. Or if that's not possible, could I possibly map a concatenation of domain\username to it?
It's difficult to frame these questions to an ADFS audience because I don't know exactly where ASP.NET gets the value of the SingleSignOnIdentity.Name property, so I can't ask the question in strictly ADFS terms. So I'm hoping someone out there is familiar enought with the ASP.NET side of this (SingleSignOnIdentity) to help.
Thanks in advance!
Buzz