Autenticação baseada em token (HTTP/2) para o APNS

Visão geral

Este artigo explica sobre como usar o novo protocolo HTTP/2 do APNS com autenticação baseada em token.

Os principais benefícios de usar o novo protocolo incluem:

  • A geração de token é relativamente simples (em comparação com certificados)
  • Não há mais dadas de expiração – você está no controle dos seus tokens de autenticação e sua revogação
  • O conteúdo agora pode ser de até 4 KB
  • Comentários síncronos
  • Você está usando o protocolo mais recente da Apple – os certificados ainda usam o protocolo binário, que está marcado para substituição

O uso esse novo mecanismo pode ser realizado em duas etapas:

  • Obtenha as informações necessárias do portal da conta de Desenvolvedor da Apple.
  • Configure seu hub de notificações com as novas informações.

Os Hubs de Notificação agora estão configurados para usar o novo sistema de autenticação com APNS.

Observe que, se você migrar do uso de credenciais de certificado para o APNS, as propriedades do token substituirão seu certificado em nosso sistema, mas o aplicativo continuará a receber notificações diretamente.

Obtendo informações de autenticação da Apple

Para habilitar a autenticação baseada em token, você precisará das seguintes propriedades da conta de Desenvolvedor da Apple:

Identificador da chave

O identificador de chave pode ser obtido na página Chaves em Certificados, Identificadores e Perfis, na sua conta de Desenvolvedor da Apple:

Certificates

Identifiers

Identificador do aplicativo e nome do aplicativo

O nome do aplicativo e o identificador também estão disponíveis na página Certificados, Identificadores e Perfis na conta de desenvolvedor:

Certificates and IDs

Configurar por meio do SDK do .NET ou do portal do Azure

Você pode configurar seu hub para usar a autenticação baseada em token usando nosso SDK de cliente mais recente ou no portal do Azure. Para habilitar a autenticação baseada em token no portal, faça logon no portal do Azure e vá para o painel Hub de Notificações Configurações > Apple (APNS). Selecione o Token da propriedade Modo de autenticação para atualizar o hub com todas as propriedades de token relevantes.

Configure token

  • Insira as propriedades que você recuperou da sua conta de Desenvolvedor da Apple.
  • Escolha o modo de aplicativo (Produção ou Área Restrita).
  • Clique no botão Salvar para atualizar suas credenciais APNS.

As credenciais baseadas em token são compostas dos seguintes campos:

  • ID da chave: identificador da chave privada gerada no portal do Desenvolvedor da Apple; por exemplo, 2USFGKSKLT.
  • ID da Equipe: também chamada de "Prefixo" ou "Prefixo do Aplicativo". Esse é o identificador da organização no portal do Desenvolvedor da Apple; por exemplo, S4V3D7CHJR.
  • ID do pacote: também chamado de "ID do aplicativo". Este é o identificador do pacote para o aplicativo; por exemplo, com.example.myapp. Observe que você só pode usar uma chave para um aplicativo. Esse valor é mapeado para o apns-topic cabeçalho HTTP ao enviar uma notificação e é usado para direcionar o aplicativo específico. Você não pode definir o valor de apns-topic explicitamente.
  • Token: também chamado de "Chave" ou "Chave Privada". Isso é obtido do arquivo .p8 gerado no portal do Desenvolvedor da Apple. A chave deve ter o APNS habilitado (que está selecionado no portal do Desenvolvedor da Apple ao gerar a chave). O valor deve ter o cabeçalho/rodapé PEM extraído dele ao fornecê-lo ao portal/API do NH.
  • Ponto de extremidade: é uma alternância na folha do portal de Hubs de Notificação e um campo de cadeia de caracteres na API. Os valores válidos são https://api.development.push.apple.com:443/3/device ou https://api.sandbox.push.apple.com:443/3/device. Os Hubs de Notificação usam esse valor para o ambiente de produção ou área restrita, para enviar notificações. Isso deve corresponder ao direito aps-environment no aplicativo, caso contrário, os tokens de dispositivo dos APNS gerados não corresponderão ao ambiente e as notificações falharão ao enviar.

Aqui está um exemplo de código que ilustra o uso correto:

NamespaceManager nm = NamespaceManager.CreateFromConnectionString(_endpoint);
string token = "YOUR PRIVATE KEY HERE";
string keyId = "YOUR KEY ID HERE";
string appName = "YOUR APP NAME HERE";
string appId = "YOUR APP ID HERE";
NotificationHubDescription desc = new NotificationHubDescription("PATH TO YOUR HUB");
desc.ApnsCredential = new ApnsCredential(token, keyId, appId, appName);
desc.ApnsCredential.Endpoint = @"https://api.development.push.apple.com:443/3/device";
nm.UpdateNotificationHubAsync(desc);

Próximas etapas