Verificação de permissão Auth_basic_kv e interface API Auth Kv Http

NGINX evolui para nuvem nativa, tudo em  OpenNJet 


.precisar

Atualmente, apenas auth_basic_user_file é suportado. Você precisa modificar manualmente o conteúdo do arquivo para adicionar novos usuários e alterar senhas. Precisa adicionar um tipo: auth_basic_kv, use kv para armazenar nome de usuário/senha

•A chave é "auth_basic":{prefix}:{user_name}, o valor é a senha. prefix suporta variáveis ​​para que server_name, etc. possam ser usados ​​para fácil configuração.

• Fornece interface HTTP para adicionar entradas dinamicamente, alterar senhas e também oferecer suporte à exclusão

2. projeto de instrução auth_basic_kv

Esta diretiva pode ser configurada nos blocos main, server, location, limit_conf. Tomando api_limit_except como exemplo, a diretiva auth_basic_kv é colocada no módulo njt_http_auth_basic_module. Ela pode ser configurada com a diretiva auth_basic_user_file.

   
Sintaxe auth_basic_kv {prefixo}
Padrão -
Contexto principal, servidor, localização, limite_conf

prefix pode ser uma variável ou uma string comum. O formato de senha real armazenado por kv é: Chave: auth_basic:{prefix}:{user_name} Valor: Senha (usando algoritmo SHA)

Por exemplo:

•Suponha que o nome de usuário seja njet, use o formato da variável $server_name, (se o nome_do_servidor real for www.baidu.com), o armazenamento real na memória kv é: Chave: auth_basic:www.baidu.com:njet

• Supondo que o nome de usuário seja njet e o formato de string fixa test_prefix seja usado, o armazenamento real na memória kv é: Chave: auth_basic:test_prefix:njet

#变量格式
api_limit_except GET {
   auth_basic "OpenNJet AUTH API";
   auth_basic_kv  $server_name;
}

#字符串格式
api_limit_except GET {
   auth_basic "OpenNJet AUTH API";
   auth_basic_kv  test_prefix;
}

OBSERVAÇÃO:

Quando a solicitação HTTP chegar, se for uma variável, a variável será convertida em um valor real e, em seguida, pesquisada em kv db. Portanto, todos os valores reais de variáveis ​​​​armazenados em kv db não são variáveis.

3. Design de interface de API http com senha

Adicione um novo njt_http_auth_api_module. Como outros módulos de API imperativos (o plano de controle é configurado por meio da entrada /api), ele fornece uma interface de API http e fornece funções de adição, exclusão e modificação de senha: /api/v1/auth_kv/{. type} type: [password| role|login] é reservado Atualmente, o tipo de senha é usado para operar a senha.

3.1 Definir interface de senha:

PUT:/api/v1/auth_kv/password body tem o seguinte formato:

{
    "prefix": "www.baidu.com",    #对应上面$server_name变量,此处是实际的变量取值
    "user_name": "njet",
    "password": "123456"
}

或者

{
    "prefix": "test_prefix",    #此处是明确的字符串前缀
    "user_name": "njet",
    "password": "123456"
}
  Erro de código Mensagem de erro
aumentar o sucesso 0 sucesso
Usuário já existe 4 o usuário existia
aumentar a falha 4 adicionar erro de senha
O parâmetro tem valor nulo 3 prefixo, nome_do_usuário e senha não devem estar vazios
O parâmetro é ilegal 3 Haverá erros específicos de JSON
Falha na criptografia de senha 4 erro de criptografia de senha

3.2 Interface de modificação de senha:

PATCH:/api/v1/auth_kv/password/{prefix}/{user_name}

#变量取值
/api/v1/auth_kv/password/www.baidu.com/njet

或者
#明确字符串前缀
/api/v1/auth_kv/password/test_prefix/njet

O corpo tem o seguinte formato:

{
    "password": "123456"
}
  Erro de código Mensagem de erro
Modificado com sucesso 0 sucesso
Usuário não existe 4 o usuário não existe
não consegui editar 4 erro de modificação de senha
O parâmetro tem valor nulo 3 prefixo, nome_do_usuário e senha não devem estar vazios
O parâmetro é ilegal 3 Haverá erros específicos de JSON
Falha na criptografia de senha 4 erro de criptografia de senha

3.3 Excluir interface de senha:

EXCLUIR:/api/v1/auth_kv/password/{prefixo}/{nome_do_usuário}

#变量取值
/api/v1/auth_kv/password/www.baidu.com/njet

或者
#明确字符串前缀
/api/v1/auth_kv/password/test_prefix/njet

valor de retorno

  Erro de código Mensagem de erro
