Definir um perfil técnico OAuth2 numa política personalizada do Azure Active Directory B2C
Nota
No Azure Active Directory B2C, as políticas personalizadas são concebidas principalmente para abordar cenários complexos. Para a maioria dos cenários, recomendamos que utilize fluxos de utilizador incorporados. Se ainda não o fez, saiba mais sobre o pacote de introdução de políticas personalizadas em Introdução às políticas personalizadas no Active Directory B2C.
O Azure Active Directory B2C (Azure AD B2C) fornece suporte para o fornecedor de identidade do protocolo OAuth2. O OAuth2 é o protocolo principal para autorização e autenticação delegada. Para obter mais informações, veja RFC 6749 The OAuth 2.0 Authorization Framework (OAuth 2.0 Authorization Framework). Com um perfil técnico do OAuth2, pode federar com um fornecedor de identidade baseado em OAuth2, como o Facebook. A federação com um fornecedor de identidade permite que os utilizadores iniciem sessão com as identidades sociais ou empresariais existentes.
Protocolo
O atributo Nome do elemento Protocolo tem de ser definido como OAuth2
. Por exemplo, o protocolo para o perfil técnico Facebook-OAUTH é OAuth2
:
<TechnicalProfile Id="Facebook-OAUTH">
<DisplayName>Facebook</DisplayName>
<Protocol Name="OAuth2" />
...
Afirmações de entrada
Os elementos InputClaims e InputClaimsTransformations não são necessários . Contudo, poderá querer enviar mais parâmetros para o seu fornecedor de identidade. O exemplo seguinte adiciona o parâmetro domain_hint cadeia de consulta com o valor de ao pedido de contoso.com
autorização.
<InputClaims>
<InputClaim ClaimTypeReferenceId="domain_hint" DefaultValue="contoso.com" />
</InputClaims>
Afirmações de saída
O elemento OutputClaims contém uma lista de afirmações devolvidas pelo fornecedor de identidade OAuth2. Poderá ter de mapear o nome da afirmação definida na política para o nome definido no fornecedor de identidade. Também pode incluir afirmações que não são devolvidas pelo fornecedor de identidade, desde que defina o DefaultValue
atributo.
O elemento OutputClaimsTransformations pode conter uma coleção de elementos OutputClaimsTransformation que são utilizados para modificar as afirmações de saída ou gerar novas.
O exemplo seguinte mostra as afirmações devolvidas pelo fornecedor de identidade do Facebook:
- A afirmação first_name está mapeada para a afirmação givenName .
- A reivindicação last_name está mapeada para a reivindicação do sobrenome .
- A afirmação displayName sem mapeamento de nomes.
- A afirmação de e-mail sem mapeamento de nomes.
O perfil técnico também devolve afirmações que não são devolvidas pelo fornecedor de identidade:
- A afirmação identityProvider que contém o nome do fornecedor de identidade.
- A afirmação authenticationSource com um valor predefinido de socialIdpAuthentication.
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="id" />
<OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="first_name" />
<OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="last_name" />
<OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
<OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" />
<OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="facebook.com" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
</OutputClaims>
Metadados do ponto final de autorização
O fluxo de autorização começa quando Azure AD B2C direciona o utilizador para o ponto final de fornecedores /authorize
de identidade OAuth2. A chamada para o ponto final de autorização é a parte interativa do fluxo, onde o utilizador toma medidas. Neste momento, é pedido ao utilizador para concluir o início de sessão no fornecedor de identidade do OAuth2. Por exemplo, ao introduzir o respetivo nome de utilizador e palavra-passe.
Azure AD B2C cria um pedido de autorização ao fornecer o ID de cliente, âmbitos, URI de redirecionamento e outros parâmetros de que precisa para adquirir um token de acesso do fornecedor de identidade. Esta secção descreve os metadados do ponto final de autorização, que permitem configurar o pedido para o /authorize
ponto final do fornecedor de identidade.
O pedido para o ponto final de autorização é sempre HTTP GET. O exemplo seguinte demonstra uma chamada para o ponto final de autorização.
GET https://login.contoso.com/oauth/v2/authorization?
client_id=12345
&response_type=code
&response_mode=query
&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob
&scope=profile%20offline_access
&redirect_uri=https%3a%2f%2fabrikam.b2clogin.com%2fabrikam.onmicrosoft.com%2foauth2%2fauthresp
&state=...
A tabela seguinte lista os metadados do ponto final de autorização.
Atributo | Necessário | Descrição |
---|---|---|
authorization_endpoint |
Sim | O URL do ponto final de autorização de acordo com RFC 6749. |
client_id |
Yes | O identificador da aplicação do fornecedor de identidade. |
AdditionalRequestQueryParameters |
No | Parâmetros de consulta de pedidos adicionais. Por exemplo, poderá querer enviar parâmetros adicionais para o seu fornecedor de identidade. Pode incluir vários parâmetros através do delimitador de vírgulas. |
response_mode |
No | O método que o fornecedor de identidade utiliza para enviar o resultado de volta para Azure AD B2C. Valores possíveis: query , form_post (predefinição) ou fragment . |
scope |
No | O âmbito do pedido definido de acordo com a especificação do fornecedor de identidade OAuth2.
openid Como , profile e email . |
UsePolicyInRedirectUri |
No | Indica se deve utilizar uma política ao construir o URI de redirecionamento. Quando configurar a aplicação no fornecedor de identidade, tem de especificar o URI de redirecionamento. O URI de redirecionamento aponta para Azure AD B2C, https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp . Se especificar true , terá de adicionar um URI de redirecionamento para cada política que utilizar. Por exemplo: https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/{policy-name}/oauth2/authresp . |
Metadados de ponto final de token
Depois de o utilizador concluir a autenticação no ponto final de autorização do fornecedor de identidade, é devolvida uma resposta que contém a autorização code
ao Azure AD B2C. Azure AD B2C resgata o código de autorização de um token de acesso ao enviar um pedido POST para o /token
ponto final do fornecedor de identidade. Esta secção descreve os metadados do ponto final do token, que permitem configurar o pedido para o /token
ponto final do fornecedor de identidade.
O seguinte pedido HTTP mostra uma Azure AD chamada B2C para o ponto final do token do fornecedor de identidade.
POST https://contoso/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&client_id=12345&scope=profile offline_access&code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...
A tabela seguinte lista os metadados do ponto final do token.
Atributo | Necessário | Descrição |
---|---|---|
AccessTokenEndpoint |
Sim | O URL do ponto final do token. Por exemplo, https://www.linkedin.com/oauth/v2/accessToken . |
HttpBinding |
No | O enlace HTTP esperado para o ponto final do token. Valores possíveis: GET ou POST . |
AccessTokenResponseFormat |
No | O formato da chamada de ponto final do token de acesso. Por exemplo, o Facebook requer um método HTTP GET, mas a resposta do token de acesso está no formato JSON. Valores possíveis: Default , Json e JsonP . |
ExtraParamsInAccessTokenEndpointResponse |
No | Contém os parâmetros adicionais que podem ser devolvidos na resposta do AccessTokenEndpoint por alguns fornecedores de identidade. Por exemplo, a resposta de AccessTokenEndpoint contém um parâmetro adicional, como openid , que é um parâmetro obrigatório para além do access_token numa cadeia de consulta de pedido ClaimsEndpoint . Vários nomes de parâmetros devem ser escapados e separados pela vírgula "", delimitador. |
token_endpoint_auth_method |
No | Especifica como Azure AD B2C envia o cabeçalho de autenticação para o ponto final do token. Valores possíveis: client_secret_post (predefinição) e client_secret_basic , private_key_jwt . Para obter mais informações, veja a secção Autenticação de cliente do OpenID Connect. |
token_signing_algorithm |
No | Especifica o algoritmo de assinatura a utilizar quando token_endpoint_auth_method estiver definido como private_key_jwt . Valores possíveis: RS256 (predefinição) ou RS512 . |
Configurar o método de enlace HTTP
Por predefinição, o pedido para o ponto final do token utiliza HTTP POST.
<Item Key="AccessTokenEndpoint">https://contoso.com/oauth2/token</Item>
<Item Key="HttpBinding">POST</Item>
A seguinte chamada HTTP demonstra uma chamada para o ponto final do token com o pedido HTTP POST:
POST /oauth2/token
client_id=abcd&client_secret=1234&redirect_uri=https%3a%2f%2fcontoso.b2clogin.com%2fcontoso.onmicrosoft.com%2foauth2%2fauthresp&code=12345&grant_type=authorization_code
Para os fornecedores de identidade que requerem a utilização do método HTTP GET no /token
ponto final, defina os HttpBinding
metadados como GET
. Tenha em atenção que, no exemplo seguinte, o AccessTokenResponseFormat
está definido como json
, uma vez que o ponto final do token devolve a resposta no formato JSON.
<Item Key="AccessTokenEndpoint">https://contoso.com/oauth2/token</Item>
<Item Key="HttpBinding">GET</Item>
<Item Key="AccessTokenResponseFormat">json</Item>
GET /oauth2/token?client_id=abcd&client_secret=1234&redirect_uri=https%3a%2f%2fcontoso.b2clogin.com%2fcontoso.onmicrosoft.com%2foauth2%2fauthresp&code=12345&grant_type=authorization_code
Configurar o formato de resposta do token de acesso
Para fornecedores de identidade que suportam o método HTTP POST, o AccessTokenResponseFormat
está predefinido como json
. Se o fornecedor de identidade suportar o pedido HTTP GET, tem de definir explicitamente o formato json
de resposta do token de acesso.
<Item Key="AccessTokenEndpoint">https://contoso.com/oauth2/token</Item>
<Item Key="HttpBinding">GET</Item>
<Item Key="AccessTokenResponseFormat">json</Item>
O exemplo seguinte demonstra uma resposta de ponto final de token no formato JSON:
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlBFcG5...",
"token_type": "Bearer",
"not_before": 1637924390,
"expires_in": 960000,
}
Configurar o método de autenticação
Os pedidos para o ponto final do token requerem sempre autenticação. Por predefinição, Azure AD B2C fornece ao fornecedor de identidade credenciais de cliente. Por predefinição, o método de autenticação é client_secret_post
, incluindo as credenciais do cliente (client_id
e client_secret
) no corpo do pedido.
O seguinte pedido HTTP para o ponto final do token contém o client_id
e o client_secret
nos dados POST. Para pedidos client_id
GET e os client_secret
estão incluídos nos parâmetros da cadeia de consulta.
POST /oauth2/token
client_id=abcd&client_secret=1234&redirect_uri=https%3a%2f%2fcontoso.b2clogin.com%2fcontoso.onmicrosoft.com%2foauth2%2fauthresp&code=12345&grant_type=authorization_code
Para os fornecedores de identidade que requerem a utilização da autenticação básica HTTP no ponto /token
final, configure os token_endpoint_auth_method
metadados para client_secret_basic
. Com este tipo de método de autenticação, as credenciais de cliente são transmitidas ao fornecedor de identidade através do esquema de autenticação HTTP Basic.
<Item Key="AccessTokenEndpoint">https://contoso.com/oauth2/token</Item>
<Item Key="token_endpoint_auth_method">client_secret_basic</Item>
O seguinte pedido HTTP demonstra uma chamada para o ponto final do token com autenticação básica HTTP. O cabeçalho de autorização contém o ID de cliente e o segredo do cliente, no formato client_ID:client_secret
, codificado em base64.
POST /oauth2/token
Authorization: Basic YWJjZDoxMjM0
redirect_uri=https%3a%2f%2fcontoso.b2clogin.com%2fontoso.onmicrosoft.com%2foauth2%2fauthresp&code=12345&grant_type=authorization_code
Para fornecedores de identidade que suportam a autenticação JWT de chave privada, configure os token_endpoint_auth_method
metadados para private_key_jwt
. Com este tipo de método de autenticação, o certificado fornecido ao Azure AD B2C é utilizado para gerar uma asserção assinada, que é transmitida ao fornecedor de identidade através do client_assertion
parâmetro . O client_assertion_type
conjunto como urn:ietf:params:oauth:client-assertion-type:jwt-bearer
. Os token_signing_algorithm
metadados especificam o algoritmo de assinatura do token JWT.
<Item Key="AccessTokenEndpoint">https://contoso.com/oauth2/token</Item>
<Item Key="token_endpoint_auth_method">private_key_jwt</Item>
<Item Key="token_signing_algorithm">RS256</Item>
O seguinte pedido HTTP demonstra uma chamada para o ponto final do token com a autenticação JWT de chave privada.
POST /oauth2/token
client_assertion=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImtpZCI6IjJFRFg0dWRYeDIxbXNoaXdJVzczMUY3OUZSbFJiUDZXVXJyZmktR1RFeVkifQ.eyJpc3MiOiJhYmNkIiwiZXhwIjoxNjM3OTI5ODY0LCJuYmYiOjE2Mzc5Mjk1NjQsImF1ZCI6Imh0dHBzOi8vNWRlNC0xMDktNjQtMTI0LTUzLm5ncm9rLmlvL2FjY2Vzc190b2tlbiIsImp0aSI6IjVxQWlGV2lEODNDbU1KWWNrejBRdGc9PSIsInN1YiI6ImFiY2QiLCJpYXQiOjE2Mzc5Mjk1NjR9.C4OtRnrLaQatpT5LP45O5Nb418S4v8yZi_C42ld440w&client_id=abcd&client_assertion_type=urn%3aietf%3aparams%3aoauth%3aclient-assertion-type%3ajwt-bearer&redirect_uri=https%3a%2f%2fcontoso.b2clogin.com%2fcontoso.onmicrosoft.com%2foauth2%2fauthresp&code=12345&grant_type=authorization_code
Metadados do ponto final de informações do utilizador
Depois de Azure AD B2C obter o token de acesso do fornecedor de identidade OAuth2, faz uma chamada para o ponto final de informações do utilizador. O ponto final de informações do utilizador, também conhecido como ponto final de afirmações, foi concebido para obter afirmações sobre o utilizador autenticado. Azure AD B2C utiliza a autenticação de token de portador para autenticar no ponto final de informações de utilizador dos fornecedores de identidade. O token de portador é o token de acesso que Azure AD B2C obtém do ponto final dos fornecedores /token
de identidade.
O pedido para o ponto final de informações do utilizador é sempre HTTP GET. O token de acesso é enviado num parâmetro de cadeia de consulta com o nome access_token
. O seguinte pedido HTTP mostra uma chamada para o ponto final de informações do utilizador com o token de acesso no parâmetro da cadeia de consulta.
GET /oauth2/claims?access_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlBFcG5...
A tabela seguinte lista os metadados do ponto final de informações do utilizador.
Atributo | Necessário | Descrição |
---|---|---|
ClaimsEndpoint |
Sim | O URL do ponto final de informações do utilizador. Por exemplo, https://api.linkedin.com/v2/me . |
ClaimsEndpointAccessTokenName |
No | O nome do parâmetro da cadeia de consulta do token de acesso. Valor predefinido: access_token . |
ClaimsEndpointFormatName |
No | O nome do parâmetro da cadeia de consulta de formato. Por exemplo, pode definir o nome como format neste ponto https://api.linkedin.com/v1/people/~?format=json final de afirmações do LinkedIn . |
ClaimsEndpointFormat |
No | O valor do parâmetro da cadeia de consulta de formato. Por exemplo, pode definir o valor como json neste ponto https://api.linkedin.com/v1/people/~?format=json final de afirmações do LinkedIn. |
BearerTokenTransmissionMethod |
No | Especifica como o token é enviado. O método predefinido é uma cadeia de consulta. Para enviar o token como cabeçalho de pedido, defina como AuthorizationHeader . |
ExtraParamsInClaimsEndpointRequest |
No | Contém os parâmetros adicionais que podem ser devolvidos no pedido ClaimsEndpoint por alguns fornecedores de identidade. Vários nomes de parâmetros devem ser escapados e separados pela vírgula "", delimitador. |
Configurar o parâmetro da cadeia de consulta do token de acesso
O ponto final de informações do utilizador pode exigir que o token de acesso seja enviado num parâmetro de cadeia de consulta específico. Para alterar o nome do parâmetro da cadeia de consulta, que contém o token de acesso, utilize os ClaimsEndpointAccessTokenName
metadados. No exemplo seguinte, o parâmetro da cadeia de consulta do token de acesso está definido como token
.
<Item Key="ClaimsEndpoint">https://contoso.com/oauth2/claims</Item>
<Item Key="ClaimsEndpointAccessTokenName">token</Item>
A seguinte chamada HTTP demonstra uma chamada para o ponto final de informações do utilizador com ClaimsEndpointAccessTokenName
definido como token
:
GET /oauth2/claims?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlBFcG5...
Configurar o formato de afirmações
O ClaimsEndpointFormatName
e ClaimsEndpointFormat
permitem-lhe enviar um parâmetro de cadeia de consulta de par chave-valor para o ponto final de informações do utilizador. O exemplo seguinte configura um parâmetro de cadeia de consulta com o nome format
, com o valor de json
.
<Item Key="ClaimsEndpoint">https://contoso.com/oauth2/claims</Item>
<Item Key="ClaimsEndpointFormatName">format</Item>
<Item Key="ClaimsEndpointFormat">json</Item>
O seguinte pedido HTTP demonstra uma chamada para o ponto final de informações do utilizador com ClaimsEndpointFormatName
e ClaimsEndpointFormat
configurado.
GET /oauth2/claims?format=json&access_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlBFcG5...
Configurar o método de transmissão de tokens de portador
Por predefinição, o token de acesso é enviado para o ponto final de informações do utilizador dos fornecedores de identidade através de um parâmetro de cadeia de consulta. Para enviar o token no cabeçalho HTTP Authorization
, defina BearerTokenTransmissionMethod
os metadados como AuthorizationHeader
.
<Item Key="ClaimsEndpoint">https://contoso.com/oauth2/claims</Item>
<Item Key="BearerTokenTransmissionMethod">AuthorizationHeader</Item>
O seguinte pedido HTTP demonstra como o token de acesso é transmitido quando BearerTokenTransmissionMethod
está definido como AuthorizationHeader
.
GET /oauth2/claims
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlBFcG5...
Transmitir parâmetros devolvidos pelo ponto final do token
Alguns fornecedores de identidade necessitam de transmitir parâmetros adicionais que são devolvidos do ponto final do token para o ponto final de informações do utilizador. Por exemplo, a resposta do ponto final do token contém um parâmetro chamado resource
, que é um parâmetro obrigatório do ponto final de informações do utilizador (além do token de acesso). Utilize os ExtraParamsInClaimsEndpointRequest
metadados para especificar quaisquer parâmetros adicionais a transmitir. Vários nomes de parâmetros devem ser escapados e separados pela vírgula "", delimitador.
O JSON seguinte demonstra uma devolução de payload JSON pelo ponto final do token com um parâmetro com o nome resource
.
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlBFcG5...",
"token_type": "Bearer",
"not_before": 1549647431,
"expires_in": 960000,
"resource": "f2a76e08-93f2-4350-833c-965c02483b11"
}
Para transmitir o resource
parâmetro para o ponto final de informações do utilizador, adicione os seguintes metadados:
<Item Key="ExtraParamsInClaimsEndpointRequest">resource</Item>
O seguinte pedido HTTP demonstra como o resource
parâmetro é transmitido para o ponto final de informações do utilizador.
GET /oauth2/claims?resource=f2a76e08-93f2-4350-833c-965c02483b11&access_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlBFcG5...
Ponto final da sessão final
Para terminar sessão do utilizador na aplicação, redirecione o utilizador para o ponto final de fim de sessão do Azure AD B2C (para OAuth2 e OpenID Connect) ou envie um LogoutRequest
(para SAML). Azure AD B2C limpará a sessão do utilizador a partir do browser. Após um pedido de fim de sessão, Azure AD B2C tenta terminar sessão a partir de quaisquer fornecedores de identidade federados através dos quais o utilizador possa ter iniciado sessão. O URI de início de sessão do fornecedor de identidade OAuth2 está configurado nos end_session_endpoint
metadados. Quando o utilizador terminar sessão na sua aplicação através do Azure AD B2C, será criado um iframe oculto que chamará o end_session_endpoint
na respetiva página de fim de sessão do Azure AD B2C.
A tabela seguinte lista os metadados do ponto final de informações do utilizador.
Atributo | Necessário | Descrição |
---|---|---|
end_session_endpoint |
Sim | O URL do ponto final da sessão final de acordo com RFC 6749. |
SingleLogoutEnabled |
No | Indica se durante o início de sessão o perfil técnico tenta terminar sessão a partir de fornecedores de identidade federados. Para obter mais informações, veja Azure AD início de sessão B2C. Valores possíveis: true (predefinição) ou false . |
Metadados genéricos do OAuth2
A tabela seguinte lista os metadados genéricos do fornecedor de identidade OAuth2. Os metadados descrevem como o perfil técnico OAuth2 processa a validação de tokens, obtém as afirmações e reagem às mensagens de erro.
Atributo | Necessário | Descrição |
---|---|---|
IdTokenAudience |
Não | O público do id_token. Se especificado, Azure AD B2C verifica se o token está numa afirmação devolvida pelo fornecedor de identidade e é igual ao especificado. |
ProviderName |
No | O nome do fornecedor de identidade. |
ResponseErrorCodeParamName |
No | O nome do parâmetro que contém a mensagem de erro devolvida através de HTTP 200 (OK). |
IncludeClaimResolvingInClaimsHandling |
No | Para afirmações de entrada e saída, especifica se a resolução de afirmações está incluída no perfil técnico. Valores possíveis: true , ou false (predefinição). Se quiser utilizar uma resolução de afirmações no perfil técnico, defina esta opção como true . |
ResolveJsonPathsInJsonTokens |
No | Indica se o perfil técnico resolve os caminhos JSON. Valores possíveis: true , ou false (predefinição). Utilize estes metadados para ler dados de um elemento JSON aninhado. Num OutputClaim, defina o PartnerClaimType como o elemento de caminho JSON que pretende exportar. Por exemplo: firstName.localized , ou data[0].to[0].email . |
Chaves criptográficas
O elemento CryptographicKeys contém o seguinte atributo:
Atributo | Necessário | Descrição |
---|---|---|
client_secret |
Sim | O segredo do cliente da aplicação do fornecedor de identidade. A chave criptográfica só é necessária se o response_types metadados estiver definido como code . Neste caso, Azure AD B2C faz outra chamada para trocar o código de autorização por um token de acesso. Se os metadados estiverem definidos como id_token , pode omitir a chave criptográfica. |
assertion_signing_key |
No | Quando os token_endpoint_auth_method metadados estiverem definidos como private_key_jwt , forneça um certificado X509 a utilizar para assinar a chave JWT. Esta chave deve ser-lhe fornecida pelo fornecedor de identidade OAuth2. |
URI de Redirecionamento
Quando configurar o URI de redirecionamento do seu fornecedor de identidade, introduza https://{tenant-name}.b2clogin.com/{tenant-name}.onmicrosoft.com/oauth2/authresp
. Certifique-se de que substitui {tenant-name}
pelo nome do inquilino (por exemplo, contosob2c). O URI de redirecionamento tem de estar em minúsculas.