Assinar um pacote do MSIX com a autenticação do Device Guard

Importante

Microsoft Store para Empresas e Microsoft Store para Educação serão desativados no primeiro trimestre de 2023. Você pode continuar a usar as capacidades atuais de aplicativos gratuitos até esse momento. Para obter mais informações sobre essa alteração, consulte Evolving the Microsoft Store for Business and Education

Importante

O serviço de autenticação do Device Guard v2 (DGSS v2) já está disponível.

Maio de 2021: o mecanismo existente baseado na Web do serviço de autenticação do Device Guard v1 será desativado em 9 de junho de 2021. Faça a transição para a versão do serviço baseada no PowerShell (DGSS v2). Está disponível um pacote NuGet contendo os componentes DGSS v2 e a documentação de migração necessários. Leia os Termos de uso da Microsoft incluídos no pacote NuGet; observe que o uso de DGSS implica a aceitação desses termos. Caso tenha perguntas, entre em contato conosco em DGSSMigration@microsoft.com.

Observação

Após baixar microsoft.acs/dgss.client.nupkg, você pode renomear para .zip e extrair conteúdo de arquivos, além de documentação e informações adicionais.

A autenticação do Device Guard é um recurso do Device Guard disponível na Microsoft Store para Empresas e Educação. Ele permite que as empresas se certifiquem de que todos os aplicativos tenham uma fonte confiável. Você pode usar a SignTool no SDK do Windows e o dlib DGSSv2 no pacote NuGet para autenticar seus aplicativos do MSIX com a autenticação do Device Guard. Esse suporte a recursos permite que você incorpore a autenticação do Device Guard ao fluxo de trabalho de criação e a autenticação de pacotes do MSIX com facilidade.

A autenticação do Device Guard requer permissões na Microsoft Store para Empresas e usa a autenticação do Azure Active Directory (AD). Para autenticar um pacote MSIX com a autenticação do Device Guard, siga as etapas a seguir.

  1. Se ainda não o tiver feito, crie uma conta na Microsoft Store para Empresas ou na Microsoft Store para Educação.

    Observação

    Você só precisa usar esse portal para configurar as permissões da autenticação do Device Guard.

  2. Na Microsoft Store para Empresas (ou na Microsoft Store para Educação), atribua uma função para si com as permissões necessárias para executar a autenticação do Device Guard.
  3. Registre seu aplicativo no portal do Azure com as configurações adequadas para que possa usar a autenticação do Azure AD com a Microsoft Store para Empresas.
  4. Obtenha um token de acesso do Azure AD no formato JSON.
  5. Execute a SignTool para autenticar o pacote MSIX com a autenticação do Device Guard e passe o token de acesso do Azure AD obtido na etapa anterior.

As seções a seguir descrevem essas etapas mais detalhadamente.

Configure permissões para a autenticação do Device Guard

Para usar a autenticação do Device Guard na Microsoft Store para Empresas ou na Microsoft Store para Educação, você precisa da função de intérprete do Device Guard. Essa é a função com privilégios mínimos com capacidade de autenticação. Outras funções, como a de administrador global e a de proprietário da conta de cobrança, também podem autenticar.

Observação

A função de intérprete do Device Guard é usada quando você fazendo uma autenticação como um aplicativo. As funções de administrador global e proprietário da conta de cobrança são usadas quando você faz uma autenticação como uma pessoa conectada.

Para confirmar ou ceder funções:

  1. Entre no Microsoft Store para empresas.
  2. Selecione Gerenciar e, em seguida, Permissões.
  3. Exibir Funções.

Para obter mais informações, consulte Funções e permissões na Microsoft Store para Empresas e Educação.

Registrar seu aplicativo no portal do Azure

