<blockquote></blockquote>
<p>For a non-Microsoft person, what is ADFS?</p>
<p>ADFS is Microsoft’s solution for Single Sign On and web based authentication.</p>
<p>It is used primarily to provide a single set of credentials that can access a variety of sites not necessarily hosted within the same domain.</p>
<blockquote></blockquote>
<p>How does it differ to things like LDAP?</p>
<p><strong>LDAP:</strong></p>
<ul>
<li>
<p>Communicates using TCP/UDP on port 389 (or port 636 for LDAPS)</p>
</li>
<li>
<p>Contains commands for searching/retrieving/adding/deleting/modifying users, profiles and other directory entries</p>
</li>
<li>
<p>Can <em>not</em> be performed directly by a web browser, however HTTP authentication can be translated to LDAP using things like Apache’s <code>mod_authnz_ldap</code>.</p>
</li>
<li>
<p>When used for third-party website authentication, requires that username & password are provided to the third-party, which is not ideal for security.</p>
</li>
<li>
<p>Is more of an open standard and has numerous Linux implementations.</p>
</li>
</ul>
<p><strong>ADFS:</strong></p>
<ul>
<li>
<p>Better designed for the web as it communicates over standard HTTPS</p>
</li>
<li>
<p>Follows a safer process similar (but not exact) to OAuth where the original username/password are provided directly to the organisation’s ADFS server (or a proxy, but <em>not</em> the third-party), which if valid, returns a unique token that can be used to access a third-party website.</p>
</li>
<li>
<p>Although it does use make use of some open standards (HTTPS, SAML etc.) it is Microsoft-specific and requires Internet Information Services (IIS) which only runs on Windows Servers.</p>
</li>
</ul>
<p>See also <a href="https://stackoverflow.com/questions/28683739/ldap-vs-adfs-single-sign-on">this answer</a> on the subject.</p>
<blockquote></blockquote>
<p>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?</p>
<p>It works by having a single site (site A) that hosts the ADFS / ADFS proxy servers, which has access to the credentials (usually by communicating with an Active Directory Domain Controller). It is then given a trust between other sites (sites B & C) that require authenticating through the ADFS.</p>
<p>When a user attempts to access site B in their browser, the site redirects the user to the ADFS-proxy website (site A) which asks for their username & password, authenticates them, returns a set of cookies for remembering them, and redirects them back to the site B, along with an access token.</p>
<p>If the user then attempts to visit site C, they will also get redirected to site A for authentication from the ADFS-proxy website. If the right cookies exist, the user will not be required to enter their password again, but get instantly redirected back to site C with a token.</p>
<p>The ADFS can be configured with specific claims (or permissions) for the user, for authorization purposes. So it can serve both roles. (Note the <a href="https://serverfault.com/questions/57077/what-is-the-difference-between-authentication-and-authorization">difference between authentication and authorization</a>.)</p>
<p>Some people prefer not to use it for authorization but instead keep the permissions management in the third-party website. The obvious downside is that both site A & B need to keep track of user accounts, while in the scenario where ADFS handles both, only the ADFS needs to be aware of the users.</p>
<blockquote></blockquote>
<p>Are ADFS servers typically accessible from the internet (whereas corporate AD domain controllers would not be)?</p>
<p>Yes, nearly always. ADFS is based on the notion that it will be primarily used for website authentication. And is built around IIS.</p>
<p>The ADFS-proxy site is the one that is usually accessible from the internet. However the ADFS itself is not. The ADFS is generally a separate server from the ADFS-proxy.</p>
<ul>
<li><strong>ADFS Server</strong></li>
</ul>
<p>Server that links to the credentials, and has the claims configuration as well as the trusts. Generally not publicly accessible.</p>
<ul>
<li><strong>ADFS Proxy Server</strong></li>
</ul>
<p>Server that hosts the IIS instance that has the login pages for the websites requiring authentication. Communicates back to the ADFS when requiring authentication. Generally publicly accessible.</p>