Usuário excluído com sucesso 0 sucesso
Usuário não existe 4 o usuário não existe
Falha na exclusão do usuário 4 excluir erro

4. Teste

4.1 Configuração de teste (tomando o teste de bloco api_limit_except de configuração do plano de controle como exemplo):

Adicionar verificação de permissão para a interface API de intervalo como exemplo para teste (prefixo de string fixa) Adicionar verificação de permissão para a interface API SSL como exemplo para teste (usar prefixo variável)

ctrl.conf

...
load_module modules/njt_http_range_api_module.so;  #以range api 设置权限验证普通字符串前缀为例测试
load_module modules/njt_http_ssl_api_module.so;  #以range api 设置权限验证变量前缀为例测试
load_module modules/njt_http_auth_api_module.so;   #auth kv 模块加载
...

http {
    server {
        listen       8081;
        server_name   www.test.com;           #下面使用$server_name变量测试
        
        location /api {
            dyn_module_api;

            api_limit_except  /v1/range PUT {
               auth_basic "OpenNJet range API";
               auth_basic_kv test_kv;       #range 使用固定前缀字符串测试
            }

            api_limit_except  /v1/ssl PUT {
               auth_basic "OpenNJet ssl API";
               auth_basic_kv $server_name;  #ssl 使用变量前缀测试
            }
        }
        
        location /doc {
            doc_api;
        }
    }
}

4.2 teste de prefixo de string fixa de intervalo (nome de usuário: senha njet 123456)

PUT Adicione nome de usuário e senha. O teste inicial não existe usuário njet e senha 123456. Acesse a interface api get do intervalo, solicite a digitação da senha, digite njet/123456, a verificação falha.

Configure o nome de usuário e a senha por meio da configuração de autenticação, njet/123456

Visite a interface de obtenção de intervalo novamente, digite njet/123456 e a verificação será aprovada com sucesso.

Teste de alteração de senha PATCH

Revisite a interface range get e use njet/12345 para falhar.

Use njet/654321, verificação aprovada

DELETE excluir senha teste excluir senha

Acesse o intervalo novamente e falhe

 

4.3 teste SSL usando prefixo variável (nome de usuário: senha SSL 123456)

PUT Adicione nome de usuário e senha. Teste se não há usuário SSL e senha 123456 inicialmente. A verificação falha.

Configure o nome de usuário e a senha por meio da configuração de autenticação, ssl/123456, use www.test.com como prefixo.

Acesse a interface SSL Get novamente, digite ssl/123456 e a verificação será aprovada com sucesso.

Teste de alteração de senha PATCH

Acesse novamente a interface SSL Get e use SSL/12345 para falhar.

Use SSL/654321, verificação aprovada

DELETE excluir senha teste excluir senha

Acesse SSL novamente, falhou

O mecanismo de aplicativo NJet  atinge recursos exclusivos de carregamento de configuração dinâmica em tempo de execução por meio da reconstrução do kernel e é uma nova geração de mecanismo de aplicativo da Web de alto desempenho . O NJet possui recursos de processamento de plano de dados de alto desempenho e programa múltiplas funções auxiliares, como clustering, alta disponibilidade, verificações de integridade ativas e APIs declarativas por meio da estrutura de serviço copiloto CoPilot exclusiva do NJet para facilitar a expansão de funções e isolar pares de funções de gerenciamento/controle devidos. ao impacto no plano de dados, o desempenho do mecanismo de aplicação NJet excede três vezes o desempenho do mecanismo de aplicação Envoy recomendado pela CNCF. Site oficial do grupo de correio   

Quanta receita um projeto de código aberto desconhecido pode trazer? A equipe chinesa de IA da Microsoft fez as malas e foi para os Estados Unidos, envolvendo centenas de pessoas. A Huawei anunciou oficialmente que as mudanças de emprego de Yu Chengdong foram fixadas no "Pilar da Vergonha FFmpeg" por 15 anos. atrás, mas hoje ele tem que nos agradecer—— Tencent QQ Video vinga sua humilhação passada? O site espelho de código aberto da Universidade de Ciência e Tecnologia de Huazhong está oficialmente aberto para acesso externo : Django ainda é a primeira escolha para 74% dos desenvolvedores. O editor Zed fez progressos no suporte ao Linux. deu a notícia: Depois de ser desafiado por um subordinado, o líder técnico ficou furioso e rude, foi demitido e engravidou. Funcionária Alibaba Cloud lança oficialmente Tongyi Qianwen 2.5 Microsoft doa US$ 1 milhão para a Rust Foundation.
{{o.nome}}
{{m.nome}}

Acho que você gosta

Origin my.oschina.net/u/6606114/blog/11121312
Recomendado
Clasificación