So I've been told that our PHP application may need to support authentication using ADFS.
For a non-Microsoft person, what is ADFS?
How does it differ to things like LDAP?
How does it work? What kind of information would be included in a typical request to an ADFS server? Is it designed for both authentication and authorization?
Are ADFS servers typically accessible from the internet (whereas corporate AD domain controllers would not be)?
I've tried reading some of the Technet docs, but it's full of Microsoft-speak that isn't hugely helpful.
Wikipedia is better (see below), but perhaps some of the ServerFault community can fill in some of the gaps.
Active Directory Federation Services (ADFS) is a software component developed by Microsoft that can be installed on Windows Server operating systems to provide users with single sign-on access to systems and applications located across organizational boundaries. It uses a claims-based access control authorization model to maintain application security and implement federated identity.
Claims-based authentication is the process of authenticating a user based on a set of claims about its identity contained in a trusted token.
In ADFS, identity federation is established between two organizations by establishing trust between two security realms. A federation server on one side (the Accounts side) authenticates the user through the standard means in Active Directory Domain Services and then issues a token containing a series of claims about the user, including its identity. On the other side, the Resources side, another federation server validates the token and issues another token for the local servers to accept the claimed identity. This allows a system to provide controlled access to its resources or services to a user that belongs to another security realm without requiring the user to authenticate directly to the system and without the two systems sharing a database of user identities or passwords.
In practice this approach is typically perceived by the user as follows:
- The user logs into their local PC (as they typically would when commencing work in the morning)
- The user needs to obtain information on a partner company's extranet website - for example to obtain pricing or product details
- The user navigates to the partner company extranet site - for example: http://example.com
- The partner website now does not require any password to be typed in - instead, the user credentials are passed to the partner extranet site using AD FS
- The user is now logged into the partner website and can interact with the website 'logged in'