Gerenciar direitos a produtos de um serviço

Se você tiver um catálogo de aplicativos e complementos, poderá usar a API de coleção da Microsoft Store e a API de compra da Microsoft Store para acessar informações de direito para esses produtos de seus serviços. Um direito representa o direito de um cliente de usar um aplicativo ou complemento publicado por meio da Microsoft Store.

Essas APIs consistem em métodos REST projetados para serem usados por desenvolvedores com catálogos de complementos compatíveis com serviços multiplataforma. Essas APIs permitem que você faça o seguinte:

Observação

A API de coleção e a API de compra da Microsoft Store usam a autenticação do Azure Active Directory (Azure AD) para acessar as informações de propriedade do cliente. Para usar essas APIs, você (ou sua organização) deve ter um diretório do Azure AD e deve ter permissão de administrador global para o diretório. Se já usa o Microsoft 365 ou outros serviços empresariais da Microsoft, você já tem o diretório do Azure AD.

A biblioteca Microsoft.StoreServices

Para ajudar a simplificar o fluxo de autenticação e chamar os serviços da Microsoft Store, examine o projeto Microsoft.StoreServices e o exemplo no Github. A biblioteca Microsoft.StoreServices ajudará a gerenciar as chaves de autenticação e fornecerá APIs wrapper para chamar os Serviços da Microsoft Store para gerenciar produtos. O projeto de exemplo destaca como um serviço pode usar a biblioteca Microsoft.StoreServices, lógica de exemplo para gerenciar produtos consumíveis, reconciliar compras reembolsadas, renovar credenciais expiradas e muito mais. Um guia de configuração passo a passo está incluído no exemplo para configurar o serviço de exemplo em seu computador ou por meio do Azure.

Visão geral

As etapas a seguir descrevem o processo de ponta a ponta para usar a API de coleção e a API de compra da Microsoft Store:

  1. Configure um aplicativo no Azure AD.
  2. Associe sua ID do aplicativo Azure AD ao seu aplicativo no Partner Center.
  3. Em seu serviço, crie tokens de acesso do Azure AD que representem sua identidade de editor.
  4. Em seu aplicativo cliente do Windows, crie uma chave de ID da Microsoft Store que represente a identidade do usuário atual e passe essa chave de volta para o serviço.

Esse processo de ponta a ponta envolve dois componentes de software que executam tarefas diferentes:

  • Seu serviço. Este é um aplicativo que é executado com segurança no contexto do seu ambiente de negócios e pode ser implementado usando qualquer plataforma de desenvolvimento que você escolher. Seu serviço é responsável por criar os tokens de acesso do Azure AD necessários para o cenário e por chamar os URIs REST para a API de coleção da Microsoft Store e a API de compra.
  • Seu aplicativo cliente do Windows. Este é o aplicativo para o qual você deseja acessar e gerenciar informações de direito do cliente (incluindo complementos para o aplicativo). Esse aplicativo é responsável por criar as chaves de ID da Microsoft Store necessárias para chamar a API de coleção da Microsoft Store e comprar a API do seu serviço.

Etapa 1: Configurar um aplicativo no Azure AD

Antes de usar a API de coleção da Microsoft Store ou a API de compra, você deve criar um aplicativo Web do Azure AD, recuperar a ID do locatário e a ID do aplicativo para o aplicativo e gerar uma chave. O aplicativo Web do Azure AD representa o serviço do qual você deseja chamar a API de coleção da Microsoft Store ou a API de compra. Você precisa da ID do locatário, da ID do aplicativo e da chave para gerar tokens de acesso do Azure AD necessários para chamar a API.

  1. Se você ainda não tiver feito isso, siga as instruções em Integrando aplicativos com o Azure Active Directory para registrar um aplicativo Web/aplicativo de API com o Azure AD.

    Observação

    Ao registrar seu aplicativo, você deve escolher o aplicativo Web/API como o tipo de aplicativo para que possa recuperar uma chave (também chamada de segredo do cliente) para seu aplicativo. Para chamar a API de coleção da Microsoft Store ou a API de compra, você deve fornecer um segredo do cliente ao solicitar um token de acesso do Azure AD em uma etapa posterior.

  2. No Portal de Gerenciamento do Azure, navegue até o Azure Active Directory. Selecione seu diretório, clique em Registros de aplicativo no painel de navegação esquerdo e selecione seu aplicativo.

  3. Você é levado para a página principal de registro do aplicativo. Nesta página, copie o valor da ID do Aplicativo para uso posterior.

  4. Crie uma chave que você precisará mais tarde (tudo isso é chamado de segredo do cliente). No painel esquerdo, clique em Configurações e, em seguida, em Chaves. Nesta página, conclua as etapas para criar uma chave. Copie essa chave para uso posterior.

