Verificación de permisos Auth_basic_kv e interfaz API Auth Kv Http

NGINX evoluciona hacia la nube nativa, todo en  OpenNJet 


.necesidad

Actualmente, solo se admite auth_basic_user_file. Debe modificar manualmente el contenido del archivo para agregar nuevos usuarios y cambiar contraseñas. Es necesario agregar un tipo: auth_basic_kv, use kv para almacenar el nombre de usuario/contraseña

•La clave es "auth_basic":{prefix}:{user_name}, el valor es la contraseña. El prefijo admite variables para que nombre_servidor, etc. se puedan utilizar para una configuración sencilla.

•Proporciona una interfaz HTTP para agregar entradas dinámicamente, cambiar contraseñas y también admitir la eliminación

2.diseño de instrucciones auth_basic_kv

Esta directiva se puede configurar en los bloques main, server, location, limit_conf. Tomando api_limit_except como ejemplo, la directiva auth_basic_kv se coloca en el módulo njt_http_auth_basic_module. Se puede configurar con la directiva auth_basic_user_file.

   
Sintaxis auth_basic_kv {prefijo}
Por defecto -
Contexto principal,servidor,ubicación,limit_conf

El prefijo puede ser una variable o una cadena normal. El formato de contraseña real almacenado por kv es: Clave: auth_basic:{prefix}:{user_name} Valor: Contraseña (usando el algoritmo SHA).

P.ej:

•Supongamos que el nombre de usuario es njet, utilice el formato variable $server_name (si el nombre_servidor real es www.baidu.com), el almacenamiento real en la memoria kv es: Clave: auth_basic:www.baidu.com:njet

•Suponiendo que el nombre de usuario es njet y se utiliza el formato de cadena fija test_prefix, el almacenamiento real en la memoria kv es: Clave: 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;
}

NOTA:

Cuando llega la solicitud Http, si es una variable, la variable se convertirá en un valor real y luego se buscará en kv db. Por lo tanto, todos los valores de variables reales almacenados en kv db no son variables.

3. Diseño de interfaz API http de contraseña

Agregue un nuevo njt_http_auth_api_module. Al igual que otros módulos de API imperativos (el plano de control se configura a través de la entrada /api), proporciona una interfaz de API http y proporciona funciones de adición, eliminación y modificación de contraseñas: /api/v1/auth_kv/{. tipo} tipo: [contraseña | rol | inicio de sesión] actualmente, el tipo de contraseña se usa para operar la contraseña. En el futuro, se pueden operar el rol y el inicio de sesión.

3.1 Establecer interfaz de contraseña:

PUT:/api/v1/auth_kv/el cuerpo de la contraseña tiene el siguiente formato:

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

或者

{
    "prefix": "test_prefix",    #此处是明确的字符串前缀
    "user_name": "njet",
    "password": "123456"
}
  código de error Mensaje de error
aumentar el éxito 0 éxito
El usuario ya existe 4 el usuario existió
aumentar el fracaso 4 error al agregar contraseña
El parámetro tiene valor nulo. 3 prefijo, nombre de usuario y contraseña no deben estar vacíos
El parámetro es ilegal. 3 Habrá errores json específicos
Falló el cifrado de contraseña 4 error de cifrado de contraseña

3.2 Interfaz de modificación de contraseña:

PARCHE:/api/v1/auth_kv/contraseña/{prefijo}/{nombre_usuario}

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

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

El cuerpo tiene el siguiente formato:

{
    "password": "123456"
}
  código de error Mensaje de error
Modificado con éxito 0 éxito
el usuario no existe 4 el usuario no existe
no se puede editar 4 error modificar contraseña
El parámetro tiene valor nulo. 3 prefijo, nombre de usuario y contraseña no deben estar vacíos
El parámetro es ilegal. 3 Habrá errores json específicos
Falló el cifrado de contraseña 4 error de cifrado de contraseña

3.3 Eliminar interfaz de contraseña:

ELIMINAR:/api/v1/auth_kv/contraseña/{prefijo}/{nombre de usuario}

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

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

valor de retorno

  código de error Mensaje de error
