O gateway nativo da nuvem permite configurar a autenticação para rotas e autorizar consumidores específicos a acessá-las. Este tópico descreve como configurar a autenticação de consumidor.
Informações básicas
A autenticação global é adequada para cenários ToC, como login unificado. A autenticação de rota com autorização de consumidor é mais indicada para cenários ToB, como a concessão de acesso a API para parceiros.
|
Item de comparação |
Autenticação global |
Autenticação de rota + autorização de consumidor |
|
Cenários |
Cenários ToC, como autenticação de login unificado. |
Cenários ToB, como concessão de acesso a API para parceiros. |
|
Diferença principal |
Ativação conjunta de autenticação e autorização. |
Após ativar a autenticação, configure a autorização separadamente. |
|
Entrada de configuração |
Security Management > Global Authentication. |
|
|
Configuração de autenticação (exemplo com JWT) |
|
|
|
Configuração de autorização |
Ao criar a configuração, insira uma lista de Domain Name e Path para a lista de bloqueios ou lista de permissões.
|
|
Criar um consumidor
Faça login no console MSE. Na barra de navegação superior, selecione uma região.
No painel de navegação à esquerda, escolha Cloud-native Gateway > Gateways.
Na página Gateways, clique em nome do gateway desejado.
No painel de navegação à esquerda, clique em Security Management > Consumer Authentication.
Clique em Create Consumer.
-
Configure os parâmetros e clique em OK.
A tabela a seguir descreve os parâmetros.
Item de configuração
Descrição
Consumer Name
Insira um nome personalizado para o consumidor.
Consumer Description
Descreva o consumidor.
Authentication Type
Métodos de autenticação compatíveis com o consumidor.
Key Type
-
Symmetric Key: Gera uma configuração JWKS padrão (única por consumidor) contendo a chave usada para criptografar ou descriptografar tokens.
-
Asymmetric Key: Exige o fornecimento de uma configuração JWKS completa. Use sua chave privada para assinar o token. O gateway usa a chave pública do seu JWKS para verificá-lo.
JWKS
Defina a configuração JWKS. Para obter detalhes sobre a especificação JWKS, consulte JSON Web Key (JWK).
JWT Token
Configure as definições do token JWT.
-
Type: Tipo de parâmetro do token. O padrão é Header.
-
Key: Nome do parâmetro do token.
-
Prefix: Prefixo para o nome do parâmetro do token. Por padrão, os tokens são validados no Authorization Header com o prefixo Bearer, por exemplo: Authorization: Bearer token.
-
Enable Passthrough: Se selecionado, o parâmetro do token é repassado ao serviço de backend.
Consumer Identity in JWT Payload
Especifique a chave e o valor no payload do JWT para identificar este consumidor. Por padrão, a chave é uid e o valor é uma string aleatória. É possível modificar esses valores.
O payload do token JWT deve ter o seguinte formato:
{ "uid": "11215ac069234abcb8944232b79ae711" } -
Métodos de geração de token
Esta seção fornece um exemplo em Java. Usuários de outras linguagens podem usar ferramentas equivalentes para gerar pares de chaves.
Crie um novo projeto Maven e adicione a seguinte dependência:
<dependency>
<groupId>org.bitbucket.b_c</groupId>
<artifactId>jose4j</artifactId>
<version>0.7.0</version>
</dependency>
Gerar um token usando a chave simétrica padrão
Observações sobre a configuração do código:
-
privateKeyJson: Este é o JWKS usado ao criar o consumidor. Anote-o durante a criação ou recupere-o posteriormente na seção Authentication Configuration, na aba Basic Settings da página de detalhes do consumidor. Defina o identificador do consumidor com
claims.setClaim("uid", "11215ac069234abcb8944232b79ae711"). Isso corresponde ao ID de consumidor padrão gerado no console, mas pode ser personalizado. Visualize o valor atual no campo Consumer Identifier, em Authentication Configuration, na aba Basic Settings da página de detalhes do consumidor.-
Defina o algoritmo de criptografia com
jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.HMAC_SHA256). Ele deve corresponder ao algoritmo especificado no seu JWKS.NotaOs algoritmos compatíveis incluem ES256, ES384, ES512, RS256, RS384, RS512, PS256, PS384, PS512, HS256, HS384, HS512 e EdDSA.
Ao selecionar Symmetric key para Key Type, insira um JWKS com estas propriedades de chave:
"kty":"oct","k":"VoBG-oyqVoyCr9G56ozmq8n_rlDDyYMQ0d_D04G0kEY"e"alg":"HS256".Para criptografia simétrica, decodifique o valor "k":
jws.setKey(new HmacKey(Base64.decode(JsonUtil.parseJson(privateKeyJson).get("k").toString())));Também é possível recuperar o identificador do consumidor no campo Consumer Identifier, em Authentication Configuration, na aba Basic Settings da página de detalhes do consumidor.
-
Defina o tempo de expiração. Ele deve ser inferior a 7 dias. Gere um novo token após a expiração para manter a segurança.
... NumericDate date = NumericDate.now(); date.addSeconds(120*60); claims.setExpirationTime(date); claims.setNotBeforeMinutesInThePast(1); ... Conforme seus requisitos de negócio, adicione parâmetros personalizados ao
PAYLOADno JWKS.
Gerar um token usando uma chave assimétrica
Observações sobre a configuração do código:
Configure
privateKeyJson, o identificador do consumidor e o tempo de expiração conforme descrito para criptografia simétrica.-
Defina o algoritmo de criptografia com
jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.RSA_USING_SHA256). Ele deve corresponder ao algoritmo no seu JWKS.No campo de configuração JWKS do console, insira uma chave assimétrica formatada em JSON onde o tipo de chave (
kty) sejaRSA. Inclua parâmetros RSA padrão comop,q,dee, comedefinido comoAQAB. Na seção de configuração JWT Token, defina Type como HEADER, Key comoAuthorization, Prefix comoBearere marque Pass-through.Para criptografia assimétrica, assine o token com sua chave privada:
... jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.RSA_USING_SHA256); PrivateKey privateKey = new RsaJsonWebKey(JsonUtil.parseJson(privateKeyJson)).getPrivateKey(); jws.setKey(privateKey); ...
Conforme suas necessidades de negócio, adicione parâmetros personalizados ao
PAYLOADno JWKS.
Ativar autenticação de rota
Faça login no console MSE. Na barra de navegação superior, selecione uma região.
No painel de navegação à esquerda, escolha Cloud-native Gateway > Gateways.
Na página Gateways, clique em ID do gateway.
No painel de navegação à esquerda, clique em Routes. Em seguida, clique em aba Routes.
Na coluna Actions da rota desejada, clique em Policies.
-
Na aba Policies, clique em Authentication. Após configurar, clique em Save.
Parâmetro
Descrição
Authentication Method
Método de autenticação usado para esta rota.
Enabling Status
Quando ativado, a autenticação e a autorização entram em vigor.
Conceder acesso a um consumidor
Faça login no console MSE. Na barra de navegação superior, selecione uma região.
No painel de navegação à esquerda, escolha Cloud-native Gateway > Gateways.
Na página Gateways, clique em ID do gateway.
No painel de navegação à esquerda, clique em Security Management > Consumer Authentication.
Na coluna Actions do consumidor desejado, clique em Authorization.
Na aba Consumer Authorization, clique em Associate Route, selecione as rotas a autorizar para este consumidor e clique em OK.