Skip to Content.
Sympa Menu

shibboleth-dev - Background on Microsoft ADFS concepts and configuration

Subject: Shibboleth Developers

List archive

Background on Microsoft ADFS concepts and configuration


Chronological Thread 
  • From: "Howard Gilbert" <>
  • To: <>
  • Subject: Background on Microsoft ADFS concepts and configuration
  • Date: Tue, 31 May 2005 13:08:33 -0400

Shibboleth and ADFS

Some detailed documentation on ADFS configuration (but not protocol elements) has finally appeared in a public location (added to Microsoft downloads on 5/25). There is a public Beta of Windows 2003 R2 to which it applies.

Domains

Microsoft originally tried to distribute LANMAN through partners like 3COM, IBM, and DEC. At the time it did not regard Networking as a strategic issue, but it did not want Novell to dominate the technology. Microsoft maintained the client system modifications and developed a high level protocol that could run over any network. DEC took that protocol and hosted it on DECNet, using VAX VMS as the server. AT&T took the same starting point and hosted it over an OSI stack using System V as the server. IBM ran the protocol over Token Ring to an OS/2 server.

However, none of these products was particularly successful, and one by one the partners dropped out. This left Microsoft in 1993 to relaunch its own end-to-end solution based on Windows NT 3.1. By that point the number of supported protocols had been reduced to a local broadcast technology (Netbeui), Novell IPX, and TCP/IP.

Due to the small size of servers and the limited scope of broadcast protocols, Microsoft targeted its networking technology at departments. Small numbers of users and a compact geographical distribution were assumed. To scale up to larger organizations, departments could establish "Trust" relationships that would allow a resource owner in one departmental domain to include a userid defined in another department in an Access Control List.

Active Directory

By 2000, TCP/IP was now the only important communications protocol. Microsoft now had Servers large enough to support much larger groups of users, but it needed protocols that could scale better. It decided to replace its own system of simple machine names with the Internet DNS name system. It's Domain Controllers would now communicate using LDAP. Authentication would use Kerberos 5.

Active Directory gathered up the various departmental domains of previous Microsoft networking into an Enterprise networking structure. The various local domains at Yale became elements under the common *.yale.edu DNS suffix. If everything at Yale ends in that suffix, then the entire organization falls under one DNS "tree". However, a university also has attached research institutes and non-profit organizations and non-profit organizations that, for $10 a year now, can have their own domain names. To allow the institution to have several DNS domain suffixes, the AD unit is called a "Forest".

However, the individual Domains retain their identity and their ability to create user accounts and own machines. When the new protocols were added, each Windows Domain became a Kerberos 5 realm, and the Domain Controllers became KDCs.  Kerberos had a protocol for trust relationships between realms. However, a single Kerberos server could easily handle an entire university or corporation, so actual use of the cross-realm protocol was not common. Because Microsoft had started with a federation of departmental domains, its new system was completely dependent on the routine use of cross-realm Kerberos 5 protocols.

Each machine belongs to and has an account in one domain. Each user has an account in a domain. In common practice, the machine belongs to a different domain than the users. So when each user sits down at his desktop to logon each morning, this request may be processed as a cross-realm Kerberos 5 transaction where the user first logs on to the domain with his account, then gets a Service Ticket to introduce himself to the domain that manages his machine, and finally gets a Service Ticket that allows him access to his own machine.

In the old days, a user might be known as "YALE\GILBERT" (userid "GILBERT" in domain "YALE"). The domain was now "yu.yale.edu", but there was now some confusion about the official global name of the account. Since the native directory protocol had become LDAP, there was strong technical reason to suggest that the official name of the account was the completely unreasonable distinguished name "CN=gilbert, CN=Users, DC=yu, DC=yale, DC=edu". Something a lot easier to remember was needed, and if an alias was going to be developed there was no particular reason why it had to accurately include a particular departmental domain name.

Thus the Universal Principal Name (UPN) was created. Any user in the *.yale.edu family of domains (the "Forest" in AD terms) could be given a unique global alias name in the form prefix@dnsname. The prefix could be anything you wanted, but a choice like "Howard.Gilbert" makes sense. The suffix had to be any DNS domain name anywhere in the forest, but it didn't have to be the particular domain in which the account actually resides. Thus, although "gilbert" is an account in "yu.yale.edu", the UPN could be "". This also happens to be an E-Mail alias for the same person, and just as the UPN doesn't include the name of the domain that includes the account, the E-Mail alias doesn't include the name of the post-office machine that will actually process the mail.

