Configure a criação de conta e a conta criada com qualquer IdP (provedor de identidade) do OpenID Connect no Azure Active Directory B2C

AAD B2C (Azure AD B2C) dá suporte à Federação com provedores de identidade SAML 2,0. Este artigo mostra como habilitar as credenciais de uma conta de usuário do provedor de identidade SAML, permitindo que os usuários entrem com suas identidades sociais ou empresariais existentes, como ADFS e Salesforce.

Antes de começar, use o seletor Escolher um tipo de política para escolher o tipo de política que você está configurando. O Azure Active Directory B2C oferece dois métodos para definir como os usuários interagem com seus aplicativos: por meio de fluxos dos usuários predefinidos ou de políticas personalizadas totalmente configuráveis. As etapas necessárias neste artigo são diferentes para cada método.

Esse recurso só está disponível para políticas personalizadas. Para obter as etapas de instalação, escolha Política personalizada no seletor anterior.

Visão geral do cenário

Você pode configurar o Azure AD B2C para permitir que os usuários entrem em seu aplicativo com credenciais de IdP (provedores de identidade) social ou empresarial externos. Quando o AAD B2C confedere-se junto de um provedor de identidade SAML, ele atua comoprovedor de serviços iniciando uma solicitação SAML provedor de identidade e aguardando uma resposta SAML. No seguinte diagrama:

  1. O aplicativo inicia uma solicitação de autorização do AAD B2C. O aplicativo pode ser um aplicativoOAuth 2.0 ou OpenID Connect ou um provedor de serviços SAML.
  2. Na página de entrada AAD B2C, o usuário escolhe entrar com uma conta de provedor de identidade SAML (por exemplo, Contoso). O AAD B2C inicia uma solicitação de autorização SAML e leva o usuário para o provedor de identidade SAML para concluir a entrada.
  3. O provedor de identidade SAML devolve uma resposta SAML.
  4. O AAD B2C valida o token SAML, extrai as declarações, emite seu próprio token e leva o usuário de volta para o aplicativo.

Sign in with SAML identity provider flow

Pré-requisitos

Componentes da solução

Os componentes a seguir são solicitados para este cenário:

  • Oprovedor de serviçosSAML com a capacidade de receber, decodificar e responder as solicitações do SAML do AAD B2C.
  • Uma disponibilidade abertamente doponto de extremidade dos metadadosSAML do seu provedor de serviços.
  • Umlocatário do AAD B2C.

Importante

Seus pontos de extremidade devem estar em conformidade com os requisitos de segurança do Azure AD B2C. As versões e as criptografias de TLS mais antigas foram preterida. Para obter mais informações, consulte TLS do Azure AD B2C e requisitos do conjunto de criptografias.

Criar uma chave de política

Para estabelecer uma relação de confiança entre o AAD B2C e o seu provedor de identidade SAML, você precisa fornecer um certificado X509 válido junto com a chave privada. O AAD B2C assina as solicitações SAML usando a chave privada do certificado. O provedor de identidade valida a solicitação usando a chave de rede pública do certificado. A chave pública pode é acessível por meio de metadados de perfil técnico. Como alternativa, você pode fazer upload manualmente do arquivo .cer para seu provedor de identidade SAML.

Um certificado autoassinado é aceitável para a maioria dos cenários. Para ambientes de produção, é recomendável usar um certificado X509 emitido por uma autoridade de certificação. Além disso, conforme descrito posteriormente neste documento, para um ambiente de não produção é possível desabilitar a assinatura do SAML em ambos os lados.

Obter um certificado

Se você ainda não tiver um certificado, será possível usar um certificado autoassinado. Um certificado autoassinado é um certificado de segurança que não é assinado por uma autoridade de certificação (AC) e não fornece as garantias de segurança de um certificado assinado por uma AC.

