Compartilhar via


Adicionar o AD FS como um provedor de identidade SAML usando políticas personalizadas no Azure Active Directory B2C

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.

Observação

No Azure Active Directory B2C, as políticas personalizadas são projetadas principalmente para tratar de cenários complexos. Para a maioria dos cenários, recomendamos que você use fluxos de usuários predefinidos. Se você ainda não fez isso, saiba mais sobre o pacote de início de política personalizado em Introdução às políticas personalizadas no Active Directory B2C.

Este artigo mostra como habilitar a entrada de uma conta de usuário do AD FS usando políticas personalizadas no Azure AD B2C (Azure Active Directory B2C). Você habilita a credencial adicionando um provedor de identidade do SAML a uma política personalizada.

Pré-requisitos

Criará um certificado autoassinado

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.

Criar uma chave de política

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.

Adicionar um provedor de declarações

Se você quiser que os usuários entrem usando uma conta do AD FS, defina a conta como um provedor de declarações com o qual o Azure AD B2C pode se comunicar por meio de um ponto de extremidade. O ponto de extremidade fornece um conjunto de declarações que são usadas pelo Azure AD B2C para verificar se um usuário específico foi autenticado.

Você pode definir uma conta do AD FS como um provedor de declarações adicionando-o ao elemento ClaimsProviders no arquivo de extensão da política. Para obter mais informações, confira Definir um provedor de identidade 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 AD FS account</Description>
          <Protocol Name="SAML2"/>
          <Metadata>
            <Item Key="WantsEncryptedAssertions">false</Item>
            <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="userPrincipalName" />
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name"/>
            <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name"/>
            <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email"/>
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name"/>
            <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>
    
  4. Substitua your-AD-FS-domain pelo nome do domínio do AD FS e substitua o valor da declaração de saída identityProvider pelo DNS (valor arbitrário que indica o domínio).

  5. 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>
    
  6. Salve o arquivo.

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.

Configurar um objeto de confiança de terceira parte confiável do AD FS

Para usar o AD FS como um provedor de identidade no Azure AD B2C, é necessário criar um objeto de confiança de terceira parte confiável do AD FS com os metadados SAML do Azure AD B2C. O exemplo a seguir mostra um endereço de URL para os metadados do SAML de um perfil técnico do Azure AD B2C:

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

Ao usar um domínio personalizado, utilize o seguinte formato:

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. Para adicionar um novo objeto de confiança de terceira parte confiável usando o snap-in de Gerenciamento do AD FS e definir manualmente as configurações, execute o seguinte procedimento em um servidor de Federação. Associação em Administradores ou equivalente no computador local é o mínimo necessário para concluir esse procedimento.

  1. No Gerenciador do Servidor, selecione Ferramentas e escolha Gerenciamento do AD FS.

  2. Selecione Adicionar Relação de Confiança de Terceira Parte Confiável.

  3. Na Página inicial, escolha Com reconhecimento de declaração e, em seguida, clique em Iniciar.

  4. Na página Selecionar Fonte de Dados, selecione Importar dados sobre a terceira parte confiável publicados online ou em uma rede local, forneça a URL de metadados do Azure AD B2C e clique em Avançar.

  5. Na página Especificar Nome para Exibição, insira um Nome de exibição, em Notas, insira uma descrição para essa confiança de terceira parte confiável e clique em Avançar.

  6. Na página Escolher Política de Controle de Acesso, selecione uma política e, em seguida, clique em Avançar.

  7. Na página Pronto para Adicionar Objeto de Confiança, examine as configurações e, em seguida, clique em Avançar para salvar as informações de seu objeto de confiança de terceira parte confiável.

  8. Na página Concluir, clique em Fechar, essa ação exibe automaticamente a caixa de diálogo Editar Regras de Declaração.

  9. Selecione Adicionar Regra.

  10. Em Modelo de regra de declaração, selecione Enviar atributos do LDAP como declarações.

  11. Forneça um nome de Regra de declaração. Para o Repositório de atributos, selecione Selecionar Active Directory, adicione as seguintes declarações e clique em Concluir e OK.

    Atributo LDAP Tipo de declaração de saída
    User-Principal-Name userPrincipalName
    Sobrenome family_name
    Given-Name given_name
    E-Mail-Address email
    Display-Name name

    Observe que alguns desses nomes não serão exibidos na lista suspensa de tipo de declaração de saída. Você precisa digitá-los manualmente. (A lista suspensa é editável).

  12. Com base no tipo de certificado, talvez seja necessário definir o algoritmo de HASH. Na janela de propriedades de confiança de terceira parte confiável (Demonstração B2C), selecione a guia Avançado e altere o algoritmo de Secure hash para SHA-256, e clique em OK.

  13. No Gerenciador do Servidor, selecione Ferramentas e escolha Gerenciamento do AD FS.

  14. Selecione a terceira parte confiável que você criou, selecione Atualização dos metadados da federação e, em seguida, clique em Atualizar.

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ão Executar agora.
  8. Na página de inscrição ou de entrada, selecione Contoso AD FS para entrar com o provedor de identidade Contoso AD FS.

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 Azure AD B2C.

