设置和配置 Edge Microgate

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

Edge Microgate v. 3.0.x

概览

完成本设置指南中的步骤后,您将拥有一个全面配置且正常运行的 Edge Microgate 安装,能够处理 API 请求。您将通过 Edge Microgate 向后端目标进行安全的 API 调用,以测试设置。您还将学习如何向 Microgate 添加高峰控制插件。

本指南分为以下几个部分:

前提条件:安装 Edge Microgate

按照安装 Edge Microgate 中的说明操作。完成安装后,您就可以按照本教程中的步骤进行操作了。

第 1 部分:配置 Edge Microgate

在本部分中,您将使用命令行界面 (CLI) 命令配置 Edge Microgate 以 与 Apigee Edge 通信

Apigee Edge Cloud 配置步骤

如需将 Edge Microgate 与 Apigee Edge Cloud 搭配使用,请按以下步骤操作:

  1. 初始化 Edge Microgate(此步骤只需执行一次):
    edgemicro init
    
  2. 一个名为 default.yaml 的配置文件放在主目录中名为 .edgemicro 的子目录中。立即检查以确保此文件存在:
    ls ~/.edgemicro
    default.yaml
    

    注意 :在 Edge Microgate 文档中,我们使用波浪号 (~) 来引用主目录,这是一种 UNIX 快捷键。在 Windows 系统上,如果运行不支持波浪号的 shell,则需要在引用主目录的命令中替换波浪号的相应环境变量。例如:%USERPROFILE%/.edgemicro

  3. 所有 CLI 命令都有一个帮助函数。输出关于 edgemicro configure 命令的帮助信息:
    edgemicro configure -h
    
  4. 执行以下命令以配置 Edge Microgate:
    edgemicro configure -o [org] -e [env] -u [username] 
    

    其中:

    • org: Edge 组织名称(您必须是组织管理员)。
    • env: 组织中的环境(例如测试或生产环境)。
    • username: 与您的 Apigee 帐号关联的电子邮件地址。

      注意:configure 命令允许使用更多参数。如需查看完整列表,请参阅为 Apigee Edge Cloud 配置 Edge Microgate

示例

edgemicro configure -o docs -e test -u jdoe@example.com

输出

./edgemicro configure -o docs -e test -u jdoe@apigee.com
password:
current nodejs version is v12.5.0
current edgemicro version is 3.0.2
password:
file doesn't exist, setting up
Give me a minute or two... this can take a while...
App edgemicro-auth deployed.
checking org for existing KVM
error checking for cert. Installing new cert.
creating KVM
adding private_key
adding public_key
configuring host edgemicroservices-us-east-1.apigee.net for region us-east-1

saving configuration information to: $HOME/.edgemicro/docs-test-config.yaml

vault info:
 -----BEGIN CERTIFICATE-----
MIICpDCCAYwCCQCQ2mJZJGbPPTANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDEwls
b2NhbGhvc3QwHhcNMTcwOTA3MjA0ODA4WhcNMTcwOTA4MjA0ODA4WjAUMRIwEAYD
VQQDEwlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDw
yzmqi5CelqqtTr6IaFe1ssrMXEDnNtkBh95U6F5zHLsNQhJcyNUAO9um6FLMSqSd
fTztXfWUZzDgmbb6sfbx/9cqpvQ8TIjxyIz8xGM9H4legRQmsCQoYGkLjpPE5ZOa
wZrI5IaVm8LY6vbopPFwxgKOQ9bphx6k9Na055DmNyZAOTMD+4I0m/RdsrnZnYih
3DaFj1tXHKZI1jfAt/QOif5Nmk4+JckYwF+9HBysWUbbvj/gnBjVYF2Isb7q7oFD
lPGhwFoIebMqHMWD8lG7+9RJDO9dDV6f1g1/9waIrq1D+MoVXos9VMstNrPp0cKF
Ue+lAkct8tylH+2MosF7AgMBAAEwDQYJKoZIhvcNAQELBQADggEBAJMRdcQh3ayy
csVVT4TYwxV7MKWRfhDRz6X+MM9frB+Z7sI4+ZoZbXKOoZI2hSjmbdLpkNR/m9eJ
+1Uk0JKmpSY7Q+1rRrvcHsWNysGf4z+zDJXYECTrtSnXKBXtb9SJ8JAfoZOQD0lA
zmKuJjQMLTdiYMHOBR6ZWnaKaRvrQwGHcQrheJm4a90XgZF6jcRR8CPrBzkmsbCp
IU/Ux3E17wDGYPxjJs5otyQG8rN/88RGyaSeXK8rjKr9D4KFGJeasXBKmTG2afAr
yfBvS4h6s42FCOR/eLpmMllVoO9up71Fa3EtV+aK+FNNY9uMbgUHeLQE7z9nn06q
PTmvExZLkLQ=
-----END CERTIFICATE-----

