Pular para o conteúdo principal

Como Criar e Configurar um Cliente de Aplicação

Um cliente de aplicação é a representação da sua aplicação no sistema de autenticação do grupo Magalu. Ele funciona como uma identidade única que permite que sua aplicação acesse as APIs do ecossistema Magalu de forma segura e controlada.

Para que serve um cliente:

  • Autenticação: Identifica sua aplicação perante o sistema OAuth 2.0 do Magalu
  • Autorização: Define quais APIs e recursos sua aplicação pode acessar através de escopos
  • Controle de Acesso: Estabelece as URLs autorizadas para redirecionamento durante o fluxo de autenticação
  • Segurança: Gera credenciais seguras (client_id e client_secret) para autenticar sua aplicação

O que você fará com o cliente criado: Após criar o cliente, você utilizará as credenciais geradas para implementar o fluxo OAuth 2.0 em sua aplicação, permitindo que os sellers autorizem o acesso aos seus dados e recursos através das APIs do grupo Magalu.

Vídeo de Instruções para Criação de Credenciais

Passo a Passo para Criação de um Client

1

Cadastrar sua conta

Crie uma conta com o ID Magalu neste link.

dica

Caso já tenha uma conta no SuperApp do Magalu ou no Portal do Seller, poderá utilizar o mesmo login e senha; caso contrário, realize seu cadastro!

2

Baixar o IDM

Realize o download do arquivo de acordo com o sistema operacional na página de Lançamentos do IDM.

3

Renomeie o arquivo baixado

Renomeie o arquivo baixado para “idm”.

alerta

Caso opte por não renomear o arquivo seránecessário substituir todas as instâncias de “idm” nos comandos pelo nome do arquivo baixado

4

Tornar o arquivo executável

Mova o arquivo para a pasta C:\Windows\System32. Abra o Powershell e navegue até C:\Windows\System32.

dica

Use aspas duplas ao invés de aspas simples ao executar comandos em seu Powershell

5

Fazer o login

Faça o login em sua conta no ID Magalu através do comando:

./idm login

Esse comando o redirecionará para uma página na qual deve fazer o login no ID Magalu.

6

Dar o consentimento

Você será redirecionado para uma página de consentimentos. Aqui você terá que consentir com, pelo menos, "Criar client" e "Atualizar client". Sugerimos que você leia os Termos de Serviço e nossa Política de Privacidade e aceite todos os escopos pertinentes.

7

Criar o client

Para criar um client, utilizaremos o comando ./idm client create.

dica

Você pode utilizar o parâmetro --help após qualquer comando para ver detalhes sobre aquele comando e seus parâmetros. Ex: ./idm client create --help

Parâmetros disponíveis para o comando

CampoObrigatórioDescrição
--audienceSimA Lista de URLs referente aos ambientes que serão acessados pelo client. URLs devem ser separadas por espaços. Consulte as URLs dos ambientes aqui.
--nameSimNome da sua aplicação. Esse nome será exibido para o Seller durante a etapa de Consentimento. Confira as Diretrizes para o Nomear sua aplicação
--privacy-termSimA URL para a política de privacidade da sua aplicação.
Importante: Esta URL será exibida como um link acessível para o seller durante a etapa de Autorização de Escopos, permitindo que ele consulte suas políticas de privacidade antes de conceder o consentimento.
--redirect-urisSimLista de URLs autorizadas para receber o código de autorização OAuth 2.0 após autenticação bem-sucedida. As URLs devem ser separadas por espaços.
Importante: Essas URLs serão utilizadas durante o fluxo OAuth 2.0 para retornar o código de autorização durante a Requisição de Consentimento. Por isso, esses endpoints devem estar preparados para capturar e processar o parâmetro code enviado via query string. Por questões de segurança, apenas URLs configuradas neste parâmetro serão aceitas.
--scopesSimA lista de escopos de acesso. Escopos devem ser separados por espaço. Veja o comando para listar escopos
--terms-of-useSimA URL que leva aos termos de uso da sua aplicação.
Importante: Esta URL será exibida como um link acessível para o seller durante a etapa de Autorização de Escopos, permitindo que ele consulte seus termos de uso antes de conceder o consentimento.
--descriptionNãoUma descrição sobre a aplicação.
--access-token-expNãoO tempo de vida do token de acesso em segundos. Máximo é 7200.
--always-require-loginNão (Recomendado)Ignorar a sessão ativa do Magalu ID e sempre exigir login (true/false). Recomenda-se utilizar false
--backchannel-logout-session-requiredNãoCliente requer sessão de logout backchannel (true/false)
--backchannel-logout-uriNãoURI de logout backchannel
--iconNãoURL do ícone da aplicação. Veja as diretrizes de design
--reasonNãoMotivo pelo qual a aplicação precisa dos escopos informados.
--refresh-token-custom-expires-enabledNãoUsar valor personalizado para expiração do refresh token (true/false)
--refresh-token-expNãoValor personalizado de expiração do refresh token (em segundos)
--scopes-defaultNão (Recomendado)A lista de escopos padrão que serão automaticamente adicionados aos escopos solicitados durante o consentimento. Escopos devem ser separados por espaço. Veja o comando para listar escopos
Importante: Estes escopos serão sempre incluídos no consentimento, sendo combinados com os escopos definidos no parâmetro scope da Requisição de Consentimento. O seller verá: --scopes-default + scope (da URL).

