To discover the authoritative Identity Provider for a given email address:
-
Extract the domain name from the email address and remember this as the Original Domain.
-
Using HTTPS, attempt to GET
/.well-known/browseridfrom the Original Domain. -
Depending on the response:
a. If the document is absent, invalid, or explicitly disables BrowserID support, then the domain must not be considered authoritative. Clients may return to Step 2, substituting a Fallback Identity Provider for the Original Domain.
b. If the document explicitly delegates to another domain, return to Step 2, substituting the delegated domain for the Original Domain.
c. If the document is complete and valid, the discovered domain should be considered authoritative.
All requests for a /.well-known/browserid file must include a query parameter, domain, whose value is the domain initially derived in Step 1. This parameter may be omitted if and only if the value is identical to the domain being queried in Step 2.
Example: Direct support by the user's domain.
- The user is
alice@example.com, thus the Original Domain isexample.com- GET
https://example.com/.well-known/browserid?domain=example.com- The response is valid:
example.comis authoritative foralice@example.comExample: Two levels of delegation by the user's domain.
- The user is
alice@example.com, thus the Original Domain isexample.com- GET
https://example.com/.well-known/browserid?domain=example.com- The response delegates to
example.org- GET
https://example.org/.well-known/browserid?domain=example.com- The response delegates to
accounts.example.org- GET
https://accounts.example.org/.well-known/browserid?domain=example.com- The response is valid:
accounts.example.orgis authoritative foralice@example.comExample: No direct support by the user's domain.
- The user is
alice@example.com, thus the Original Domain isexample.com- GET
https://example.com/.well-known/browserid?domain=example.com- The response is not a valid Support Document. Attempt discovery at against the
fallback.testFallback Identity Provider.- GET
https://fallback.test/.well-known/browserid?domain=example.com- The response is valid:
fallback.testis authoritative foralice@example.comThe
?domain=example.comparameter could be omitted only in the second step of each example above. All subsequent steps would still require the?domain=example.comparameter.