The following credentials are required to start edge micro
  key: 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb
  secret: 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47
    

Apigee Private Cloud 配置步骤

如需将 Edge Microgate 与 Apigee Private Cloud 搭配使用,请按以下步骤操作:

  1. 初始化 Edge Microgate(此步骤只需执行一次):
    edgemicro init
    
  2. 输出 edgemicro private configure 命令的帮助信息。您可以通过这种方式输出任何 Edge Microgate CLI 命令或命令选项的帮助信息。
    edgemicro private configure -h
    
  3. 执行以下命令: 它需要有关 Apigee Edge Private Cloud 帐号的标准信息:组织名称、环境名称、用户名(电子邮件地址)、密码、管理服务器 IP 和路由器 IP。您必须是 Edge 组织管理员才能使用以下命令:
    edgemicro private configure -o [org] -e [env] -u [username] -r [runtime_url] -m [mgmt_url] -v [virtual_host]
    

    其中:

    • org 是您的 Edge 组织名称(您必须是组织管理员)。
    • env 是您的组织(例如测试或生产)中的环境。
    • runtime_url 是您的私有云实例的运行时网址。
    • mgmt_url 是您的私有云实例的管理服务器的网址。
    • username 是与您的 Apigee 帐号关联的电子邮件地址。
    • virtual_host 是以英文逗号分隔的虚拟主机名列表。默认值为 default,secure

示例

edgemicro private configure -o docs -e test -u jdoe@example.com -r http://192.162.52.106:9001 -m http://192.162.52.106:8080 -v default

或者,如果您的虚拟主机别名为 myorg-test.mycompany.com,您可以使用如下命令:

edgemicro private configure -o docs -e test -u jdoe@example.com -r myorg-test.mycompany.com -m http://192.162.52.106:8080 -v default

输出

delete cache config
checking for previously deployed proxies
configuring edgemicro internal proxy
deploying edgemicro internal proxy
deploying  edgemicro-auth  app
copy auth app into tmp dir
copy config into tmp deer
Give me a minute or two... this can take a while...
App edgemicro-auth added to your org. Now adding resources.

checking org for existing KVM
error checking for cert. Installing new cert.
creating KVM
adding private_key
adding public_key
configuring host http://192.168.52.106:9001 for region dc-1

saving configuration information to: $HOME/.edgemicro/jdoe-test-config.yaml
vault info: 
-----BEGIN CERTIFICATE----- 
MIICpDCCAYwCCQDpIvWlpaZJGDANBgkqhkiG9w0BAQFADAUMRIwEAYDVQQDEwls 
b2NhbGhvc3QwHhcNMTYwNDA3MTcxNTM5WhcNMTYwND4MTcxNTM5WjAUMRIwEAYD 
VQQDEwlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAUAA4IBDwAwggEKAoIBAQD3 
OAQ+kf5FH0S0yuj05ITqUODuUJspBPberRMbqOZYHcFswhB0Yvg6JKWsKWBDP9o
Xl96dtgH7xPFRqIU0zI452jkMQ1fPz2mSaGwik245yfBku7olooXKRKTRKOUoXa 
q3Hld/RPxGSsWtiyyYtKex7tuFdq0Knm1EhowdTRGIgjNvudeYMka/XPRXuykhd 
xIDxWj4rdX+4GPx9qT2eTQC5nOAC7XHVL7ys4KqsAiv28vw10u400KstFFS8Qho 
7FaE0bOKLolKKadKyA60ha1XIw/uSTD6ZQFWQ+XM3OaRbXePWXnSZioSxXcZT7L 
hMUKbsRXw/TCvRB51LgNAgMBAAEwDQYJKoZIhvcNAQELBQADgEBAOuR1OmE/W6j 
gRAarJB5EQuTEpI/9Zpg5c5RAGjzLhkazsycn7pal+IymUjCV7D0oIxTVuTM8ZZ 
57kR5hF/C1ZypDN9i+KGP2ovX8WOCCXYtIQECgZPB/L/7/k7BDuKN4vFBvWUe3X 
s2oyjnVWy+ASqsW8gHfj8ekhe22bP240Oqkbyg9SZP9ol1tvJX6+M0thYwcTwAd 
ft929Icey/MOTQC0jB2qm0gnIx/7KInFXfS5KoFRJoGrWDeckr3RdBo2LhnPaeZ 
1gPYIqphZ3HfisF5KlBXoR8oT/Ilym/nq5COlv+3L4tMIk18F7BQZB60SRazifz 
pFkIxepyr/0= 
-----END CERTIFICATE----- 