Etapa 2: associar sua ID do aplicativo Azure AD ao seu aplicativo cliente no Partner Center

Antes de usar a API de coleção da Microsoft Store ou a API de compra para configurar a propriedade e as compras do seu aplicativo ou complemento, você deve associar sua ID do aplicativo Azure AD ao aplicativo (ou ao aplicativo que contém o complemento) no Partner Center.

Observação

É necessário executar essa tarefa apenas uma vez. Depois de ter sua ID de locatário, ID do aplicativo e segredo do cliente, você pode reutilizar esses valores sempre que precisar criar um novo token de acesso do Azure AD.

  1. Entre no Partner Center e selecione seu aplicativo.
  2. Vá para a página Coleções e compras de produtos de serviços>e insira sua ID do aplicativo Azure AD em um dos campos de ID do cliente disponíveis.

Etapa 3: Criar tokens de acesso do Azure AD

Antes de recuperar uma chave de ID da Microsoft Store ou chamar a API de coleção da Microsoft Store ou a API de compra, seu serviço deve criar vários tokens de acesso diferentes do Azure AD que representem sua identidade de editor. Cada token será usado com uma API diferente. O tempo de vida de cada token é de 60 minutos e você pode atualizá-los depois que eles expirarem.

Importante

Crie tokens de acesso do Azure AD somente no contexto do serviço, não no aplicativo. O segredo do cliente pode ser comprometido se for enviado para seu aplicativo.

Noções básicas sobre os diferentes tokens e URIs de público-alvo

Dependendo de quais métodos você deseja chamar na API de coleção da Microsoft Store ou na API de compra, você deve criar dois ou três tokens diferentes. Cada token de acesso é associado a um URI de público-alvo diferente.

  • Em todos os casos, você deve criar um token com o URI do https://onestore.microsoft.com público-alvo. Em uma etapa posterior, você passará esse token para o cabeçalho Authorization de métodos na API de coleção da Microsoft Store ou na API de compra.

    Importante

    Use o https://onestore.microsoft.com público-alvo somente com tokens de acesso armazenados com segurança em seu serviço. Expor tokens de acesso com esse público fora do seu serviço pode torná-lo vulnerável a ataques de repetição.

  • Se você quiser chamar um método na API de coleção da Microsoft Store para consultar produtos pertencentes a um usuário ou relatar um produto consumível como atendido, também deverá criar um token com o URI de https://onestore.microsoft.com/b2b/keys/create/collections audiência. Em uma etapa posterior, você passará esse token para um método de cliente no SDK do Windows para solicitar uma chave de ID da Microsoft Store que você pode usar com a API de coleção da Microsoft Store.

  • Se você quiser chamar um método na API de compra da Microsoft Store para conceder um produto gratuito a um usuário, obter assinaturas para um usuário ou alterar o estado de cobrança de uma assinatura para um usuário, também deverá criar um token com o URI de https://onestore.microsoft.com/b2b/keys/create/purchase audiência. Em uma etapa posterior, você passará esse token para um método de cliente no SDK do Windows para solicitar uma chave de ID da Microsoft Store que você pode usar com a API de compra da Microsoft Store.

Criar os tokens

Para criar os tokens de acesso, use a API OAuth 2.0 em seu serviço seguindo as instruções em Chamadas de serviço a serviço usando credenciais de cliente para enviar um HTTP POST para o https://login.microsoftonline.com/<tenant_id>/oauth2/token ponto de extremidade. Confira a seguir um exemplo de solicitação.

POST https://login.microsoftonline.com/<tenant_id>/oauth2/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded; charset=utf-8

