As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
General/Custom Requisitos de autorização para desenvolvedores de conectores
A autorização geral permite que seu conector use credenciais (como chaves de API, tokens ou username/password combinações) em vez de tokens de usuário do OAuth 2.0. Ao contrário do OAuth 2.0, que fornece autorização em nível de usuário por meio da vinculação de contas, a Autorização Geral permite que um único conjunto de credenciais controle dispositivos em vários usuários finais.
nota
Em toda esta documentação, a Autorização Personalizada é chamada de Autorização Geral. Ambos os termos descrevem o mesmo mecanismo de autorização. Nas seções a seguir, usamos “Autorização geral” para fins de consistência.
Esta seção explica como implementar o suporte à Autorização Geral em sua AWS Lambda função de conector. Se você for um cliente configurando a Autorização Geral para um conector existente, consulteGeneral/Custom Requisitos de autorização.
Tópicos
O que é autorização geral?
A autorização geral é qualquer mecanismo de autorização não OAuth que permite que seu conector autorize com plataformas de terceiros usando as credenciais do cliente. Com a autorização geral, as integrações gerenciadas delegam o gerenciamento de credenciais ao seu conector, e um único conjunto de credenciais pode controlar dispositivos em vários usuários finais.
Isso é útil para cenários em que você tem um relacionamento comercial com o fornecedor do dispositivo e precisa gerenciar dispositivos em grande escala sem fluxos de autorização de usuários individuais.
Quando usar a Autorização Geral
Considere implementar o suporte de autorização geral em seu conector quando:
-
A plataforma de terceiros não oferece suporte ao OAuth 2.0
-
A plataforma terceirizada fornece material de autorização personalizado, como chaves de API ou credenciais que podem residir em AWS Secrets Manager
-
Você precisa gerenciar dispositivos em grande escala sem fluxos de autorização de usuários individuais
nota
Seu conector pode implementar os dois tipos de autorização em paralelo, fornecendo compatibilidade com diversas estruturas de autorização.
Como a Autorização Geral usa AWS Secrets Manager
AWS Secrets Manager é um serviço de armazenamento secreto que protege credenciais confidenciais, como chaves de API e tokens. Os segredos são criptografados usando AWS Key Management Service chaves. Para obter mais informações, consulte o Guia do usuário do AWS Secrets Manager.
Para a Autorização Geral, os clientes armazenam as credenciais de autorização no Secrets Manager e concedem permissão ao conector C2C para acessar esses segredos. Quando as integrações gerenciadas invocam seu conector, elas fornecem o ARN e o ID da versão do Secrets Manager no cabeçalho da solicitação. Seu conector recupera o valor secreto e o usa para autorizar com a plataforma de terceiros.
Essa abordagem garante que as integrações gerenciadas nunca lidem diretamente com credenciais de longo prazo. Seu conector mantém controle total sobre o gerenciamento de credenciais e a geração de tokens, tornando a solução extensível a qualquer mecanismo de autorização suportado por sua plataforma terceirizada.
Importante
As integrações gerenciadas não acessam nem gerenciam as credenciais armazenadas nas do cliente. AWS Secrets Manager Seu conector tem controle total sobre a recuperação, análise e uso de credenciais.
Importante
Recomendamos que você não registre credenciais ou tokens confidenciais em nenhum registro. No entanto, se eles estiverem armazenados em registros, recomendamos que você use as políticas de proteção de dados do CloudWatch Logs para mascarar os tokens nos registros. Para obter mais informações, consulte Ajude a proteger dados de logs confidenciais com mascaramento.
Formato de solicitação de autorização geral
Quando as integrações gerenciadas invocam seu conector para uma associação de conta de autorização geral, o cabeçalho da solicitação contém uma AWS Secrets Manager referência em vez de um token OAuth. A estrutura da solicitação é consistente em todas as operações do conector (AWS.ActivateUserAWS.DiscoverDevicesAWS.SendCommand,, eAWS.DeactivateUser).
exemplo Exemplo: Solicitação de autorização geral
{ "header": { "auth": { "secretsManager": { "arn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-api-key-AbCdEf", "versionId": "a1b2c3d4-5678-90ab-cdef-1234567890ab" }, "type": "GeneralAuthorization" } }, "payload": { "operationName": "AWS.DiscoverDevices", "operationVersion": "1.0", "connectorId": "Your-Connector-Id", ... } }
exemplo Exemplo: solicitação do OAuth 2.0 (para comparação)
{ "header": { "auth": { "token": "ashriu32yr97feqy7afsaf", "type": "OAuth2.0" } }, "payload": { "operationName": "AWS.DiscoverDevices", "operationVersion": "1.0", "connectorId": "Your-Connector-Id", ... } }
nota
Seu conector deve lidar com os dois formatos de solicitação. Verifique o auth.type campo para determinar qual método de autorização usar para cada solicitação.
Fluxo de trabalho de autorização geral
Quando seu conector receber uma solicitação de autorização geral, siga este fluxo de trabalho:
-
Verifique o tipo de autorização - Verifique o
auth.typecampo no cabeçalho da solicitação para determinar se a solicitação usa Autorização Geral -
Extraia a referência do Secrets Manager - Extraia o AWS Secrets Manager ARN e o ID da versão do objeto
auth.secretsManager -
Recuperar segredo - chame a AWS Secrets Manager
GetSecretValueAPI usando o ARN e o ID da versão fornecidos -
Analisar credenciais - Analise o valor secreto para extrair as credenciais de autorização (o formato depende dos requisitos da sua plataforma terceirizada)
-
Gere tokens (se necessário) - Se necessário, use as credenciais para gerar um token de acesso ou executar etapas de autorização adicionais exigidas pela plataforma de terceiros
-
Autorizar chamadas de API - Use as credenciais ou o token gerado para autorizar chamadas de API para a plataforma de terceiros
-
Operação do processo - Processe a operação do conector (
AWS.DiscoverDevicesAWS.SendCommand,, etc.) usando a conexão autorizada
nota
Seu conector é responsável por todo o gerenciamento de credenciais, incluindo geração de tokens, atualização e tratamento de erros. As integrações gerenciadas fornecem apenas a referência ao segredo; elas não gerenciam as credenciais em si.
Permissões do Lambda para GeneralAuthorization
Sua função de execução do Lambda do conector deve ter permissão para recuperar segredos do cliente. AWS Secrets Manager Adicione as seguintes permissões à sua política de função de execução do Lambda:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:*:*:secret:*" }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "secretsmanager.*.amazonaws.com" } } } ] }
Explicação da permissão
-
secretsmanager:GetSecretValue- Permite que seu Lambda recupere valores secretos -
kms:Decrypt- Obrigatório porque os segredos são criptografados usando AWS Key Management Service chaves
nota
O exemplo de política permite o acesso a qualquer segredo. Na produção, você deve restringir o Resource campo somente aos segredos de que seu conector precisa. No entanto, como os clientes criam seus próprios segredos, talvez seja necessário usar um curinga ou documentar a convenção de nomenclatura que os clientes devem seguir.
O cliente também concederá permissão ao Lambda para acessar seu segredo específico por meio da política de recursos do segredo.