Como solucionar problemas de serviço do AD FS

O AD FS está configurado para usar o log de aplicativos do Windows. Se você tiver problemas para configurar o AD FS como um provedor de identidade SAML usando políticas personalizadas no Azure AD B2C, verifique o log de eventos do AD FS:

  1. Na Barra de pesquisa do Windows, digite Visualizador de Eventos e selecione o aplicativo da área de trabalho do Visualizador de Eventos.
  2. Para exibir o log de um computador diferente, clique com o botão direito do mouse em Visualizador de Eventos (local) . Selecione Conectar a outro computador e preencha os campos para completar a caixa de diálogo Selecionar Computador.
  3. No Visualizador de Eventos, abra Logs de aplicativos e serviços.
  4. Selecione AD FS e escolha Administrador.
  5. Para exibir mais informações sobre um evento, clique duas vezes no evento.

A solicitação SAML não está assinada com o evento de algoritmo de assinatura esperado

Esse erro indica que a solicitação SAML enviada pelo Azure AD B2C não está assinada com o algoritmo de assinatura esperado configurado no AD FS. Por exemplo, a solicitação SAML está assinada com o algoritmo de assinatura rsa-sha256, mas o algoritmo de assinatura esperado é rsa-sha1. Para corrigir esse problema, verifique se o Azure AD B2C e o AD FS estão configurados com o mesmo algoritmo de assinatura.

Opção 1: definir o algoritmo de assinatura no Azure AD B2C

Você pode configurar como assinar a solicitação SAML no Azure AD B2C. O metadados XmlSignatureAlgorithm controla o valor do parâmetro SigAlg (cadeia de caracteres de consulta ou parâmetro de postagem) na solicitação SAML. O exemplo a seguir configura o Azure AD B2C para usar o algoritmo de assinatura rsa-sha256.

<Metadata>
  <Item Key="WantsEncryptedAssertions">false</Item>
  <Item Key="PartnerEntity">https://your-AD-FS-domain/federationmetadata/2007-06/federationmetadata.xml</Item>
  <Item Key="XmlSignatureAlgorithm">Sha256</Item>
</Metadata>

Opção 2: definir o algoritmo de assinatura no AD FS

Como alternativa, você pode configurar o algoritmo de assinatura de solicitação SAML esperado no AD FS.

  1. No Gerenciador do Servidor, selecione Ferramentas e escolha Gerenciamento do AD FS.
  2. Selecione o Objeto de confiança de terceira parte confiável que você criou anteriormente.
  3. Selecione Propriedades e Avançar
  4. Configure o Algoritmo de hash seguro e selecione OK para salvar as alterações.

A solicitação de Redirecionamento HTTP não contém o parâmetro de 'Assinatura' necessário para uma solicitação assinada (AADB2C90168)

Opção 1: defina o ResponsesSigned como falso no Azure AD B2C

Você pode desabilitar o requisito de mensagem assinada no Azure AD B2C. O exemplo a seguir configura o Azure AD B2C para não exigir o parâmetro de 'Assinatura' para a solicitação assinada.

<Metadata>
  <Item Key="WantsEncryptedAssertions">false</Item>
  <Item Key="PartnerEntity">https://your-AD-FS-domain/federationmetadata/2007-06/federationmetadata.xml</Item>
  <Item Key="ResponsesSigned">false</Item>
</Metadata>

Opção 2: defina a terceira parte confiável no AD FS para assinar a Mensagem e a Declaração

Como alternativa, você pode configurar a terceira parte confiável no AD FS, conforme mencionado abaixo:

  1. Abra o PowerShell como Administrador e execute o cmdlet Set-AdfsRelyingPartyTrust -TargetName <RP Name> -SamlResponseSignature MessageAndAssertion para assinar a Mensagem e a Declaração.
  2. Execute Set-AdfsRelyingPartyTrust -TargetName <RP Name> e confirme se a propriedade SamlResponseSignature está definida como MessageAndAssertion.