Forest Trust

Starting with Windows 2003, Microsoft tried to develop a protocol by which tightly coupled institutions could federate identity systems. The good news was that this system of "Forest Trust" was based on the same strong technologies (LDAP, Kerberos 5) as the rest of Active Directory. The bad news was that it required communication from the clients in one organization to the Domain Controllers in the other. That would require poking too many holes in the firewall. Thus this technology could be used only by very tightly coupled organizations.

However, one part of the Forest Trust protocol overlaps later approaches to identity Federation. To identify a user outside his own institution, Microsoft decided to use the UPN.

If everyone is using UPN in a sensible way, then there is no problem. Certainly the UPN of everyone at Yale ends in "yale.edu". If that is true for every other school, then these become global names that make sense everywhere in the world. It was always possible for Yale to decide, for whatever reason, to define a "harvard.edu" suffix inside its Forest and start to give out UPNs with that ending. At that point the UPNs are hopelessly local and the Forest cannot reasonably federate with other schools. As long as UPNs end in a name that is legitimately assigned to the institution through DNS, then a global Federation is possible.

Should Yale and UCLA decide to establish Forest trusts, and should the administration decide to poke enough holes in the firewalls to allow this to occur, when the two Forests are initially introduced to each other, they exchange all the UPN suffixes that they currently use. UCLA would learn that anything ending in "yale.edu" belongs to Yale, and Yale would learn that anything ending in "ucla.edu" belongs to UCLA. They might each pick up a few extra DNS endings belonging to affiliated organizations that are part of each Forest.

ADFS

Admitting that Forest Trust requires too big a hole in the firewalls, Microsoft is launching a second attempt with Windows Server 2003 R2. The bad news here is that it cannot use the powerful protocols like LDAP and Kerberos 5 on which the local network authentication is based. The good news is that ADFS is based on SAML, SOAP, and the WS-Federation standard.

 Unfortunately, the names get changed. The "ID Provider" becomes the "account partner". The SP becomes the "resource partner". The assertions and attributes become "claims". Now if an application wants to deal with this natively, it can write a "claims aware" authentication front end using .Net Framework 2.0. However, since existing Windows applications are used to making decisions based on users and groups, the alternative is to create shadow accounts.

To keep foreign accounts rationally separate, most institutions will probably decide to put them in their own Domain. The big deal, however, is to give them a sensible UPN. To do this, the current recommendation from Microsoft is to create within your own Forest a UPN suffix for any external institution with which you intend to federate. Thus if Yale and UCLA agree to federate using ADFS instead of Forest Trust, Yale would create a UPN suffix of "ucla.edu" within its own Forest and associate it with foreign accounts belonging to users from UCLA.

Obviously, you are in deep, deep s**t if you run ADFS for some time with shadow accounts and then decide to establish a Forest Trust. You have to tear down everything you have created. On the other hand, if you establish a Forest Trust first and then add ADFS, things sort themselves out automatically (instead of using shadow accounts, each Forest can use the real accounts in the other Forest even though the authentication is being provided by SAML instead of Kerberos).

Since Shibboleth is a "claims aware" application, it does not require any shadow accounts or UPN fiddling to interoperate with ADFS. However, since the entire Windows security system is based on accounts, it is likely that most of the Microsoft documentation will deal with UPN mapping or other forms of claim-to-shadow-account mapping.

Configuration

On the IdP end, the ADFS is outside the firewall, visible to the world through HTTPS. It turns AD authentication into SAML assertions. We may assume that it uses Attribute Push. The only curious feature is instructions to generate the signing certificate with "CN=Token Signing Certificate for entityname FS".

There is a Trust configuration database that is an XML file, but is typically edited through a GUI management snap-in.

Metadata is therefore generated partner by partner. An administrator at the IdP exports its Token Signing Certificate to a portable format and E-Mails (or otherwise distributes it) to the various SPs. They run the Add Account Partner Wizard to create a new Account Partner entry and import the certificate. There are configuration options for ARP and AAP based on the assumption that all attributes are in the standard AD schema.

The rest is mostly Claims mapping (to shadow accounts).

 



  • Background on Microsoft ADFS concepts and configuration, Howard Gilbert, 05/31/2005

Archive powered by MHonArc 2.6.16.

Top of Page