No Windows, use o cmdlet New-SelfSignedCertificate no PowerShell para gerar um certificado.

  1. Execute o seguinte comando do PowerShell para gerar um certificado autoassinado. Modifique o argumento -Subject conforme apropriado para o aplicativo e o nome do locatário do Azure AD B2C, como contosowebapp.contoso.onmicrosoft.com. Você também pode ajustar a data -NotAfter para especificar uma expiração diferente para o certificado.

    New-SelfSignedCertificate `
        -KeyExportPolicy Exportable `
        -Subject "CN=yourappname.yourtenant.onmicrosoft.com" `
        -KeyAlgorithm RSA `
        -KeyLength 2048 `
        -KeyUsage DigitalSignature `
        -NotAfter (Get-Date).AddMonths(12) `
        -CertStoreLocation "Cert:\CurrentUser\My"
    
  2. No Windows, pesquise e selecione Gerenciar certificados de usuário

  3. Em Certificados – Usuário Atual, selecione Pessoal>Certificados>yourappname.yourtenant.onmicrosoft.com.

  4. Selecione o certificado e, em seguida, selecione Ação>Todas as Tarefas>Exportar.

  5. Selecione Próximo>Sim, exportar a chave privada>Próximo.

  6. Aceite os padrões para Formato de arquivo para exportação e selecione Próximo.

  7. Habilite a opção Senha, insira uma senha para o certificado e selecione Próximo.

  8. Para especificar um local para salvar seu certificado, selecione Procurar e navegue até um diretório de sua preferência.

  9. Na janela Salvar como, insira um Nome de arquivo e, em seguida, selecione Salvar.

  10. Selecione Avançar>Concluir.

Para o Azure AD B2C aceitar a senha do arquivo .pfx, a senha deve estar criptografada com a opção TripleDES-SHA1 no utilitário de exportação do repositório de certificados do Windows, em oposição ao AES256-SHA256.

Carregar o certificado

Você precisa armazenar o certificado em seu locatário do Azure AD B2C.

  1. Entre no portal do Azure.
  2. Se você tiver acesso a vários locatários, selecione o ícone Configurações no menu superior para alternar para o seu locatário do Azure Active Directory B2C no menu Diretórios + assinaturas.
  3. Escolha Todos os serviços no canto superior esquerdo do Portal do Azure, pesquise Azure AD B2C e selecione-o.
  4. Na página de Visão Geral, selecione Estrutura de Experiência de Identidade.
  5. Selecione Chaves de Política e, em seguida, escolha Adicionar.
  6. Para Opções, escolha Upload.
  7. Insira um Nome para a chave de política. Por exemplo, SAMLSigningCert. O prefixo B2C_1A_ será adicionado automaticamente ao nome da chave.
  8. Procure e selecione o arquivo .pfx do certificado com a chave privada.
  9. Clique em Criar.

Configuração do perfil técnico SAML

Defina o provedor de identidade SAML adicionando-o ao elementoClaimsProviders no arquivo de extensão da política. Os provedores das declarações contêm um perfil técnico SAML que determina os pontos de extremidade e os protocolos necessários para comunicar-se com o provedor de identidade SAML. Para adicionar um provedor de declarações junto com um perfil técnico SAML:

  1. Abra TrustFrameworkExtensions.xml.

  2. Localize o elemento ClaimsProviders. Se ele não existir, adicione-o sob o elemento raiz.

  3. Adicione um novo ClaimsProvider da seguinte maneira:

    <ClaimsProvider>
      <Domain>Contoso.com</Domain>
      <DisplayName>Contoso</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Contoso-SAML2">
          <DisplayName>Contoso</DisplayName>
          <Description>Login with your SAML identity provider account</Description>
          <Protocol Name="SAML2"/>
          <Metadata>
            <Item Key="PartnerEntity">https://your-AD-FS-domain/federationmetadata/2007-06/federationmetadata.xml</Item>
          </Metadata>
          <CryptographicKeys>
            <Key Id="SamlMessageSigning" StorageReferenceId="B2C_1A_SAMLSigningCert"/>
          </CryptographicKeys>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="assertionSubjectName" />
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="first_name" />
            <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="last_name" />
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="http://schemas.microsoft.com/identity/claims/displayname" />
            <OutputClaim ClaimTypeReferenceId="email"  />
            <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="contoso.com" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-idp"/>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    

Atualize os seguintes elementos XML com o valor relevante:

Elemento XML Valor
Provedor de Declarações\Domínio O nome de domínio que é usado paraentrada direta. Insira o nome de domínio que você deseja usar na entrada direta. Por exemplo: Contoso.com.
PerfilTécnico\NomedeExibição Esse valor será exibido no botão de entrada em sua tela de entrada. Por exemplo:Contoso.
Metadados\PartnerEntity URL dos metadados do provedor de identidade SAML. Ou você pode copiar os metadados do provedor de identidade e adicioná-los dentro do elemento CDATA<![CDATA[Your IDP metadata]]>.

Mapa das declarações

O elementoOutputClaimscontém uma lista de declarações retornadas pelo provedor de identidade SAML. Mapeie o nome da declaração definida em sua política para o nome da declaração definida no provedor de identidade. Verifique seu provedor de identidade da lista de declarações (asserções). Para obter mais informações, consulteClaims-Mapping.

No exemplo acima,Contoso-SAML2inclui as declarações retornadas por um provedor de identidade SAML:

  • A declaração assertionSubjectName é mapeada para a declaração issuerUserId.
  • A declaração first_name é mapeada para a declaração givenName.
  • A declaração last_name é mapeada para a declaração surname.
  • A declaraçãohttp://schemas.microsoft.com/identity/claims/displayname é mapeada para a declaração displayName.
  • A declaração email sem mapeamento de nome.

O perfil técnico também retorna declarações que não são retornadas pelo provedor de identidade:

  • A declaração identityProvider que contém o nome do provedor de identidade.
  • A declaração authenticationSource com um valor padrão de socialIdpAuthentication.

Acrescentar o perfil técnico à sessão SAML

Se você não tiver oSM-Saml-idpperfil técnico de sessão do SAML, adicione um à sua política de extensão. Localize a seção <ClaimsProviders> e adicione o snippet XML a seguir. Se sua política já contiver o perfil técnico SM-Saml-idp, pule para a próxima etapa. Para saber mais, confira gerenciamento de sessão de logon único.

<ClaimsProvider>
  <DisplayName>Session Management</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="SM-Saml-idp">
      <DisplayName>Session Management Provider</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.SamlSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="IncludeSessionIndex">false</Item>
        <Item Key="RegisterServiceProviders">false</Item>
      </Metadata>
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Adicione um percurso de usuário

Neste ponto, o provedor de identidade foi configurado, mas ainda não está disponível em nenhuma das páginas de entrada. Se você não tiver seu próprio percurso de usuário personalizado, crie a duplicata de um percurso de usuário de um modelo existente; caso contrário, passe para a próxima etapa.

  1. Abra o arquivo TrustFrameworkBase.xml do starter pack.
  2. Localize e copie todo o conteúdo do elemento UserJourney que inclui Id="SignUpOrSignIn".
  3. Abra o TrustFrameworkExtensions.xml e localize o elemento UserJourneys. Se o elemento não existir, adicione um.
  4. Cole todo o conteúdo do elemento UserJourney que você copiou como filho do elemento UserJourneys.
  5. Renomeie a ID do percurso de usuário. Por exemplo, Id="CustomSignUpSignIn".

Adicione o provedor de identidade a um percurso de usuário

Agora que você tem um percurso de usuário, adicione a ele o novo provedor de identidade. Primeiro, adicione um botão de entrada e, em seguida, vincule o botão a uma ação. A ação é o perfil técnico criado anteriormente.

  1. No percurso de usuário, localize o elemento da etapa de orquestração que inclui Type="CombinedSignInAndSignUp" ou Type="ClaimsProviderSelection". Normalmente é a primeira etapa de orquestração. O elementoClaimsProviderSelectionscontém uma lista de provedores de identidade que um usuário pode usar para se conectar. A ordem dos elementos controla a ordem dos botões de entrada apresentados para o usuário. Adicione um elemento XML ClaimsProviderSelection. Defina o valor de TargetClaimsExchangeId com um nome amigável.

  2. Na próxima etapa de orquestração, adicione um elemento ClaimsExchange. Defina a ID com o valor da ID de troca de declarações de destino. Atualize o valor de TechnicalProfileReferenceId para a ID do perfil técnico criado anteriormente.

O XML a seguir demonstra as duas primeiras etapas de orquestração de um percurso do usuário com o provedor de identidade:

<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
  <ClaimsProviderSelections>
    ...
    <ClaimsProviderSelection TargetClaimsExchangeId="ContosoExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="ContosoExchange" TechnicalProfileReferenceId="Contoso-SAML2" />
  </ClaimsExchanges>
</OrchestrationStep>

Configurar a política de terceira parte confiável

A política de terceira parte confiável, por exemplo SignUpSignIn.xml, especifica a jornada do usuário que o Azure AD B2C será executado. Localize o elemento DefaultUserJourney na terceira parte confiável. Atualize a ReferenceId para corresponder à ID do percurso do usuário, na qual você adicionou o provedor de identidade.

No exemplo a seguir, para o percurso do CustomSignUpSignIn usuário, o ReferenceId é definido como CustomSignUpSignIn:

<RelyingParty>
  <DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
  ...
</RelyingParty>

Carregar a política personalizada

  1. Entre no portal do Azure.
  2. Selecione o ícone Diretório + Assinatura na barra de ferramentas do portal e selecione o diretório que contém o locatário do Azure AD B2C.
  3. No portal do Azure, pesquise e selecione Azure AD B2C.
  4. Em Políticas, selecione Identity Experience Framework.
  5. Selecione Carregar política personalizadae, em seguida, carregue os dois arquivos de política que você alterou, na seguinte ordem: a política de extensão, por exemplo TrustFrameworkExtensions.xml, a política de terceira parte confiável, como SignUpSignIn.xml.

Configuração do seu provedor de identidade SAML

Conforme a política estiver configurada, você precisará configurar seu provedor de identidade SAML com os metadados AAD B2C SAML. Os metadados SAML são informações usadas no protocolo SAML para expor a configuração de sua política, o provedor de serviços. Ele define o local dos serviços, como entrada e saída, certificados, método de entrada e muito mais.

Cada provedor de identidade SAML tem etapas para configurar um provedor de serviços. Alguns provedores de identidade SAML exigem os metadados do AAD B2C, enquanto outros exigem que você passe o arquivo dos metadados manualmente e forneça as informações. Consulte a documentação do provedor de identidade das diretrizes.

O exemplo a seguir mostra um endereço de URL dos metadados SAML de um perfil técnico do AAD B2C:

https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<your-policy>/samlp/metadata?idptp=<your-technical-profile>

Ao usar umdomínio personalizado, utilize o formato a seguir:

https://your-domain-name/<your-tenant-name>.onmicrosoft.com/<your-policy>/samlp/metadata?idptp=<your-technical-profile>

Substitua os seguintes valores:

  • your-tenant-name junto do nome do locatário, como your-tenant.onmicrosoft.com.
  • your-domain-namejunto do nome de domínio personalizado, como login.contoso.com.
  • your-policy pelo nome da política. Por exemplo, B2C_1A_signup_signin_adfs.
  • your-technical-profilejunto do nome do perfil técnico do provedor de identidade SAML. Por exemplo, Contoso-SAML2.

Abra um navegador e navegue até a URL. Certifique-se de digitar a URL correta e ter acesso ao arquivo de metadados XML.

Testar sua política personalizada

  1. Entre no portal do Azure.
  2. Se você tiver acesso a vários locatários, selecione o ícone Configurações no menu superior para alternar para o seu locatário do Azure Active Directory B2C no menu Diretórios + assinaturas.
  3. No portal do Azure, pesquise e selecione Azure AD B2C.
  4. NasPolíticas,selecione Identity Experience Framework
  5. Selecione a política de terceira parte confiável, por exemplo, B2C_1A_signup_signin.
  6. Em Aplicativo, selecione o aplicativo Web que você registrou anteriormente. A URL de resposta deve mostrar https://jwt.ms.
  7. Selecione o botãoExecutar agora.
  8. Da página inscrever-se ou entrar, selecionecontoso para entrar com a conta contoso.

Se o processo de entrada for bem-sucedido, seu navegador será redirecionado para https://jwt.ms,que exibe o conteúdo do token retornado pelo AAD B2C.

Próximas etapas