加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_韶关站长网 (https://www.0751zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

部署Nginx Plus作为API网关:Nginx

发布时间:2019-09-04 20:29:21 所属栏目:教程 来源:首席架构师
导读:副标题#e# 了解着名的Nginx服务器(微服务必不可少的东西)如何用作API网关。 现代应用程序体系结构的核心是HTTP API。 HTTP使应用程序能够快速构建并轻松维护。无论应用程序的规模如何,HTTP API都提供了一个通用接口,从单用途微服务到无所不包的整体。通过

在没有某种形式的身份验证的情况下发布API以保护它们是不常见的。 NGINX Plus提供了几种保护API和验证API客户端的方法。有关基于IP地址的访问控制列表(ACL),数字证书身份验证和HTTP基本身份验证的信息,请参阅文档。在这里,我们专注于API特定的身份验证方法。

API密钥身份验证

API密钥是客户端和API网关已知的共享密钥。它们本质上是作为长期凭证发布给API客户端的长而复杂的密码。创建API密钥很简单 - 只需编码一个随机数,如本例所示。

  1. openssl rand -base64 18 7B5zIqmRGXmrJTFmKa99vcit 

在顶级API网关配置文件api_gateway.conf的第6行,我们包含一个名为api_keys.conf的文件,其中包含每个API客户端的API密钥,由客户端名称或其他描述标识。

  1. map $http_apikey $api_client_name { 
  2.  default ""; 
  3.   
  4.  "7B5zIqmRGXmrJTFmKa99vcit" "client_one"; 
  5.  "QzVV6y1EmQFbbxOfRCwyJs35" "client_two"; 
  6.  "mGcjH8Fv6U9y3BVF9H3Ypb9T" "client_six"; 

API密钥在块中定义。 map指令有两个参数。第一个定义了API密钥的位置,在本例中是在$ http_apikey变量中捕获的客户端请求的apikey HTTP头。第二个参数创建一个新变量($ api_client_name)并将其设置为第一个参数与键匹配的行上的第二个参数的值。

例如,当客户端提供API密钥7B5zIqmRGXmrJTFmKa99vcit时,$ api_client_name变量设置为client_one。此变量可用于检查经过身份验证的客户端,并包含在日志条目中以进行更详细的审核。

地图块的格式很简单,易于集成到自动化工作流程中,从现有的凭证存储生成api_keys.conf文件。 API密钥身份验证由每个API的策略部分强制执行。

  1. # Policy section 
  2. location = /_warehouse { 
  3.  internal; 
  4.  set $api_name "Warehouse";  
  5.   
  6.  if ($http_apikey = "") { 
  7.  return 401; # Unauthorized (please authenticate) 
  8.  } 
  9.  if ($api_client_name = "") { 
  10.  return 403; # Forbidden (invalid API key) 
  11.  } 
  12.   
  13.  proxy_pass http://$upstream$request_uri; 

(编辑:云计算网_韶关站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读