Exemplo de comando de criação:

Este comando de criação de cliente já inclui todos os escopos e audiences para o ambiente produtivo. Altere os parâmetros --name, --description, --terms-of-use, --privacy-term, --redirect-uris e --scopes-default conforme necessário para sua aplicação.

./idm client create \
--name "client_teste" \
--description "cliente de testes" \
--terms-of-use "https://your-redirect-url.com/terms-of-use" \
--privacy-term "https://your-redirect-url.com/privacy-term" \
--redirect-uris "https://your-redirect-url.com/code-webhook" \
--audience "https://api.magalu.com https://services.magalu.com" \
--scopes "apiin:all open:logistic-carrier-shippings:read open:order-delivery-seller:read open:order-delivery-seller:write open:order-invoice-seller:read open:order-invoice:read open:order-logistics-seller:read open:order-logistics-seller:write open:order-order-seller:read open:portfolio-prices-seller:read open:portfolio-prices-seller:write open:portfolio-prices:read open:portfolio-prices:write open:portfolio-scores-seller:read open:portfolio-skus-seller:read open:portfolio-skus-seller:write open:portfolio-skus:read open:portfolio-skus:write open:portfolio-stocks-seller:read open:portfolio-stocks-seller:write open:portfolio-stocks:read open:portfolio-stocks:write open:sac-transaction-seller:read open:ticket-events-seller:read open:ticket-events-seller:write open:ticket-messages-seller:read open:ticket-messages-seller:write open:ticket-returns-seller:read open:ticket-returns-seller:write open:tickets-seller:read open:tickets-seller:write services:conversations-seller:read services:conversations-seller:write services:questions-seller:read services:questions-seller:write services:ticket-messages-seller:read services:ticket-messages-seller:write services:tickets-seller:read services:tickets-seller:write" \
--scopes-default "apiin:all open:logistic-carrier-shippings:read open:order-delivery-seller:read open:order-delivery-seller:write open:order-invoice-seller:read open:order-invoice:read open:order-logistics-seller:read open:order-logistics-seller:write open:order-order-seller:read open:portfolio-prices-seller:read open:portfolio-prices-seller:write open:portfolio-prices:read open:portfolio-prices:write open:portfolio-scores-seller:read open:portfolio-skus-seller:read open:portfolio-skus-seller:write open:portfolio-skus:read open:portfolio-skus:write open:portfolio-stocks-seller:read open:portfolio-stocks-seller:write open:portfolio-stocks:read open:portfolio-stocks:write open:sac-transaction-seller:read open:ticket-events-seller:read open:ticket-events-seller:write open:ticket-messages-seller:read open:ticket-messages-seller:write open:ticket-returns-seller:read open:ticket-returns-seller:write open:tickets-seller:read open:tickets-seller:write services:conversations-seller:read services:conversations-seller:write services:questions-seller:read services:questions-seller:write services:ticket-messages-seller:read services:ticket-messages-seller:write services:tickets-seller:read services:tickets-seller:write" \
--access-token-exp 7200 \
--always-require-login false
8

Armazenar as credenciais do client com segurança

Após a criação bem-sucedida do client, você receberá três credenciais importantes:

  • UUID: Identificador único do seu client (utilizado em comandos do IDM)
  • Client ID: Identificador público do seu client (utilizado em requisições de APIs do grupo Magalu)
  • Client Secret: Chave secreta de autenticação
importante

O Client Secret é uma informação sensível e crítica para a segurança da sua aplicação:

  • Armazene-o em um local seguro, preferencialmente em um gerenciador de segredos
  • Nunca compartilhe ou exponha esta informação
  • Por razões de segurança, não é possível recuperar o Client Secret após sua geração
  • Caso o Client Secret seja comprometido ou perdido, será necessário criar um novo client

Para visualizar as demais configurações do seu client, utilize o comando listar clients

Durante a criação do client, alguns escopos solicitados podem requerer aprovação adicional antes de serem liberados para uso. Por exemplo, o escopo open:portfolio-scores-seller:read necessita de uma validação especial. Você pode verificar quais os escopos necessitam de aprovação a partir do comando de Listar Escopos