grant_type=client_credentials
&client_id=<your_client_id>
&client_secret=<your_client_secret>
&resource=https://onestore.microsoft.com

Para cada token, especifique os seguintes dados de parâmetro:

  • Para os parâmetros client_id e client_secret , especifique a ID do aplicativo e o segredo do cliente para seu aplicativo que você recuperou do Portal de Gerenciamento do Azure. Ambos os parâmetros são necessários para criar um token de acesso com o nível de autenticação exigido pela API de coleção da Microsoft Store ou pela API de compra.

  • Para o parâmetro resource , especifique um dos URIs de público-alvo listados na seção anterior, dependendo do tipo de token de acesso que você está criando.

Depois que seu token de acesso expirar, você poderá atualizá-lo seguindo as instruções aqui. Para obter mais detalhes sobre a estrutura de um token de acesso, consulte Tipos de token e declaração com suporte.

Etapa 4: Criar uma chave de ID da Microsoft Store

Antes de chamar qualquer método na API de coleção da Microsoft Store ou na API de compra, seu aplicativo deve criar uma chave de ID da Microsoft Store e enviá-la ao serviço. Essa chave é um JSON Web Token (JWT) que representa a identidade do usuário cujas informações de propriedade do produto você deseja acessar. Para obter mais informações sobre as declarações nessa chave, consulte Declarações em uma chave de ID da Microsoft Store.

Atualmente, a única maneira de criar uma chave de ID da Microsoft Store é chamando uma API da Plataforma Universal do Windows (UWP) do código do cliente em seu aplicativo. A chave gerada representa a identidade do usuário que está conectado à Microsoft Store no dispositivo.

Observação

Cada chave de ID da Microsoft Store é válida por 90 dias. Depois que uma chave expirar, você poderá renová-la. Recomendamos que você renove suas chaves de ID da Microsoft Store em vez de criar novas.

Para criar uma chave de ID da Microsoft Store para a API de coleção da Microsoft Store

Siga estas etapas para criar uma chave de ID da Microsoft Store que você pode usar com a API de coleção da Microsoft Store para consultar produtos pertencentes a um usuário ou relatar um produto consumível como atendido.

  1. Passe o token de acesso do Azure AD que tem o valor https://onestore.microsoft.com/b2b/keys/create/collections do URI de audiência do serviço para o aplicativo cliente. Esse é um dos tokens que você criou anteriormente na etapa 3.

  2. No código do aplicativo, chame um destes métodos para recuperar uma chave de ID da Microsoft Store:

  1. Depois que seu aplicativo criar com êxito uma chave de ID da Microsoft Store, passe a chave de volta para o serviço.

Para criar uma chave de ID da Microsoft Store para a API de compra da Microsoft Store

Siga estas etapas para criar uma chave de ID da Microsoft Store que você pode usar com a API de compra da Microsoft Store para conceder um produto gratuito a um usuário, obter assinaturas para um usuário ou alterar o estado de cobrança de uma assinatura para um usuário.

  1. Passe o token de acesso do Azure AD que tem o valor https://onestore.microsoft.com/b2b/keys/create/purchase do URI de audiência do serviço para o aplicativo cliente. Esse é um dos tokens que você criou anteriormente na etapa 3.

  2. No código do aplicativo, chame um destes métodos para recuperar uma chave de ID da Microsoft Store:

  1. Depois que seu aplicativo criar com êxito uma chave de ID da Microsoft Store, passe a chave de volta para o serviço.

Diagramar

O diagrama a seguir ilustra o processo de criação de uma chave de ID da Microsoft Store.

Criar chave de ID da Windows Store

Declarações em uma chave de ID da Microsoft Store

