auth_basic_kv 权限校验

1.功能描述

auth_basic_kv,利用kv存储用户名/密码:提供HTTP接口,实现动态增加条目,或修改密码,也支持删除

2.依赖模块

njet_ctrl.conf:

load_module modules/njt_http_auth_api_module.so;   #auth kv 模块加载

3.指令说明

Syntax: auth_basic_kv {prefix};
Default:
Context: main, server, location, limit_conf

该指令可配置在main, server, location, limit_conf 块中

prefix支持变量,以便使用server_name等,方便配置。

njet_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.API

4.1 API说明

设置接口:

PUT http://192.168.40.158:8088/api/v1/auth_kv/password

修改密码接口:

PATCH http://192.168.40.158:8088/api/v1/auth_kv/password/test_kv/用户名

删除用户接口

DELETE http://192.168.40.158:8088/api/v1/auth_kv/password/test_kv/用户名

4.2 调用样例

设置用户名和密码

curl -X 'PUT' \
  'http://192.168.40.158:8088/api/v1/auth_kv/password' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d '{
  "prefix": "test_kv",
  "user_name": "njet",
  "password": "123456"
}'

修改密码:

针对njet 用户修改密码

curl -X 'PATCH' \
  'http://192.168.40.158:8088/api/v1/auth_kv/password/test_kv/njet' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d '{
  "password": "654321"
}'

删除用户:

curl -X 'DELETE' \
  'http://192.168.40.158:8088/api/v1/auth_kv/password/test_kv/njet' \
  -H 'accept: */*'

返回:

{
  "code": 0,
  "msg": "success."
}