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á.
Integrando o Express com as permissões verificadas da Amazon
A integração do Verified Permissions Express fornece uma abordagem baseada em middleware para implementar a autorização em seus aplicativos Express.js. Com essa integração, você pode proteger seus endpoints de API usando políticas de autorização refinadas sem modificar seus manipuladores de rotas existentes. A integração processa as verificações de autorização automaticamente interceptando solicitações, avaliando-as de acordo com suas políticas definidas e garantindo que somente usuários autorizados possam acessar recursos protegidos.
Este tópico explica como configurar a integração do Express, desde a criação de um repositório de políticas até a implementação e o teste do middleware de autorização. Seguindo essas etapas, você pode adicionar controles de autorização robustos ao seu aplicativo Express com o mínimo de alterações no código.
Os seguintes GitHub repositórios são referenciados em todo este tópico:
-
cedar-policy/ authorization-for-expressjs
- O middleware de autorização Cedar para Express.js -
verifiedpermissions/ authorization-clients-js
- Os clientes de autorização de permissões verificadas para JavaScript -
verifiedpermissions/examples/express-petstore
- Exemplo de implementação usando o middleware Express.js
Pré-requisitos
Antes de implementar a integração Express, certifique-se de ter:
-
Uma AWS conta com acesso a permissões verificadas
-
Um aplicativo Express.js
-
Um provedor de identidade do OpenID Connect (OIDC) (como o Amazon Cognito)
-
AWS CLIconfigurado com as permissões apropriadas
Configurando a integração
Etapa 1: criar um repositório de políticas
Crie um repositório de políticas usando AWS CLI:
aws verifiedpermissions create-policy-store --validation-settings "mode=STRICT"
nota
Salve o ID do repositório de políticas retornado na resposta para uso nas etapas subsequentes.
Etapa 2: instalar dependências
Instale os pacotes necessários em seu aplicativo Express:
npm i --save @verifiedpermissions/authorization-clients-js npm i --save @cedar-policy/authorization-for-expressjs
Configurar autorização
Etapa 1: gerar e carregar o esquema Cedar
Um esquema define o modelo de autorização para um aplicativo, incluindo os tipos de entidades no aplicativo e as ações que os usuários podem realizar. Recomendamos definir um namespaceYourNamespace
. Você anexa seu esquema aos seus repositórios de políticas de Permissões Verificadas e, quando as políticas são adicionadas ou modificadas, o serviço valida automaticamente as políticas em relação ao esquema.
O @cedar-policy/authorization-for-expressjs
pacote pode analisar as especificações da OpenAPI
Se você não tiver uma especificação OpenAPI, siga as instruções rápidas do express-openapi-generator
Gere um esquema a partir da sua especificação da OpenAPI:
npx @cedar-policy/authorization-for-expressjs generate-schema --api-spec schemas/openapi.json --namespace
YourNamespace
--mapping-type SimpleRest
Em seguida, formate o esquema Cedar para uso com o. AWS CLI Para obter mais informações sobre o formato específico necessário, consulteEsquema do armazenamento de políticas do Amazon Verified Permissions. Se precisar de ajuda para formatar o esquema, há um script chamado prepare-cedar-schema.sh
no repositório GitHubverifiedpermissions/examplesv2.cedarschema.forAVP.json
./scripts/prepare-cedar-schema.sh v2.cedarschema.json v2.cedarschema.forAVP.json
Faça upload do esquema formatado em seu repositório de políticas, policy-store-id
substituindo-o pelo ID do repositório de políticas:
aws verifiedpermissions put-schema \ --definition file://v2.cedarschema.forAVP.json \ --policy-store-id
policy-store-id
Etapa 2: criar políticas de autorização
Se nenhuma política for configurada, o Cedar negará todas as solicitações de autorização. A integração da estrutura Express ajuda a iniciar esse processo gerando políticas de exemplo com base no esquema gerado anteriormente.
Ao usar essa integração em seus aplicativos de produção, recomendamos criar novas políticas usando ferramentas de infraestrutura como código (IAAC). Para obter mais informações, consulte Criação de recursos do Amazon Verified Permissions com o AWS CloudFormation.
Gere exemplos de políticas do Cedar:
npx @cedar-policy/authorization-for-expressjs generate-policies --schema v2.cedarschema.json
Isso gerará exemplos de políticas no /policies
diretório. Em seguida, você pode personalizar essas políticas com base em seus casos de uso. Por exemplo:
// Defines permitted administrator user group actions permit ( principal in YourNamespace::UserGroup::"<userPoolId>|administrator", action, resource ); // Defines permitted employee user group actions permit ( principal in YourNamespace::UserGroup::"<userPoolId>|employee", action in [YourNamespace::Action::"GET /resources", YourNamespace::Action::"POST /resources", YourNamespace::Action::"GET /resources/{resourceId}", YourNamespace::Action::"PUT /resources/{resourceId}"], resource );
Formate as políticas para uso com AWS CLI o. Para obter mais informações sobre o formato exigido, consulte create-policy na referência.AWS CLI Se precisar de ajuda para formatar as políticas, há um script chamado convert_cedar_policies.sh
no repositório GitHubverifiedpermissions/examples
./scripts/convert_cedar_policies.sh
Faça upload das políticas formatadas para Permissões verificadas, policy_1.json
substituindo-as pelo caminho e nome do seu arquivo de política e policy-store-id
pelo ID do repositório de políticas:
aws verifiedpermissions create-policy \ --definition file://
policies/json/policy_1.json
\ --policy-store-idpolicy-store-id
Etapa 3: Conectar um provedor de identidade
Por padrão, o middleware autorizador de permissões verificadas lê um token Web JSON (JWT) fornecido no cabeçalho de autorização da solicitação da API para obter informações do usuário. As permissões verificadas podem validar o token, além de realizar a avaliação da política de autorização.
Crie um arquivo de configuração de origem identity-source-configuration.txt
de identidade chamado semelhante ao seguinte com seu userPoolArn
eclientId
:
{ "cognitoUserPoolConfiguration": { "userPoolArn": "
arn:aws:cognito-idp:region:account:userpool/pool-id
", "clientIds": ["client-id
"], "groupConfiguration": { "groupEntityType": "YourNamespace::UserGroup" } } }
Crie a fonte de identidade executando o seguinte AWS CLI comando, policy-store-id
substituindo-o pelo ID do repositório de políticas:
aws verifiedpermissions create-identity-source \ --configuration file://identity-source-configuration.txt \ --policy-store-id
policy-store-id
\ --principal-entity-type YourNamespace::User
Implementando o middleware de autorização
Atualize seu aplicativo Express para incluir o middleware de autorização. Neste exemplo, estamos usando tokens de identidade, mas você também pode usar tokens de acesso. Para obter mais informações, consulte authorization-for-expressjs
const { ExpressAuthorizationMiddleware } = require('@cedar-policy/authorization-for-expressjs'); const { AVPAuthorizationEngine } = require('@verifiedpermissions/authorization-clients'); const avpAuthorizationEngine = new AVPAuthorizationEngine({ policyStoreId: '
policy-store-id
', callType: 'identityToken' }); const expressAuthorization = new ExpressAuthorizationMiddleware({ schema: { type: 'jsonString', schema: fs.readFileSync(path.join(__dirname, '../v4.cedarschema.json'), 'utf8'), }, authorizationEngine: avpAuthorizationEngine, principalConfiguration: { type: 'identityToken' }, skippedEndpoints: [], logger: { debug: (s) => console.log(s), log: (s) => console.log(s), } }); // Add the middleware to your Express application app.use(expressAuthorization.middleware);
Testando a integração
Você pode testar sua implementação de autorização fazendo solicitações aos seus endpoints da API com diferentes tokens de usuário. O middleware de autorização avaliará automaticamente cada solicitação em relação às suas políticas definidas.
Por exemplo, se você configurou grupos de usuários diferentes com permissões diferentes:
-
Administradores: acesso total a todos os recursos e funções de gerenciamento
-
Funcionários: podem visualizar, criar e atualizar recursos
-
Clientes: só podem visualizar recursos
Você pode validar se as políticas de permissões estão funcionando conforme o esperado fazendo login com usuários diferentes e tentando várias operações. No terminal do aplicativo Express, você pode ver a saída do log que fornece detalhes adicionais sobre as decisões de autorização.
Solução de problemas
- Se você tiver falhas na autorização, tente o seguinte:
-
-
Verifique se o ID do repositório de políticas está correto
-
Certifique-se de que sua fonte de identidade esteja configurada corretamente
-
Verifique se suas políticas estão formatadas corretamente
-
Valide se seus tokens JWT são válidos
-
Próximas etapas
Depois de implementar a integração básica, considere:
-
Implementando mapeadores personalizados para cenários de autorização específicos
-
Configurando o monitoramento e o registro para decisões de autorização
-
Criação de políticas adicionais para diferentes funções de usuário