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

Descrição geral

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

Os principais benefícios do uso do novo protocolo incluem:

  • A geração de tokens é relativamente simples (em comparação com certificados)
  • Não há mais datas de expiração – você está no controle de seus tokens de autenticação e sua revogação
  • As cargas úteis agora podem ser de até 4 KB
  • Feedback síncrono
  • Você está no protocolo mais recente da Apple – os certificados ainda usam o protocolo binário, que está marcado para preterição

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

  • Obtenha as informações necessárias no portal da conta de programador Apple.
  • Configure seu hub de notificação com as novas informações.

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

Observe que, se você migrou do uso de credenciais de certificado para APNS, as propriedades do token substituem seu certificado em nosso sistema, mas seu aplicativo continua a receber notificações perfeitamente.

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

Para ativar a autenticação baseada em tokens, precisa das seguintes propriedades da sua conta de programador Apple:

Identificador de chave

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

Certificates

Identifiers

Identificador e nome do aplicativo

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

Certificates and IDs

Configurar através 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, entre no portal do Azure e vá para o painel Configurações > Apple (APNS) do seu hub de notificação. Selecione Token na propriedade Modo de autenticação para atualizar seu hub com todas as propriedades de token relevantes.

Configure token

  • Introduza as propriedades que recuperou da sua conta de programador Apple.
  • Escolha o modo de aplicação (Produção ou Sandbox).
  • Clique no botão Salvar para atualizar suas credenciais APNS.

As credenciais baseadas em tokens são compostas pelos seguintes campos:

  • ID da chave: identificador da chave privada gerada no portal do desenvolvedor da Apple, por exemplo, 2USFGKSKLT.
  • ID da equipe: também chamado de "Prefixo" ou "Prefixo do aplicativo". Este é 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 de 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 cabeçalho HTTP ao enviar uma notificação e é usado para direcionar o apns-topic aplicativo específico. Não é possível definir o valor de apns-topic explicitamente.
  • Token: também chamado de "Chave" ou "Chave Privada". Isso é obtido a partir do arquivo .p8 gerado no portal do desenvolvedor da Apple. A chave deve ter o APNS ativado (que é selecionado no portal do desenvolvedor da Apple ao gerar a chave). O valor deve ter o cabeçalho/rodapé PEM removido quando você fornecê-lo ao NH Portal/API.
  • Ponto de extremidade: esta é uma alternância na folha do portal dos 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 de área restrita, para enviar notificações. Isso deve corresponder ao aps-environment direito no aplicativo, caso contrário, os tokens de dispositivo APNS gerados não correspondem ao ambiente e as notificações não são enviadas.

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óximos passos