Partilhar via


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

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

Este recurso está disponível apenas para políticas personalizadas. Para as etapas de configuração, selecione Política personalizada no seletor anterior.

Nota

No Azure Ative Directory B2C, as políticas personalizadas são projetadas principalmente para lidar com cenários complexos. Para a maioria dos cenários, recomendamos que você use fluxos de usuário internos. Se você não tiver feito isso, saiba mais sobre o pacote inicial de políticas personalizadas em Introdução às políticas personalizadas no Ative Directory B2C.

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

Pré-requisitos

Criar um certificado autoassinado

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

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 -Subject argumento conforme apropriado para seu aplicativo e nome de locatário do Azure AD B2C, como contosowebapp.contoso.onmicrosoft.com. Você também pode ajustar a -NotAfter data 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 computador Windows, procure e selecione Gerenciar certificados de usuário

  3. Em Certificados - Usuário Atual, selecione Certificados Pessoais>>yourappname.yourtenant.onmicrosoft.com.

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

  5. Selecione Avançar>Sim, exportar a chave>privada Avançar.

  6. Aceite os padrões para Exportar Formato de Arquivo e selecione Avançar.

  7. Ative a opção Senha , digite uma senha para o certificado e selecione Avançar.

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

  9. Na janela Guardar Como, introduza um Nome de ficheiro e, em seguida, selecione Guardar.

  10. Selecione Seguinte>Concluir.

Para que o Azure AD B2C aceite a senha do arquivo .pfx, a senha deve ser criptografada com a opção TripleDES-SHA1 no utilitário Exportação do Windows Certificate Store, em oposição a AES256-SHA256.

Criar uma chave de política

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

  1. Inicie sessão 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 seu locatário do Azure AD B2C no menu Diretórios + assinaturas .
  3. Escolha Todos os serviços no canto superior esquerdo do portal do Azure e, em seguida, procure e selecione Azure AD B2C.
  4. Na página Visão geral, selecione Identity Experience Framework.
  5. Selecione Chaves de política e, em seguida, selecione Adicionar.
  6. Em Opções, escolha Upload.
  7. Insira um Nome para a chave de política. Por exemplo, SAMLSigningCert. O prefixo B2C_1A_ é adicionado automaticamente ao nome da sua chave.
  8. Procure e selecione seu arquivo .pfx de certificado com a chave privada.
  9. Clique em Criar.

Adicionar um provedor de declarações

Se quiser que os usuários entrem usando uma conta do AD FS, você precisará definir 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-a ao elemento ClaimsProviders no arquivo de extensão da sua política. Para obter mais informações, consulte definir um provedor de identidade SAML.

  1. Abra o TrustFrameworkExtensions.xml.

  2. Encontre o elemento ClaimsProviders . Se 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 <ClaimsProviders> seção e adicione o seguinte trecho XML. Se a sua política já contiver o perfil técnico, avance para o SM-Saml-idp passo seguinte. Para obter mais informações, consulte 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. Guarde o ficheiro.

Adicionar uma jornada do 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 sua própria jornada de usuário personalizada, crie uma duplicata de uma jornada de usuário de modelo existente, caso contrário, continue para a próxima etapa.

  1. Abra o arquivo TrustFrameworkBase.xml do pacote inicial.
  2. Localize e copie todo o conteúdo do elemento UserJourney que inclui Id="SignUpOrSignIn"o .
  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 o ID da jornada do usuário. Por exemplo, Id="CustomSignUpSignIn".

Adicionar o provedor de identidade a uma jornada do usuário

Agora que você tem uma jornada do usuário, adicione o novo provedor de identidade à jornada do usuário. Primeiro, adicione um botão de início de sessão e, em seguida, associe o botão a uma ação. A ação é o perfil técnico que você criou anteriormente.

  1. Encontre o elemento da etapa de orquestração que inclui Type="CombinedSignInAndSignUp"o , ou Type="ClaimsProviderSelection" na jornada do usuário. Geralmente é o primeiro passo da orquestração. O elemento ClaimsProviderSelections contém uma lista de provedores de identidade com os quais um usuário pode entrar. A ordem dos elementos controla a ordem dos botões de entrada apresentados ao usuário. Adicione um elemento XML ClaimsProviderSelection . Defina o valor de TargetClaimsExchangeId como um nome amigável.

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

O XML a seguir demonstra as duas primeiras etapas de orquestração de uma jornada 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 executará. Encontre o elemento DefaultUserJourney na terceira parte confiável. Atualize o ReferenceId para corresponder ao ID de jornada do usuário, no qual você adicionou o provedor de identidade.

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

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

Carregar a política personalizada

  1. Inicie sessão 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 seu locatário do Azure AD B2C.
  3. No portal do Azure, procure e selecione Azure AD B2C.
  4. Em Políticas, selecione Identity Experience Framework.
  5. Selecione Carregar Política Personalizada e, em seguida, carregue os dois ficheiros de política que alterou, pela seguinte ordem: a política de extensão, por exemplo TrustFrameworkExtensions.xml, e, em seguida, a política de entidade confiadora, como SignUpSignIn.xml.