Usuario eliminado exitosamente 0 éxito
el usuario no existe 4 el usuario no existe
Error al eliminar el usuario 4 borrar error

4. Prueba

4.1 Configuración de prueba (tomando la prueba de bloque api_limit_except de configuración del plano de control como ejemplo):

Agregue verificación de permisos para la interfaz API de rango como ejemplo para pruebas (prefijo de cadena fijo) Agregue verificación de permisos para la interfaz API SSL como ejemplo para pruebas (use prefijo variable)

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;
        }
    }
}

Prueba de prefijo de cadena fija de rango 4.2 (nombre de usuario: contraseña de njet 123456)

PUT Agregue el nombre de usuario y la contraseña. La prueba inicial no existe njet usuario y contraseña 123456. Acceda a la interfaz de obtención de API de rango, solicite ingresar la contraseña, ingrese njet/123456, la verificación falla.

Configure el nombre de usuario y la contraseña mediante la configuración de autenticación, njet/123456

Visite nuevamente la interfaz de obtención de rango, ingrese njet/123456 y la verificación se aprobará con éxito.

Prueba de cambio de contraseña de PATCH

Vuelva a visitar la interfaz de obtención de rango y use njet/12345 para fallar.

Utilice njet/654321, verificación aprobada

BORRAR eliminar contraseña prueba eliminar contraseña

Accede al rango nuevamente y falla.

 

4.3 prueba ssl usando prefijo variable (nombre de usuario: contraseña ssl 123456)

PUT Agregue el nombre de usuario y la contraseña. Pruebe que no haya ningún usuario SSL y contraseña 123456. Acceda a la interfaz de obtención de SSL y solicite la contraseña.

Configure el nombre de usuario y la contraseña a través de la configuración de autenticación, ssl/123456, use www.test.com como prefijo.

Acceda nuevamente a la interfaz ssl get, ingrese ssl/123456 y la verificación se realizará con éxito.

Prueba de cambio de contraseña de PATCH

Vuelva a acceder a la interfaz ssl get y use ssl/12345 para fallar.

Utilice ssl/654321, verificación aprobada

BORRAR eliminar contraseña prueba eliminar contraseña

Acceder a ssl nuevamente, falló

El motor de aplicaciones NJet  logra capacidades únicas de carga de configuración dinámica en tiempo de ejecución a través de la reconstrucción del kernel y es una nueva generación de motores de aplicaciones web de alto rendimiento . NJet tiene capacidades de procesamiento de planos de datos de alto rendimiento y programa múltiples funciones auxiliares, como agrupación en clústeres, alta disponibilidad, comprobaciones de estado activas y API declarativas a través del marco de servicio CoPilot exclusivo de NJet para facilitar la expansión de funciones y aislar los pares de funciones de gestión/control. Además del impacto en el plano de datos, el rendimiento del motor de aplicaciones NJet supera tres veces el del motor de aplicaciones Envoy recomendado por CNCF. Sitio web oficial del grupo de correo.   

¿Cuántos ingresos puede generar un proyecto desconocido de código abierto? El equipo chino de inteligencia artificial de Microsoft empacó colectivamente y se fue a los Estados Unidos, involucrando a cientos de personas. Huawei anunció oficialmente que los cambios de trabajo de Yu Chengdong estaban clavados en el "Pilar de la vergüenza de FFmpeg" durante 15 años. Hace, pero hoy tiene que agradecernos—— ¿Tencent QQ Video venga su humillación pasada? El sitio espejo de código abierto de la Universidad de Ciencia y Tecnología de Huazhong está oficialmente abierto para acceso externo : Django sigue siendo la primera opción para el 74% de los desarrolladores. El editor Zed ha logrado avances en el soporte de Linux. Un ex empleado de una conocida empresa de código abierto . dio la noticia: después de ser desafiada por un subordinado, la líder técnica se puso furiosa y grosera, fue despedida y quedó embarazada. La empleada Alibaba Cloud lanza oficialmente Tongyi Qianwen 2.5 Microsoft dona 1 millón de dólares a la Fundación Rust.
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

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