Para registrar seu aplicativo com as configurações adequadas para usar a autenticação do Azure AD com a Microsoft Store para Empresas:

  1. Navegue até https://portal.azure.com e autentique-se como administrador global de locatário.

  2. Navegue até o serviço do Azure Azure Active Directory.

  3. No menu lateral à esquerda, em Gerenciar, localize e selecione Registros de aplicativo.

  4. Na barra de menus, selecione Novo Registro.

  5. No campo Nome, insira DGSSv2.

    Observação

    O campo Nome é usado para facilitar a identificação do registro de aplicativo no portal do Azure. É possível usar qualquer nome desejado. Para efeitos desta versão de demonstração, utilizamos o DGSSv2 apenas para facilitar a identificação.

  6. Em Tipos de conta com suporte, selecione a configuração apropriada.

    • Contas somente neste diretório da organização (locatário único): essa opção é recomendada, a menos que você tenha uma necessidade específica de uma implantação multilocatário. Todas as contas de usuário e de convidado em seu diretório podem usar o aplicativo ou a API.
    • Contas em qualquer diretório organizacional (qualquer diretório do Azure AD – multilocatário): essa opção é melhor para uma organização que tem vários locatários do Azure AD, mas só precisa de um único ponto de confiança para assinatura de código. Todos os usuários com uma conta corporativa ou de estudante da Microsoft podem usar o aplicativo ou a API. Isso inclui as escolas e as empresas que usam o Office 365.
    • Contas em qualquer diretório organizacional (qualquer diretório do Azure AD – multilocatário) e contas Microsoft pessoais (por exemplo, Skype, Xbox): essa opção não é recomendada devido à sua disponibilidade de uso por contas Microsoft de nível do consumidor. Todos os usuários com uma conta Microsoft corporativa, de estudante ou pessoal podem usar o aplicativo ou a API. Isso inclui escolas e empresas que usam o Office 365, bem como contas pessoais que são usadas para fazer login em serviços como o Xbox e o Skype.
    • Somente contas Microsoft pessoais: assim como a última opção, essa também não é recomendada. Isso não ocorre apenas por permitir contas pessoais, mas porque essa opção só é compatível com contas pessoais. As contas do Azure AD são explicitamente bloqueadas. Contas pessoais usadas para fazer login em serviços como Xbox e Skype.
  7. No menu suspenso Redirecionar URI, selecione Cliente público/nativo (móvel e desktop) no menu suspenso de seleção. Insira https://dgss.microsoft.com na caixa de texto.

  8. Clique em Registrar

  9. No canto superior direito da página, localize a entrada rotulada como Redirecionar URIs. Selecione a linha abaixo dela rotulada como 0 web, 0 spa, 1 cliente público.

  10. Localize a entrada rotulada como Permitir fluxos de cliente público na seção Configurações avançadas. Defina o valor como Sim.

  11. Clique em Salvar na parte superior da página.

  12. No menu à esquerda, selecione Permissões da API.

  13. Na barra de menus, selecione Adicionar uma permissão. No menu suspenso, selecione a guia APIs que minha organização usa. Na caixa de pesquisa, digite Windows Store para Empresas.

Observação

Se a Windows Store para Empresas não aparecer na lista, abra uma nova guia do navegador e navegue até https://businessstore.microsoft.com. Depois, entre como administrador global de locatário. Feche a guia do navegador e pesquise novamente.

  1. Selecione Windows Store para Empresas e Permissões delegadas. Marque user_impersonation.
  2. Clique em Adicionar Permissões na parte inferior da página. No menu à esquerda, selecione Visão Geral para retornar à visão geral do registro de aplicativo DGSSv2.

Obter um token de acesso do Azure AD

Em seguida, obtenha um token de acesso do Azure AD para o Aplicativo Azure AD no formato JSON. Você pode fazer isso usando uma variedade de linguagens de scripts e de programação. Para obter mais informações sobre o processo, consulte Authorize access to Azure Active Directory web applications using the OAuth 2.0 code grant flow. Recomendamos que você recupere um token de atualização com o token de acesso, pois seu token de acesso expirará em uma hora.

Observação