Configurar uma relação 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, você precisa criar uma 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 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, use 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 com o nome do locatário, como your-tenant.onmicrosoft.com.
  • seu-domínio-nome com seu nome de domínio personalizado, como login.contoso.com.
  • A sua política com o nome da sua apólice. Por exemplo, B2C_1A_signup_signin_adfs.
  • seu-técnico-perfil com o nome do seu perfil técnico do provedor de identidade SAML. Por exemplo, Contoso-SAML2.

Abra um navegador e navegue até o URL. Certifique-se de digitar a URL correta e que você tenha acesso ao arquivo de metadados XML. Para adicionar uma nova relação de confiança de terceira parte confiável usando o snap-in Gerenciamento do AD FS e definir manualmente as configurações, execute o procedimento a seguir em um servidor de federação. A associação a Administradores ou equivalente no computador local é o mínimo necessário para concluir este procedimento.

  1. No Gestor de Servidores, selecione Ferramentas e, em seguida, selecione Gestão do AD FS.

  2. Selecione Adicionar Fidedignidade de Entidade Confiadora.

  3. Na página Bem-vindo, escolha Reconhecimento de declarações e, em seguida, selecione Iniciar.

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

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

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

  7. Na página Pronto para Adicionar Confiança, revise as configurações e selecione Avançar para salvar as informações de confiança da terceira parte confiável.

  8. Na página Concluir, selecione Fechar, esta 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 LDAP como declarações.

  11. Forneça um nome de regra de declaração. Para o repositório de atributos, selecione Selecionar Ative Directory, adicione as seguintes declarações e, em seguida, selecione Concluir e OK.

    Atributo LDAP Tipo de sinistro de saída
    Nome do Usuário-Principal userPrincipalName
    Apelido family_name
    Nome próprio given_name
    Endereço de e-mail Correio eletrónico
    Nome de exibição nome

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

  12. Com base no tipo de certificado, poderá ter de definir o algoritmo HASH. Na janela de propriedades de confiança da terceira parte confiável (B2C Demo), selecione a guia Avançado e altere o algoritmo de hash seguro para SHA-256, e selecione Ok.

  13. No Gestor de Servidores, selecione Ferramentas e, em seguida, selecione Gestão do AD FS.

  14. Selecione a relação de confiança de terceira parte confiável que você criou, selecione Atualizar a partir de Metadados de Federação e, em seguida, selecione Atualizar.

Testar sua política personalizada

  1. Inicie sessão 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 seu locatário do Azure AD B2C no menu Diretórios + assinaturas .
  3. No portal do Azure, procure e selecione Azure AD B2C.
  4. Em Políticas, selecione Identity Experience Framework
  5. Selecione sua política de terceira parte confiável, por exemplo B2C_1A_signup_signin.
  6. Em Aplicativo, selecione um aplicativo Web que você registrou anteriormente. O URL de resposta deve mostrar https://jwt.ms.
  7. Selecione o botão Executar agora .
  8. Na página de inscrição ou 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.

Solução de problemas do serviço AD FS

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

  1. Na barra Pesquisa do Windows, escreva Visualizador de Eventos e, em seguida, selecione a aplicação de ambiente de trabalho Visualizador de Eventos.
  2. Para exibir o log de um computador diferente, clique com o botão direito do mouse em Visualizar Eventos (local). Selecione Conectar a outro computador e preencha os campos para preencher a caixa de diálogo Selecionar computador .
  3. No Visualizador de Eventos, abra os Logs de Aplicativos e Serviços.
  4. Selecione AD FS e, em seguida, selecione Admin.
  5. Para exibir mais informações sobre um evento, clique duas vezes no evento.

A solicitação SAML não é 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 é assinada com o algoritmo de assinatura, mas o algoritmo rsa-sha256de 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. Os metadados XmlSignatureAlgorithm controlam o SigAlg valor do parâmetro (cadeia de caracteres de consulta ou parâmetro post) na solicitação SAML. O exemplo a seguir configura o Azure AD B2C para usar o algoritmo de rsa-sha256 assinatura.

<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 Gestor de Servidores, selecione Ferramentas e, em seguida, selecione Gestão do AD FS.
  2. Selecione a Confiança da Terceira Parte Confiável que você criou anteriormente.
  3. Selecione Propriedades e, em seguida, selecione Avançar
  4. Configure o Algoritmo hash seguro e selecione OK para guardar as alterações.

A solicitação HTTP-Redirect não contém o parâmetro necessário 'Signature' para uma solicitação assinada (AADB2C90168)

Opção 1: Definir as respostas assinadas como false 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 'Signature' 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: Definir a terceira parte confiável no AD FS para assinar Mensagem e Asserçã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 Set-AdfsRelyingPartyTrust -TargetName <RP Name> -SamlResponseSignature MessageAndAssertion o cmdlet para assinar Mensagem e Declaração.
  2. Execute Set-AdfsRelyingPartyTrust -TargetName <RP Name> e confirme se a propriedade SamlResponseSignature está definida como MessageAndAssertion.