Partilhar via


Configurar a inscrição e a entrada com o provedor de identidade SAML usando o Azure Ative Directory B2C

O Azure Ative Directory B2C (Azure AD B2C) dá suporte à federação com provedores de identidade SAML 2.0. Este artigo mostra como habilitar o login com uma conta de usuário de provedor de identidade SAML, permitindo que os usuários entrem com suas identidades sociais ou corporativas existentes, como ADFS e Salesforce.

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.

Descriçã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 provedores de identidade SAML (IdP) externos sociais ou corporativos. Quando o Azure AD B2C se federa com um provedor de identidade SAML, ele age como um provedor de serviços iniciando uma solicitação SAML para o provedor de identidade SAML e aguardando uma resposta SAML. No diagrama a seguir:

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

Sign in with SAML identity provider flow

Pré-requisitos

Componentes da solução

Os seguintes componentes necessários são para este cenário:

  • Um provedor de identidade SAML com a capacidade de receber, decodificar e responder a solicitações SAML do Azure AD B2C.
  • Um ponto de extremidade de metadados SAML disponível publicamente para seu provedor de identidade.
  • Um locatário do Azure AD B2C.

Importante

Seus pontos de extremidade devem estar em conformidade com os requisitos de segurança do Azure AD B2C. Versões e cifras TLS mais antigas foram preteridas. Para obter mais informações, consulte Azure AD B2C TLS e requisitos do pacote de codificação.

Criar uma chave de política

Para estabelecer confiança entre o Azure AD B2C e seu provedor de identidade SAML, você precisa fornecer um certificado X509 válido com a chave privada. O Azure AD B2C assina as solicitações SAML, usando a chave privada do certificado. O provedor de identidade valida a solicitação usando a chave pública do certificado. A chave pública é acessível através de metadados de perfil técnico. Como alternativa, você pode carregar manualmente o 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 que não seja de produção, você pode desabilitar a assinatura SAML em ambos os lados.

Obter um certificado

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.

Carregue o certificado

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.

Configurar o perfil técnico SAML

Defina o provedor de identidade SAML adicionando-o ao elemento ClaimsProviders no arquivo de extensão de sua política. Os provedores de declarações contêm um perfil técnico SAML que determina os pontos de extremidade e os protocolos necessários para se comunicar com o provedor de identidade SAML. Para adicionar um provedor de declarações com um perfil técnico 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 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
ClaimsProvider\Domínio O nome de domínio usado para entrada direta. Introduza o nome de domínio que pretende utilizar no início de sessão direto. Por exemplo, Contoso.com.
TechnicalProfile\DisplayName Este valor será apresentado no botão de início de sessão no ecrã de início de sessão. 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[Your IDP metadata]]>CDATA .

Mapeie as reivindicações

O elemento OutputClaims conté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 definido no provedor de identidade. Verifique o seu provedor de identidade para obter a lista de declarações (asserções). Para obter mais informações, consulte mapeamento de declarações.

No exemplo acima, Contoso-SAML2 inclui 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 reivindicação last_name é mapeada para a reivindicação de sobrenome .
  • A http://schemas.microsoft.com/identity/claims/displayname declaração é mapeada para a declaração displayName .
  • A declaração de e-mail 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.

Adicionar o perfil técnico da sessão SAML

Se você ainda não tiver o perfil técnico da SM-Saml-idp sessão SAML, adicione um à sua política de extensão. 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>

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 seu provedor de identidade SAML

Depois que sua política for configurada, você precisará configurar seu provedor de identidade SAML com os metadados SAML do Azure AD B2C. 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 diferentes para definir um provedor de serviços. Alguns provedores de identidade SAML solicitam os metadados do Azure AD B2C, enquanto outros exigem que você percorra o arquivo de metadados manualmente e forneça as informações. Consulte a documentação do seu provedor de identidade para obter orientação.

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.

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 para entrar com a conta da 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 Azure AD B2C.

Próximos passos