Se a Windows Store para Empresas não aparecer na lista, abra uma nova guia do navegador e navegue até https://businessstore.microsoft.com. Depois, entre como administrador global de locatário. Feche a guia do navegador e pesquise novamente.

O exemplo do PowerShell a seguir demonstra como solicitar um token de acesso.

function GetToken()
{

    $c = Get-Credential -Credential $user
    
    $Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $c.UserName, $c.password
    $user = $Credentials.UserName
    $password = $Credentials.GetNetworkCredential().Password
    
    $tokenCache = "outfile.json"

    #replace <application-id> and <client_secret-id> with the Application ID from your Azure AD application registration
    $Body = @{
      'grant_type' = 'password'
      'client_id'= '<application-id>'
      'client_secret' = '<client_secret>'
      'resource' = 'https://onestore.microsoft.com'
      'username' = $user
      'password' = $password
    }

    $webpage = Invoke-WebRequest 'https://login.microsoftonline.com/common/oauth2/token' -Method 'POST'  -Body $Body -UseBasicParsing
    $webpage.Content | Out-File $tokenCache -Encoding ascii
}

Observação

Recomendamos que você salve o arquivo JSON para uso posterior.

Obter a DLL de autenticação do Device Guard versão 2

Para se autenticar com a autenticação do Device Guard versão 2, obtenha o Microsoft.Acs.Dlib.dll baixando o Pacote NuGet que será usado para autenticar seu pacote. Isso também é necessário para obter o certificado raiz.

Autentique o seu pacote

Quando tiver seu token de acesso do Azure AD, você poderá usar a SignTool para autenticar seu pacote com a autenticação do Device Guard. Para obter mais informações sobre como usar a SignTool para autenticar pacotes, consulte Autenticar um pacote do aplicativo usando a SignTool.

O exemplo de linha de comando a seguir demonstra como autenticar um pacote com a autenticação do Device Guard versão 2.

signtool sign /fd sha256 /dlib Microsoft.Acs.Dlib.dll /dmdf <Azure AAD in .json format> /t <timestamp-service-url> <your .msix package>

Observação

  • Os certificados gerados para a autenticação do Device Guard v2 são válidos por um dia. Recomendamos que você use uma das opções de carimbo de data/hora ao autenticar seu pacote. Se você não aplicar um carimbo de data/hora, a autenticação expirará em um dia e o aplicativo precisará ser autenticado novamente.
  • Verifique se o nome do fornecedor no manifesto do pacote corresponde ao certificado que você está usando para autenticar o pacote. Com esse recurso, será o seu certificado de folha. Por exemplo, se o certificado de folha for CompanyName, o nome do fornecedor no manifesto deverá ser CN=CompanyName. Caso contrário, haverá uma falha na operação de autenticação.
  • Só há suporte para o algoritmo SHA256.
  • Quando você autentica seu pacote com a autenticação do Device Guard, ele não está sendo enviado pela Internet.

Teste

Para fazer o teste, baixe o certificado raiz clicando aqui ou baixando o Pacote NuGet e obtendo-o com o comando:

Get-RootCertificate

Instale o certificado raiz em Autoridades de Certificação Raiz Confiáveis no seu dispositivo. Instale seu aplicativo recém-autenticado para verificar se você o autenticou com êxito com a autenticação do Device Guard.

Importante

Para obter o isolamento, implante a política de CI do WDAC para confiar em aplicativos autenticados com DGSSv2. Certifique-se de ler a documentação readme_cmdlets e a documentação de migração do DGSSv1 para o DGSSv2 incluída no pacote NuGet.

Erros comuns

Veja a seguir os erros comuns que podem ser encontrados.

  • 0x800700d: esse erro comum significa que o formato do arquivo JSON do Azure AD é inválido.
  • Talvez seja necessário aceitar os termos e condições da Microsoft Store para Empresas antes de baixar o certificado raiz da autenticação do Device Guard. Isso pode ser feito adquirindo um aplicativo gratuito no portal.