summaryrefslogtreecommitdiff
path: root/chromium/docs/website/site/developers/design-documents/http-authentication/index.md
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/docs/website/site/developers/design-documents/http-authentication/index.md')
-rw-r--r--chromium/docs/website/site/developers/design-documents/http-authentication/index.md234
1 files changed, 0 insertions, 234 deletions
diff --git a/chromium/docs/website/site/developers/design-documents/http-authentication/index.md b/chromium/docs/website/site/developers/design-documents/http-authentication/index.md
deleted file mode 100644
index e9009d84d4f..00000000000
--- a/chromium/docs/website/site/developers/design-documents/http-authentication/index.md
+++ /dev/null
@@ -1,234 +0,0 @@
----
-breadcrumbs:
-- - /developers
- - For Developers
-- - /developers/design-documents
- - Design Documents
-page_name: http-authentication
-title: HTTP authentication
----
-
-As specified in [RFC 2617](http://www.ietf.org/rfc/rfc2617.txt), HTTP supports
-authentication using the WWW-Authenticate request headers and the Authorization
-response headers (and the Proxy-Authenticate and Proxy-Authorization headers for
-proxy authentication).
-
-**Supported authentication schemes**
-
-> Chrome supports four authentication schemes: Basic, Digest, NTLM, and
-> Negotiate. Basic, Digest, and NTLM are supported on all platforms by default.
-> Negotiate is supported on all platforms except Chrome OS by default.
-
-> The Basic and Digest schemes are specified in [RFC
-> 2617](http://www.ietf.org/rfc/rfc2617.txt). NTLM is a Microsoft proprietary
-> protocol. The Negotiate (or SPNEGO) scheme is specified in [RFC
-> 4559](http://www.ietf.org/rfc/rfc4559.txt) and can be used to negotiate
-> multiple authentication schemes, but typically defaults to either Kerberos or
-> NTLM.
-
-> The list of supported authentication schemes may be overridden using the
-> [AuthSchemes](/administrators/policy-list-3#AuthSchemes) policy. See [this
-> page](/administrators) for details on using administrative policies.
-
-**Choosing an authentication scheme**
-
-> When a server or proxy accepts multiple authentication schemes, our network
-> stack selects via HttpAuth::ChooseBestChallenge() the authentication scheme
-> with the highest score:
-
- * Basic: 1
- * Digest: 2
- * NTLM: 3
- * Negotiate: 4
-
-> The Basic scheme has the lowest score because it sends the username/password
-> unencrypted to the server or proxy.
-
-> So we choose the most secure scheme, and we ignore the server or proxy's
-> preference, indicated by the order in which the schemes are listed in the
-> WWW-Authenticate or Proxy-Authenticate response headers. This could be a
-> source of compatibility problems because [MSDN documents that "WinInet chooses
-> the first method it
-> recognizes."](http://msdn.microsoft.com/en-us/library/aa384220%28VS.85%29.aspx)
-> Note: In IE7 or later, WinInet chooses the first *non-Basic* method it
-> recognizes.
-
-**Integrated Authentication**
-
-> With Integrated Authentication, Chrome can authenticate the user to an
-> Intranet server or proxy without prompting the user for a username or
-> password. It does this by using cached credentials which are established when
-> the user initially logs in to the machine that the Chrome browser is running
-> on. Integrated Authentication is supported for Negotiate and NTLM challenges
-> only.
-
-> Due to potential attacks, Integrated Authentication is only enabled when
-> Chrome receives an authentication challenge from a proxy, or when it receives
-> a challenge from a server which is in the permitted list.
-
-> This list is passed in to Chrome using a comma-separated list of URLs to
-> Chrome via the
-> [AuthServerWhitelist](/administrators/policy-list-3#AuthServerWhitelist)
-> policy setting. For example, if the AuthServerWhitelist policy setting was:
-
-> > \*example.com,\*foobar.com,\*baz
-
-> ...then Chrome would consider that any URL ending in either 'example.com',
-> 'foobar.com', or 'baz' is in the permitted list. Without the '\*' prefix, the
-> URL has to match exactly.
-
-> In **==Windows only==**, if the AuthServerWhitelist setting is not specified,
-> the permitted list consists of those servers allowed by the Windows Zones
-> Security Manager (queried for URLACTION_CREDENTIALS_USE). By default, this
-> includes servers in the Local Machine or Local Intranet security zones. For
-> example, when the host in the URL includes a "." character, by default it is
-> outside the Local Intranet security zone). This behavior matches Internet
-> Explorer and other Windows components.
-
-> If a challenge comes from a server outside of the permitted list, the user
-> will need to enter the username and password.
-
-> Starting in Chrome 81, Integrated Authentication is [disabled by default for
-> off-the-record (Incognito/Guest)
-> profiles](https://bugs.chromium.org/p/chromium/issues/detail?id=458508#c62),
-> and the user will need to enter the username and password.
-
-**Kerberos SPN generation**
-
-> When a server or proxy presents Chrome with a Negotiate challenge, Chrome
-> tries to generate a Kerberos SPN (Service Principal Name) based on the host
-> and port of the original URI. Unfortunately, the server does not indicate what
-> the SPN should be as part of the authentication challenge, so Chrome (and
-> other browsers) have to guess what it should be based on standard conventions.
-
-> The default SPN is: HTTP/<host name>, where <host name> is the
-> canonical DNS name of the server. This mirrors the SPN generation logic of IE
-> and Firefox.
-
-> The SPN generation can be customized via policy settings:
-
-> * [DisableAuthNegotiateCnameLookup](/administrators/policy-list-3#DisableAuthNegotiateCnameLookup)
- determines whether the original hostname in the URL is used rather
- than the canonical name. If left unset or set to false, Chrome
- uses the canonical name.
-> * [EnableAuthNegotiatePort](/administrators/policy-list-3#EnableAuthNegotiatePort)
- determines whether the port is appended to the SPN if it is a
- non-standard (not 80 or 443) port. If set to true, the port is
- appended. Otherwise (or if left unset) the port is not used.
-
-> For example, assume that an intranet has a DNS configuration like
-
-> auth-a.example.com IN CNAME auth-server.example.com
-
-> auth-server.example.com IN A 10.0.5.3
-
-> <table>
-> <tr>
-> <td> URL</td>
-> <td> Default SPN </td>
-> <td> With DisableAuthNegotiateCnameLookup</td>
-> <td> With EnableAuthNegotiatePort </td>
-> </tr>
-> <tr>
-> <td> http://auth-a</td>
-> <td> HTTP/auth-server.example.com</td>
-> <td> HTTP/auth-a</td>
-> <td> HTTP/auth-server.example.com</td>
-> </tr>
-> <tr>
-> <td> https://auth-a</td>
-> <td> HTTP/auth-server.example.com</td>
-> <td> HTTP/auth-a </td>
-> <td> HTTP/auth-server.example.com</td>
-> </tr>
-> <tr>
-> <td> http://auth-a:80</td>
-> <td> HTTP/auth-server.example.com</td>
-> <td> HTTP/auth-a</td>
-> <td> HTTP/auth-server.example.com</td>
-> </tr>
-> <tr>
-> <td> https://auth-a:443</td>
-> <td> HTTP/auth-server.example.com</td>
-> <td> HTTP/auth-a</td>
-> <td> HTTP/auth-server.example.com</td>
-> </tr>
-> <tr>
-> <td> http://auth-a:4678</td>
-> <td> HTTP/auth-server.example.com</td>
-> <td> HTTP/auth-a</td>
-> <td> HTTP/auth-server.example.com:4678</td>
-> </tr>
-> <tr>
-> <td> http://auth-a.example.com</td>
-> <td> HTTP/auth-server.example.com</td>
-> <td> HTTP/auth-a.example.com</td>
-> <td> HTTP/auth-server.example.com</td>
-> </tr>
-> <tr>
-> <td> http://auth-server</td>
-> <td> HTTP/auth-server.example.com</td>
-> <td> HTTP/auth-server</td>
-> <td> HTTP/auth-server.example.com</td>
-> </tr>
-> <tr>
-> <td> http://auth-server.example.com</td>
-> <td> HTTP/auth-server.example.com</td>
-> <td> HTTP/auth-server.example.com</td>
-> <td> HTTP/auth-server.example.com</td>
-> </tr>
-> </table>
-
-**Kerberos Credentials Delegation (Forwardable Tickets)**
-
-> Some services require delegation of the users identity (for example, an IIS
-> server accessing a MSSQL database). By default, Chrome does not allow this.
-> You can use the
-> [AuthNegotiateDelegateWhitelist](/administrators/policy-list-3#AuthNegotiateDelegateWhitelist)
-> policy to enable it for the servers.
-
-> Delegation does not work for proxy authentication.
-
-### **Negotiate external libraries**
-
-> On Windows, Negotiate is implemented using the SSPI libraries and depends on
-> code in secur32.dll.
-
-> On Android, Negotiate is implemented using an external Authentication app
-> provided by third parties. Details are given in [Writing a SPNEGO
-> Authenticator for Chrome on
-> Android](/developers/design-documents/http-authentication/writing-a-spnego-authenticator-for-chrome-on-android).
-> The AuthAndroidNegotiateAccountType policy is used to tell Chrome the Android
-> account type provided by the app, hence letting it find the app.
-
-> On other platforms, Negotiate is implemented using the system GSSAPI
-> libraries. The first time a Negotiate challenge is seen, Chrome tries to
-> dlopen one of several possible shared libraries. If it is unable to find an
-> appropriate library, Chrome remembers for the session and all Negotiate
-> challenges are ignored for lower priority challenges.
-
-> The [GSSAPILibraryName](/administrators/policy-list-3#GSSAPILibraryName)
-> policy can be used to specify the path to a GSSAPI library that Chrome should
-> use.
-
-> Otherwise, Chrome tries to dlopen/dlsym each of the following fixed names in
-> the order specified:
-
- * OSX: libgssapi_krb5.dylib
- * Linux: libgssapi_krb5.so.2, libgssapi.so.4, libgssapi.so.2,
- libgssapi.so.1
-
-> Chrome OS follows the Linux behavior, but does not have a system gssapi
-> library, so all Negotiate challenges are ignored.
-
-**Remaining work**
-
-* Support GSSAPI on Windows \[for MIT Kerberos for Windows or
- Heimdal\]
-* Offer [a policy to disable Basic authentication
- scheme](https://bugs.chromium.org/p/chromium/issues/detail?id=1025002)
- over unencrypted channels.
-
-**Questions?**
-
-> Please feel free to send mail to net-dev@chromium.org \ No newline at end of file