O sistema informará quais escopos estão pendentes de aprovação durante a criação do client. Você também pode verificar o status dos escopos através do comando Listar Clients

Como Listar Clients

1

Listar os clients

Para visualizar todos os seus clients e suas configurações, execute o comando:

./idm client list

O comando listará uma tabela com todos os parâmetros definidos durante a criação do client, como nome, descrição, URLs configuradas e demais configurações.

Este comando é especialmente útil para:

  • Verificar o status de aprovação dos seus escopos (AVAILABLE, PENDING)
  • Consultar quem é o aprovador dos escopos pendentes (APPROVER)
  • Confirmar quais escopos estão configurados como padrão (indicados com "default")
  • Validar todas as configurações do seu client

Como Atualizar um Client

1

Atualizar o client

Para atualizar um client existente, utilize o comando ./idm client update.

Parâmetros disponíveis para o comando de atualização

CampoObrigatórioDescrição
--uuidSimUUID do cliente que será atualizado
--access-token-expNãoTempo de expiração do token de acesso (em segundos)
--always-require-loginNãoDeve ignorar a sessão ativa do Magalu ID e sempre exigir login (true/false)
--audienceNãoAudiência do token de acesso (separado por espaços)
--backchannel-logout-session-requiredNãoCliente requer sessão de logout backchannel (true/false)
--backchannel-logout-uriNãoURI de logout backchannel
--descriptionNãoDescrição do cliente
--iconNãoLink do ícone do cliente
--nameNãoNome do cliente
--privacy-policy-termNãoLink para os termos da política de privacidade
--redirect-urisNãoURIs de redirecionamento do cliente (separadas por espaços)
--refresh-token-custom-expires-enabledNãoUsar valor personalizado para expiração do refresh token (true/false)
--refresh-token-expNãoValor personalizado de expiração do refresh token (em segundos)
--service-termNãoLink para os termos de serviço
alerta

Ao atualizar as audiências, todas as audiências previamente configuradas serão substituídas pelo novo valor informado. Certifique-se de incluir todas as audiências necessárias ao realizar a atualização para evitar a perda de permissões importantes.

Exemplo de comando de atualização:

./idm client update \
--uuid "27668929-f53a-4647-ab40-7db627b99a02" \
--audience "https://api.magalu.com https://api-sandbox.magalu.com https://services.magalu.com"

Como Adicionar Escopos a um Client Existente

1

Adicionar escopos a um client

Para adicionar novos escopos a um client já existente, utilize o comando específico ./idm client add-scope. Essa operação é separada da atualização geral do client, pois a inclusão de escopos pode exigir justificativas adicionais e está sujeita a validações de segurança.

Parâmetros disponíveis para o comando

CampoObrigatórioDescrição
--client-uuidSimUUID do cliente que terá escopos adicionados
--scopesSimLista de escopos a serem adicionados separados por espaço
--reasonNãoMotivo pelo qual você está adicionando os escopos
--scopes-defaultNãoLista de escopos padrão a serem adicionados separados por espaço

Exemplo de comando para adicionar escopos:

./idm client add-scope \
--client-uuid "XXXXXX-XXXf-4XX2-8XXa9-37cXXXXXXd09" \
--scopes "apiin:all open:logistic-carrier-shippings:read" \
--scopes-default "apiin:all open:logistic-carrier-shippings:read" \
--reason "Necessário para integrar funcionalidades de logística e automação de pedidos."
dica

Note que se trata de uma operação de adição e não atualização. Portanto não é necessário repetir escopos já adicionados nos parâmetros --scopes e --scopes-default

dica

Caso queira apenas adicionar escopos ao parâmetro --scopes-default pode fazê-lo repetindo um --scope já adicionado à sua aplicação e passando os --scope-default necessários.

Após a execução do comando, a solicitação será processada e poderá passar por uma análise de conformidade antes da aprovação dos novos escopos. Verifique o status de aprovação dos escopos com o comando de Listar Clients

Como Consultar Escopos Disponíveis

1

Consultar escopos disponíveis

Para listar todos os escopos disponíveis, execute o comando:

./idm scopes list

O comando retornará uma tabela com as seguintes informações para cada escopo:

  • SCOPE ID: Identificador único do escopo
  • SCOPE NAME: Nome do escopo que deve ser usado nos comandos
  • API PRODUCT: Produto/API ao qual o escopo pertence
  • CONSENT TEXT: Texto que será exibido ao seller para autorização do escopo
  • CONSENT REQUIRED: Se requer consentimento do seller (true/false)
  • APPROVAL REQUIRED: Se requer aprovação administrativa (true/false)