Uma chave de ID da Microsoft Store é um JSON Web Token (JWT) que representa a identidade do usuário cujas informações de propriedade do produto você deseja acessar. Quando decodificada usando Base64, uma chave de ID da Microsoft Store contém as seguintes declarações.

  • iat: Identifica a hora em que a chave foi emitida. Essa declaração pode ser usada para determinar a idade do token. Este valor é expresso como tempo de época.
  • iss: Identifica o emissor. Isso tem o mesmo valor que a aud reivindicação.
  • aud: Identifica o público. Deve ser um dos seguintes valores: https://collections.mp.microsoft.com/v6.0/keys ou https://purchase.mp.microsoft.com/v6.0/keys.
  • exp: Identifica o tempo de expiração no ou após o qual a chave não será mais aceita para processar qualquer coisa, exceto para renovar chaves. O valor desta reivindicação é expresso como tempo de época.
  • nbf: Identifica a hora em que o token será aceito para processamento. O valor desta reivindicação é expresso como tempo de época.
  • http://schemas.microsoft.com/marketplace/2015/08/claims/key/clientId: O ID do cliente que identifica o desenvolvedor.
  • http://schemas.microsoft.com/marketplace/2015/08/claims/key/payload: uma carga opaca (criptografada e codificada em Base64) que contém informações destinadas apenas ao uso pelos serviços da Microsoft Store.
  • http://schemas.microsoft.com/marketplace/2015/08/claims/key/userId: Um ID de usuário que identifica o usuário atual no contexto de seus serviços. Esse é o mesmo valor que você passa para o parâmetro opcional publisherUserId do método usado para criar a chave.
  • http://schemas.microsoft.com/marketplace/2015/08/claims/key/refreshUri: o URI que você pode usar para renovar a chave.

Aqui está um exemplo de um cabeçalho de chave de ID da Microsoft Store decodificado.

{
    "typ":"JWT",
    "alg":"RS256",
    "x5t":"agA_pgJ7Twx_Ex2_rEeQ2o5fZ5g"
}

Aqui está um exemplo de um conjunto de declarações de chave de ID da Microsoft Store decodificado.

{
    "http://schemas.microsoft.com/marketplace/2015/08/claims/key/clientId": "1d5773695a3b44928227393bfef1e13d",
    "http://schemas.microsoft.com/marketplace/2015/08/claims/key/payload": "ZdcOq0/N2rjytCRzCHSqnfczv3f0343wfSydx7hghfu0snWzMqyoAGy5DSJ5rMSsKoQFAccs1iNlwlGrX+/eIwh/VlUhLrncyP8c18mNAzAGK+lTAd2oiMQWRRAZxPwGrJrwiq2fTq5NOVDnQS9Za6/GdRjeiQrv6c0x+WNKxSQ7LV/uH1x+IEhYVtDu53GiXIwekltwaV6EkQGphYy7tbNsW2GqxgcoLLMUVOsQjI+FYBA3MdQpalV/aFN4UrJDkMWJBnmz3vrxBNGEApLWTS4Bd3cMswXsV9m+VhOEfnv+6PrL2jq8OZFoF3FUUpY8Fet2DfFr6xjZs3CBS1095J2yyNFWKBZxAXXNjn+zkvqqiVRjjkjNajhuaNKJk4MGHfk2rZiMy/aosyaEpCyncdisHVSx/S4JwIuxTnfnlY24vS0OXy7mFiZjjB8qL03cLsBXM4utCyXSIggb90GAx0+EFlVoJD7+ZKlm1M90xO/QSMDlrzFyuqcXXDBOnt7rPynPTrOZLVF+ODI5HhWEqArkVnc5MYnrZD06YEwClmTDkHQcxCvU+XUEvTbEk69qR2sfnuXV4cJRRWseUTfYoGyuxkQ2eWAAI1BXGxYECIaAnWF0W6ThweL5ZZDdadW9Ug5U3fZd4WxiDlB/EZ3aTy8kYXTW4Uo0adTkCmdLibw=",
    "http://schemas.microsoft.com/marketplace/2015/08/claims/key/userId": "infusQMLaYCrgtC0d/SZWoPB4FqLEwHXgZFuMJ6TuTY=",
    "http://schemas.microsoft.com/marketplace/2015/08/claims/key/refreshUri": "https://collections.mp.microsoft.com/v6.0/b2b/keys/renew",
    "iat": 1442395542,
    "iss": "https://collections.mp.microsoft.com/v6.0/keys",
    "aud": "https://collections.mp.microsoft.com/v6.0/keys",
    "exp": 1450171541,
    "nbf": 1442391941
}