The following credentials are required to start edge micro 
   key: a3f8f3dfe39158fc3c50b274f0af2234246e0d5f6ea4ad09389b645147151ba3
   secret: 3e9904802fb3c0e8ca408128a11119cf13546d54dac10ace944c097a726a1263

edgemicro configuration complete!
    

验证安装

运行以下命令以验证安装。如果未报告任何错误,则表示一切设置正确无误,您将能够成功启动 Edge Microgate。

edgemicro verify -o [org] -e [env] -k [key] -s [secret]

其中:

  • org 是您的 Edge 组织名称(您必须是组织管理员)。
  • env 是贵组织中的环境(例如测试环境或生产环境)。
  • key 是 configure 命令之前返回的键。
  • secret 是 configure 命令之前返回的键。

示例

edgemicro verify -o docs -e test -k 93b01fd21d86331459ae52f624ae9aeb13eb94767ce40a4f621d172cdfb7e8e6 -s c8c755be97cf56c21f8b0156d7132afbd03625bbd85dc34ebfefae4f23fbcb3c

关于配置

到目前为止,所有配置都让 Edge Microgate 自行引导到 Apigee Edge。引导成功后,Edge Microgate 会从 Apigee Edge 检索其他配置信息的载荷。

此配置信息有何用途?我们将在本教程的下一部分介绍,当 Edge Microgate 启动时,它需要从 Apigee Edge 接收一个特殊的 Edge Microgate 感知 API 代理列表。在本教程的下一部分中,您将创建一个 Microgate 感知型代理。Edge Microgate 将客户端限制为仅调用这些 Microgate 感知 API 代理所面向的 API,并且客户端必须(默认)为每个调用提供有效的安全令牌。如需详细了解这些代理,请参阅 Edge Microgate 概览中的“关于 Edge Microgate 感知代理的注意事项”。

作为 Edge 组织管理员,您想知道为什么可以将 Edge Microgate 感知代理添加到 Edge 产品中,就像其他任何代理一样。通过使用产品和开发者应用,您可以生成特定于客户端的安全令牌,以控制对通过 Edge Microgate 调用的 API 的访问权限。同样,所涉及的模式与在 Apigee Edge 上使用任何 API 代理、产品和开发者应用的模式完全相同。如果您想了解产品,请先参阅 Edge 文档中的什么是 API 产品?

接下来,我们将介绍如何创建 Edge Microgate 感知型代理,之后将启动 Edge Microgate 并测试设置过程。

第 2 部分:在 Apigee Edge 上创建实体

在本部分中,您将在 Edge 中创建以下实体:

  • 微网关感知型代理 - 这是 Edge Microgate 启动时可以发现的特殊代理。微网关感知型代理必须遵循命名惯例:名称必须使用 edgemicro_。例如,edgemicro_helloedgemicro_userinfo。Edge Microgate 启动时,它会从 Edge 中检索您在启动 Edge Microgate 时指定的 Edge 组织和环境中的微网关感知型代理列表。

    对于每个微网关感知型代理,Edge Microgatway 会检索代理的目标网址及其基本路径。微网关感知型代理还提供了一种便捷的方式,将 Edge Microgate 生成的分析数据与 Edge 平台上的代理相关联。在微网关处理 API 调用时,它会将分析数据异步推送到 Edge。分析数据将显示在 Edge Analytics 界面中的微网关感知型代理名称下,就像处理任何其他代理一样。
  • 产品、开发者和开发者应用 - Edge Microgate 使用产品、开发者和开发者应用来实现 OAuth2 访问令牌或 API 密钥安全性。Edge Microgate 启动时,它会从您的 Apigee Edge 组织下载所有产品配置。它会使用这些信息来验证使用 API 密钥或 OAuth2 访问令牌通过 Edge Microgate 进行的 API 调用。

