Domínios anunciam sua capacidade de atuar como Provedores de Identidade Persona (IDPs) através da publicação de um documento de apoio em /.well-known/browserid
. Este documento formatado em JSON deve ser servido por HTTPS com o tipo de conteúdo application/json
.
Este documento pode especificar a forma de prestação e autenticar usuários, ou pode delegar sua autoridade para outro provedor de identidade.
Nota: você também deve consultar o EspecificaçProtocolo BrowserID como a referência técnica autorizada.
Supórte Basico
Um domínio que atua diretamente um um IDP deve fornecer três valores em seu documento de apoio:
chave pública
: A parte pública da chave criptográfica do domínio.autenticação
: A página do domínio para pedir aos usuários fazer login.provisionamento
: A página do domínio para certificar as identidades de seus usuários.
Arquivo exemplo /.well-known/browserid:
{ "public-key": { "algorithm": "RS", "n": "82818905405105134410187227495885391609221288015566078542117409373192106382993306537273677557482085204736975067567111831005921322991127165013340443563713385983456311886801211241492470711576322130577278575529202840052753612576061450560588102139907846854501252327551303482213505265853706269864950437458242988327", "e": "65537" }, "authentication": "/browserid/sign_in.html", "provisioning": "/browserid/provision.html" }
Delegated Support
HTTP redirects and other means of "moving" a /.well-known/browserid file are not permitted. If an IdP would like to delegate to another domain for authentication and provisioning, it may publish a support document which only contains an authority
entry.
Example /.well-known/browserid:
{ "authority": "subdomain.example.com" }
Then subdomain.example.com
would host its own support document, as per the example above.
The authority
field is specified as a hostname plus, optionally, a port. It may not contain a path. So "example.com
", "subdomain.example.com"
, and "subdomain.example.com:8080
" are all valid, but "subdomain.example.com/login
" is not.
A domain may delegate to any other domain, so long as the other domain publishes a /.well-known/browserid
document.
Checklist
- The document is formatted as valid JSON
- The document is served over SSL
- The document is served with a content type of "
application/json
" - The document is hosted on the domain exactly matching that in the email addresses assigned to users. For example:
example.com
, notwww.example.com
. - If delegating to another Identity Provider, the
authority
value is specified only as a hostname and, optionally, a port.
Many of these can be tested automatically with the check_primary_support script from the Persona codebase.