1. 在 Edge 上创建 Edge Microgate 感知型 API 代理

  1. 在 Apigee Edge 上登录您的组织。
  2. 在侧边导航菜单中,依次选择 Develop > API Proxies
  3. 点击 + 代理。系统会调用“构建代理”向导。
  4. 在第一个向导页面中,选择反向代理(最常见)
  5. 点击下一步
  6. 在向导的“Details”(详细信息)页面中,进行如下配置。请务必完全按照如下所示填写向导:
    • 代理名称:edgemicro_hello
    • 代理基本路径:/hello
    • 现有 API:http://mocktarget.apigee.net/
  7. 点击下一步
  8. 在向导的“Security”页面中,选择 Passthrough (none)
  9. 点击下一步
  10. 在向导的 Virtual Hosts 页面中,接受默认值。
  11. 点击下一步
  12. 在向导的“Build”(构建)页面中,查看您的代理设置。确保已选择 test 环境。
  13. 点击构建和部署

2. 创建产品

  1. 在侧边导航菜单中选择发布 > API 产品
  2. 点击 + API 产品。系统会显示“产品详情”页面。
  3. 按如下所示填写“商品详情”页面:
    • 名称:EdgeMicroTestProduct
    • 显示名称:EdgeMicroTestProduct
    • 环境:测试和生产
    • 访问权限:公开
    • 密钥审批类型:自动
  4. 在“资源”中,点击 +API 代理
  5. 选择 edgemicro-auth
  6. 再次点击 +API 代理
  7. 选择 edgemicro_hello
  8. 选择 + 自定义资源
  9. 输入 /**
  10. 再次选择 + Custom Resource
  11. 输入 /
  12. 点击保存

3. (可选)创建测试开发者

在本教程中,您可以使用任何现有的开发者进行下一步,即创建一个开发者应用。但如果需要,现在就可以创建一个测试开发者:

  1. 在侧边导航菜单中选择发布 > 开发者
  2. 点击 + 开发者
  3. 填写对话框以创建测试开发者。

4. 创建开发者应用

您将使用此应用中的客户端凭据通过 Edge Microgate 进行安全的 API 调用:

  1. 在侧边导航菜单中选择发布 > 应用
  2. 点击 + 应用。系统随即会显示“开发者应用详情”页面。
  3. 按照以下说明填写开发者应用页面:
    1. 名称:EdgeMicroTestApp
    2. 显示名称:EdgeMicroTestApp
    3. 开发者:如果您创建了测试开发者,请选择该开发者。或者,您也可以使用任何现有开发者来学习本教程。
    4. 凭据
      1. 选择“到期”:永不
      2. 点击 + 产品,然后选择 EdgeMicroTestProduct(您刚刚创建的产品)
  4. 点击保存
  5. 您已返回到“应用”列表页面。
  6. 选择您刚刚创建的应用 EdgeMicroTestApp
  7. 点击使用方密钥使用方密钥旁边的显示

第 3 部分:运行 Edge Microgate 网关

现在,您已经在 Edge 上配置了 Edge Microgate 和至少一个 Edge Microgate 感知代理,是时候启动 Edge Microgate 了。Edge Microgate HTTP 服务器将在本地机器上运行,您将直接向该服务器发出 API 调用。

1. 启动 Edge Microgate

使用 edgemicro start 命令启动 Edge Microgate。

  1. 请确保您拥有之前运行 edgemicro configure 命令时返回的密钥。该输出应如下所示:
    You need key and secret while starting edgemicro instance
    
    key: da4778e7c240a5d4585fc559eaba5083328828bc9f3a7f583e8b73e
    secret: 3aad7439708b4aeb38ee08e82189921ad00e6fc1ba8a8ae9f929ee2
    
  2. (可选)输出 edgemicro start 命令的帮助信息。
    edgemicro start -h
    
  3. 如需启动 Edge Microgate,请执行以下命令:
    edgemicro start -o [org] -e [env] -k [key] -s [secret]
    

    其中:

    • org 是您的 Edge 组织名称(您必须是组织管理员)。
    • env 是贵组织中的环境(例如测试环境或生产环境)。
    • key 是 configure 命令之前返回的键。
    • secret 是 configure 命令之前返回的键。

    示例

    edgemicro start -o docs -e test -k 701e70e718ce6dc1880616b3c39177d64a88754d615c7a4e1f78b6181d000723 -s 05c14356e42d136b83dd135cf8a18531ff52d7299134677e30ef4e34ab0cc824
    

    输出

    start 命令从 Apigee Edge(滚动到终端窗口)中检索大量配置信息。在输出中,您将看到所发现的微网关感知型代理和产品列表。在输出末尾,您应该会看到如下内容:

    ...
    
    current nodejs version is v12.5.0
    current edgemicro version is 3.0.2
    info: jwk_public_keys download from null returned 200 undefined
    info: jwt_public_key download from https://docs-test.apigee.net/edgemicro-auth/publicKey returned 200 OK
    info: products download from https://docs-test.apigee.net/edgemicro-auth/products returned 200 OK
    info: config download from https://edgemicroservices-us-east-1.apigee.net/edgemicro/bootstrap/organization/docs/environment/test returned 200 OK
    PROCESS PID : 17991
    
  4. 检查微网关状态。在另一个终端窗口中,使用 cd 命令转到您启动 Edge Micro 的同一目录,然后输入以下命令:
    edgemicro status
    current nodejs version is v12.5.0
    current edgemicro version is 3.0.2
    edgemicro is running with 8 workers
    

发生了什么情况?

系统会从 Apigee Edge 下载 Edge Microgate 配置信息的载荷并缓存在本地。此类信息包括:

  • 我们之前创建并存储在加密键值对映射 (KVM) 中的公钥。
  • 表示组织/环境中存在的所有 Edge Microgate 感知型代理。这些代理都是使用前缀 edgemicro_ 命名的。
  • 表示组织/环境中存在的所有 API 产品。

通过这些信息,Edge Microgate 可以了解它能处理哪些代理和代理路径。它使用产品信息来强制执行安全措施(与 Apigee Edge 上的任何 API 代理采用的方式完全相同,在 Apigee Edge 中,开发者应用密钥与产品相关联)。我们很快会介绍保护 Edge Microgate 的步骤。

2. 测试 Edge Microgate

在 Edge Microgate 运行时,您可以调用该代理。edgemicro_hello 代理的配置是在启动 Edge Microgate 时从 Edge 下载的。请记住,代理基本路径是 /hello

为了测试 Edge Microgate,我们从基本路径开始并添加资源路径 /echo。请注意,基本路径之后的所有内容(包括任何查询参数)都会直接传递到后端目标:

curl -i http://localhost:8000/hello/echo
{"error":"missing_authorization","error_description":"Missing Authorization header"}

出现此错误的原因是,您未随请求发送有效的 API 密钥或访问令牌。默认情况下,Edge Microgate 在每次调用 API 时都需要 API 密钥或访问令牌。在本教程的下一步中,我们将正确保护此 API,并说明如何获取有效的访问令牌并将其包含在请求中。

4. 停止 Edge Microgate

  1. 在一个单独的终端窗口中,cd 到您启动 Edge Microgate 的同一目录
  2. 输入停止命令:
    edgemicro stop
    

第 4 部分:安全 Edge Microgate

您可以使用 API 密钥或访问令牌来保护通过 Edge Microgate 进行的 API 调用。

使用 OAuth2 访问令牌保障 API 调用的安全

如果您想使用 OAuth2 访问令牌对 API 调用进行身份验证,请按以下步骤操作:

1. 获取所需的密钥

  1. 在 Edge 界面中,转到您之前创建的开发者应用。该应用的名称为 EdgeMicroTestApp。
  2. 在“开发者应用”页面中,显示并复制使用方键值和使用方密钥。必须使用这些值才能在下一步中获取访问令牌。

2. 获取访问令牌

获取访问令牌的方法有两种。我们将向您展示这两种方法。

使用 CLI 获取访问令牌

第一种方法很方便,并遵循我们在整个教程中使用的模式。对于需要请求令牌的客户端应用开发者,第二种方法通常更有用。实际令牌端点在配置 Edge Microgate 时部署的 edgemicro-auth 代理中实现。

  1. (可选)查看 token get 命令的帮助:
    edgemicro token get -h
    
  2. 生成令牌,用 -i-s 参数替换您在 Apigee Edge 上创建的开发者应用中的使用方键值和使用方密钥:
    edgemicro token get -o [org] -e [env] -i [consumer_key] -s [consumer_secret]
    

    其中:

    • org 是您的 Edge 组织名称(您必须是组织管理员)。
    • env 是贵组织中的环境(例如测试环境或生产环境)。
    • consumer_id 是您之前创建的开发者应用中的消费者 ID。
    • consumer_secret 是您之前创建的开发者应用中的使用方密钥。

    示例

    edgemicro token get -o docs -e test -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy
    

    输出(示例)

    current nodejs version is v12.5.0
    { token: 'eyJ0eXAiOiJKV1QiLCJhbGciSUzI1NiJ9.eyJhcHBsaWNhdGl
    vbl9uYW1lIjoiNWNiMGY0tOWMzOC00YmJjLWIzNzEtZGMxZTQzOGYxZGMxI
    iwiY2xpZW50X2lkIjoiNVVdBWEdvSU9lbzYwYWV3OTRQN0c1TUFaRTNhSnA
    iLCJzY29wZXMiOltdLCJhcGlfcHJvjdF9saXN0IjpbIsVkZ2VNaWNyb1Rlc
    3RQcm9kdWN0IlmlhdCI6MTQ3ODIwODMzMiwiZXhwIjoxNDc4MjEwMTMxfQ.
    v3Q8Rs0W9FO_XpERwIAMMXhjGamRmmmWgrAy1wJv0-99oajx5ASI5qjNubM
    nCF14xxwlVXHcz1VfedA8Nx7Ih145zhWWuPKL9muzhXXnVBRFeBMeeLqJk4
    QQ7Bhst7xH_68nJSTE20Egu95DHOCUemfrepDFH0VggY4BmzvwLkBNfz_te
    E_YqwKZbpGOLMdKK1vMk0fk0x19SieIMS_aJYeOAklrzUhnFxWJFrsAWsax
    NLx_BbQcZzYfK1JSDUrhRNVBuPHMnGjNA_oHw2J4qa6Hsp62PfchG-DIW_t
    -0BFnYf3rYXmqyNORqFrOMdl4VxqQ' }
    

(可选)使用 API 获取令牌

如果您习惯使用 curl 或其他 HTTP 客户端调用 Edge 代理,您想知道自己是否可以直接调用令牌端点,而不是使用 edgemicro token 命令。下面是一个 curl 示例。只需替换网址中的组织和环境名称,并在基本身份验证标头中传递以英文冒号分隔的 Consumer Key:Consumer Secret 值即可:

curl -i -X POST "http://[org]-[env].apigee.net/edgemicro-auth/token" -d '{ "client_id": "your consumer key", "client_secret": "your consumer secret", "grant_type": "client_credentials" }' -H "Content-Type: application/json"

其中:

  • org 是您的 Edge 组织名称(您必须是组织管理员)。
  • env 是贵组织中的环境(例如测试环境或生产环境)。
  • client_id 是您之前创建的开发者应用中的消费者 ID。
  • client_secret 是您之前创建的开发者应用中的使用方密钥。

输出 (示例)

无论您使用 edgemicro token CLI 命令,还是使用 curl 调用端点,该命令都会返回一个可用于进行客户端调用的已签名访问令牌。如下所示:

MIICpDCCAYwCCQDpIvWlpaZJGDANBgkqhkiG9w0BAQFADAUMRIwEAYDVQQDEwls 
b2NhbGhvc3QwHhcNMTYwNDA3MTcxNTM5WhcNMTYwND4MTcxNTM5WjAUMRIwEAYD 
VQQDEwlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAUAA4IBDwAwggEKAoIBAQD3 
OAQ+kf5FH0S0yuj05ITqUODuUJspBPberRMbqOZYHcFsnhB0Yvg6JKWxKWBDP9o
Xl96dtgH7xPFRqIU0zI452jkMQ1fPz2mSaGwik241yfBku7olooXKRKTRKOUoXa
q3Hld/RPxGSsWtiyyYtKex7tuFdq0Knm1EhowdTRGIgjNvudeYMka/XPRXuykhd 
xIDxWj4rdX+4GPx9qT2eTQC5nOAC7XHVL7ys4KqsAiv28vw10u400KstFFS8Qho 
7FaE0bOKLolKKadKyA60ha1XIw/uSTD6ZQFWQ+XM3OaRbXePWXnSZioSxXcZT7L 
hMUKbsRXw/TCvRB51LgNAgMBAAEwDQYJKoZIhvcNAQELBQADgEBAOuR1OmE/W6j 
gRAarJB5EQuTEpI/9Zpg5c5RAGjzLhkazsycn7pal+IymUjCV7D0oIxTVuTM8ZZ 
57kR5hF/C1ZypDN9i+KGP2ovX8WOCCXYtIQECgZPB/L/7/k7BDuKN4vFBvWUe3X 
s2oyjnVWy+ASqsW8gHfj8ekhe22bP240Oqkbyg9SZP9ol1tvJX6+M0thYwcTwAd 
ft929Icey/MOTQC0jB2qm0gnIx/7KInFXfS5KoFRJoGrWDeckr3RdBo2LhnPaeZ 
1gPYIqphZ3HfisF5KlBXoR8oT/Ilym/nq5COlv+3L4tMIk18F7BQZB60SRazifz 
pFkIxepyr/0=
      

3. 检查 Edge Microgate 中的配置

  1. 打开 $HOME/.edgemicro/org-env-config.yaml 文件。如果找不到此文件,请参阅 Edge Microgate 的安装位置
  2. 确保将这些 OAuth 插件属性设为 false。它们默认为 false,但建议您仔细检查:
    oauth:
       allowNoAuthorization: false
       allowInvalidAuthorization: false
    
  3. 同样在 org-env-config.yaml 文件中,确保将 OAuth 插件添加到 plugins:sequence 元素中,如下所示:
    plugins:
       dir: ../plugins
       sequence:
       - oauth
    
  4. 如果您对文件进行任何更改,请将这些更改重新加载到正在运行的 Edge Microgate 实例中。此命令以零停机时间重新配置 Edge Microgate:
    edgemicro reload -o [org] -e [env] -k [key] -s [secret]
    

    其中:

    • org 是您的 Edge 组织名称(您必须是组织管理员)。
    • env 是贵组织中的环境(例如测试环境或生产环境)。
    • key 是 configure 命令之前返回的键。
    • secret 是 configure 命令之前返回的键。

    示例

    edgemicro reload -o docs -e test -k 701e70ee718ce6dc188016b3c39177d64a88754d615c74e1f78b6181d
    

4. 安全地调用该 API

有了访问令牌,您现在可以安全地进行 API 调用了。例如:

  curl -i -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhcHBsaWNhdGlvbl
9uYW1lIjoiYmU2YmZjYjAtMWQ0Ni00Y2IxLWFiNGQtZTMxNzRlNTAyMDZkIiwiY2xpZW50X2lkIjoiOGxTTTVIRHdyM
VhIT1ZwbmhURExhYW9FVG5STVpwWk0iLCJzY29wZXMiOltdLCJhcGlfcHJvZHVjdF9saXN0IjpbIk1pY3JvZ2F0ZXdh
eVRlQcm9kdWN0Il0sImCI6MTQzNTM0NzY5MiwiZXhwIjoxNDM1MzQ5NDkxfQ.PL30Y6uK1W1f2ONPEsBDB_BT31c6
IsjWGfwpz-p6Vak8r767tAT4mQAjuBpQYv7_IU4DxSrnxXQ_q536QYCP4p4YKfBvyqbnW0Rb2CsPFziy_n8HIczsWO
s0p4czcK63SjONaUpxV9DbfGVJ_-WrSdqrqJB5syorD2YYJPSfrCcgKm-LpJc6HCylElFDW8dHuwApaWcGRSV3l5Wx
4A8Rr-WhTIxDTX7TxkrfI4THgXAo37p3au3_7DPB_Gla5dWTzV4j93xLbXPUbwTHzpaUCFzmPnVuYM44FW5KgvBrV0
64RgPmIFUxSqBWGQU7Z1w2qFmWuaDljrMDoLEreI2g" http://localhost:8000/hello/echo

该 API 会从模拟服务器返回标头和其他信息。

使用 API 密钥保护 API

如果您想使用 API 密钥进行授权,请按照以下步骤操作:

1. 获取 API 密钥

  1. 在 Edge 界面中,转到您之前创建的开发者应用。该应用的名称为 EdgeMicroTestApp。
  2. 在“开发者应用”页面中,显示并复制使用方密钥。此值是 API 密钥。您将使用此密钥进行经过身份验证的 API 调用。

2. 检查 Edge Microgate 中的配置

  1. 打开文件 $HOME/.edgemicro/org-env-config.yaml. 如果您找不到此文件,请参阅 Edge Microgate 的安装位置
  2. 确保将这些 OAuth 插件属性设为 false。它们默认为 false,但如果需要,您可以仔细检查:
    oauth:
       allowNoAuthorization: false
       allowInvalidAuthorization: false
    
  3. 同样在 org-env-config.yaml 文件中,确保将 OAuth 插件添加到 plugins:sequence 元素中,如下所示:
    plugins:
       dir: ../plugins
       sequence:
       - oauth
        
    
  4. 如果您对文件进行任何更改,请将这些更改重新加载到正在运行的 Edge Microgate 实例中。此命令以零停机时间重新配置 Edge Microgate:
    edgemicro reload -o [org] -e [env] -k [key] -s [secret]
    

    其中:

    • org 是您的 Edge 组织名称(您必须是组织管理员)。
    • env 是贵组织中的环境(例如测试环境或生产环境)。
    • key 是 configure 命令之前返回的键。
    • secret 是 configure 命令之前返回的键。

    示例

    edgemicro reload -o docs -e test -k 701e70ee718ce6dc188016b3c30177d64a88754d615c74e1f78b6181d
    

3. 使用 API 密钥安全地调用 API

使用 x-api-key 标头调用 API,如下所示。您从开发者应用中复制的使用方键值就是 API 密钥。默认情况下,Edge Microgate 要求您在名为 x-api-key 的标头中传递密钥,如下所示:

curl -i http://localhost:8000/hello/echo -H "x-api-key: [apikey]"

其中:

  • apikey 是从 EdgeMicroTestApp 获取的使用方键值。

例如:


curl -i http://localhost:8000/hello/echo -H 'x-api-key: XsU1R4zGXz2ERxd0ilYQ5szwuljr5bB'

现在,您便拥有了一个功能齐全且安全的 Edge Microgate 网关。在本教程的下一部分,我们将了解为 Edge Microgate 添加功能的插件。

第 5 部分:添加 Spike Arrest 插件

在本部分中,我们将为您的 Edge Microgate 实例添加一项称为“高峰控制”的速率限制功能。

什么是插件?

插件是一个向 Edge Microgate 添加功能的 Node.js 模块。插件模块遵循一致的模式,并存储在 Edge Microgate 已知的位置,因此微网关能够自动发现和加载这些模块。如需详细了解插件,请参阅使用插件

添加高峰控制插件

高峰控制插件可防范流量高峰。它限制了 Edge Microgate 实例处理的请求数。

在 Edge Microgate 中,高峰控制以插件模块的形式实现。如需启用它,您需要将其添加到 Edge Microgate 配置文件中。

  1. 如果您找不到此文件,请打开 $HOME/.edgemicro/org-env-config.yaml.Edge Microgate 安装位置文件。
  2. 添加以下元素。您可以将它添加到文件中的任意位置。
       spikearrest:
          timeUnit: minute   
          allow: 10   
          buffersize: 0   
    
  3. spikearrest 添加到 edgemicro:sequence 元素中,如下所示。序列配置属性会告知 Edge Microgate 插件模块的执行顺序。
    edgemicro:
      home: ../gateway
      port: 8000
      max_connections: -1
      max_connections_hard: -1
      logging:
        level: info
        dir: /var/tmp
        stats_log_interval: 60
      plugins:
        dir: ../plugins
      sequence:
        - oauth
        - spikearrest
    
  4. 保存配置文件。
  5. 使用 reload 命令重新加载 Edge Microgate。您必须从启动 Edge Microgate 的目录运行此命令。
    edgemicro reload -o [org] -e [env] -k [key] -s [secret]
    

    其中:

    • org 是您的 Edge 组织名称(您必须是组织管理员)。
    • env 是贵组织中的环境(例如测试环境或生产环境)。
    • key 是 configure 命令之前返回的键。
    • secret 是 configure 命令之前返回的键。

    示例

    edgemicro reload -o docs -e test -k 701e70ee718ce6dc188016b3c39177d64a88754d615c74e1f78b6181d
    
  6. 尝试快速连续多次调用该 API。第二次调用后,Edge Microgate 会返回以下错误:
    {"message":"SpikeArrest engaged","status":503}
    

其原因在于,高峰控制可以平滑在特定时间单位内进行的调用次数。因此,在这种情况下,您可以在一分钟内进行 10 次通话,或每 6 秒进行一次通话。

额外赠金:添加配额插件

按照与配置高峰控制时间相同的模式,您可以添加其他插件,例如配额插件。 与高峰控制一样,每次安装 Edge Microgate 时,都会附带配额插件。配额指定了在特定时间间隔(分钟或小时)内允许应用向 API 提交的请求消息数量。

第 6 部分:查看 Apigee Edge 的分析数据

现在,我们有了功能齐全的 Edge Microgate 实例,我们来看看有什么进展! 默认情况下,分析插件模块会添加到 Edge Micro。此模块以静默方式将分析数据从 Edge Micro 推送到 Apigee Edge,由 Edge Analytics 系统在其中使用。我们来看看:

  1. 在 Apigee Edge 上登录您的组织。
  2. 选择分析 > 代理性能
  3. 在代理性能信息中心内,选择 edgemicro_hello Proxy
  4. 此图表会显示有关代理流量模式的信息,例如总流量、平均响应时间、平均目标响应时间等。

如需详细了解 Edge Analytics 信息中心,请参阅 Edge 文档中的“分析信息中心”首页。如需详细了解插件,请参阅使用插件