最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

API网关 - 认证 ; 原理概述与具体实践样例

业界 admin 4浏览 0评论

目录

​编辑

API网关安全性认证的重要作用

API网关常见认证方式解析:

那安全认证是怎么做的 ?

        以JWT为例方式解析网关认证的核心机制

Higress简单介绍:基于Istio与Envoy的多功能云原生API网关

Higress 做 JWT认证的配置方法详解

JWT认证的详细配置方式

1. Higress server 的全局配置

2. 消费者配置

3. 特定路由或域名的配置

4. 发布JWT令牌

几个关键概念说明

Higress单机版简易部署指南


API网关安全性认证的重要作用

为了保护您对外提供服务的 API,避免恶意访问、未授权访问、应用漏洞、黑客攻击等导致的数据损失和资产损失,API网关的认证是十分必要的。基于token的身份验证机制,如JWT(Json Web Token),在这一过程中扮演了关键角色。

API网关常见认证方式解析:

API密钥认证:适合轻量级安全需求场景,易于实现和管理,但安全性较低,易被窃取。适用于内部系统或低敏感数据接口。

OAuth 2.0 : 适用于需要第三方授权访问的场景,提供细粒度权限控制,增强用户隐私保护,但流程较复杂,可能增加开发成本。

JWT(JSON Web Token):适合跨域、分布式环境下的单点登录,携带信息丰富,减轻服务器负担,但需注意令牌过期与刷新机制设计,比较常用的认证方式之一。

OpenID Connect : 基于OAuth 2.0之上添加了身份验证层,特别适合Web应用的身份验证,简化登录流程,提高用户体验,但依赖于可靠的身份提供商。

HMAC认证 : 通过共享密钥生成消息验证码来验证请求合法性,适用于确保数据完整性与来源真实性,但要求双方严格保密共享密钥。

那安全认证是怎么做的 ?

以下是基于 JWT 的网关认证流程的详细步骤:

  1. 客户端发起认证请求
    • 客户端(如浏览器或移动应用)向 API 网关发送一个认证请求,通常包含用户的用户名和密码。请求可能通过 POST 方法发送到特定的认证端点。
  1. 网关转发请求到后端服务
    • 网关接收到认证请求后,直接将请求转发给后端的身份验证服务。这个过程是透明的,客户端并不知道请求被转发了。
  1. 后端服务进行验证并生成 token
    • 后端服务读取请求中的用户名和密码,进行身份验证。如果验证成功,后端服务会使用私钥生成一个 JWT token。
    • 生成的 JWT 包含以下部分:
      • Header:定义了令牌的类型(JWT)和签名算法(例如 HS256)。
      • Payload:包含了用户信息(如用户名、角色等)和其他声明(如过期时间 exp 和颁发时间 iat)。
      • Signature:对 Header 和 Payload 进行签名,确保数据未被篡改。
  1. 网关返回 token 给客户端
    • 后端服务将生成的 JWT token 返回给网关。
    • 网关将该 token 作为响应的一部分返回给客户端。客户端需要将这个 token 缓存到本地(如浏览器的 localStorage 或 session 存储)。
  1. 客户端发送业务请求
    • 客户端在后续的业务请求中,将 JWT token 添加到请求头中(通常是 Authorization: Bearer <token> 形式)。
  1. 网关验证 token
    • 网关接收到带有 token 的请求后,使用预先配置的公钥对 token 进行验证。
    • 验证包括检查签名是否有效、exp 字段是否已过期以及 iss 字段是否与预期的签发者一致。
    • 如果验证通过,网关将请求透传给后端服务;否则,返回相应的错误码(如 401 Unauthorized)。
  1. 后端服务处理业务请求
    • 后端服务处理来自网关的请求,并生成相应的业务响应。
  1. 网关返回业务响应给客户端
    • 罗网关将后端服务的响应返回给客户端。

这样做的好处:

  • 无状态性:整个过程中,网关和后端服务都不需要维护用户的会话状态。每次请求都依赖于 JWT token 来进行身份验证。
  • 安全性:JWT token 的签名机制确保了数据的完整性和防篡改性。此外,可以通过设置较短的有效期来减少 token 被盗用的风险。
  • 扩展性:由于不需要维护会话状态,这种认证机制非常适合分布式系统和微服务架构,可以轻松实现水平扩展。

通过上述步骤,网关利用 JWT 实现了高效且安全的认证机制,使得客户端能够安全地访问受保护的 API。

下面我们以阿里开源的免费API网关Higress为例,来看看具体这个JWT怎么配置。

Higress简单介绍:基于Istio与Envoy的多功能云原生API网关

Higress 是一个基于阿里内部 Envoy Gateway 实践沉淀、以开源 Istio + Envoy 为核心构建的云原生 API 网关,它实现了流量网关、微服务网关与安全网关三合一的高集成能力,并深度集成了 Dubbo、Nacos 和 Sentinel 等微服务技术栈。特别值得注意的是,Higress 只需通过简单的配置就能支持大部分的安全认证方式,这种特性不仅极大地简化了部署过程,还提高了运维效率,使得用户能够快速便捷地为他们的应用添加复杂的安全策略而无需编写额外代码。

Higress 做 JWT认证的配置方法详解

JWT认证的详细配置方式

基于Higress实现JWT认证涉及多个步骤,包括全局配置、消费者配置以及特定路由或域名的配置。以下是详细的配置流程和代码示例:

1. Higress server 的全局配置

首先,你需要在Higress中设置全局配置,以决定JWT认证是否对所有请求生效。如果global_auth设置为true,则认证机制将全局生效;如果设置为false,则仅对做了具体配置的域名和路由生效。

配置字段说明:

  • consumers: 配置服务的调用者,用于对请求进行认证。
  • global_auth: 是否全局生效认证机制,默认不配置时仅当没有域名和路由配置时全局生效。
consumers:
  - name: consumer1
    issuer: abcd
    jwks: |
      {
        "keys": [
          {
            "kty": "oct",
            "kid": "123",
            "k": "hM0k3AbXBPpKOGg__Ql2Obcq7s60myWDpbHXzgKUQdYo7YCRp0gUqkCnbGSvZ2rGEl4YFkKqIqW7mTHdj-bcqXpNr-NOznEyMpVPOIlqG_NWVC3dydBgcsIZIdD-MR2AQceEaxriPA_VmiUCwfwL2Bhs6_i7eolXoY11EapLQtutz0BV6ZxQQ4dYUmct--7PLNb4BWJyQeWu0QfbIthnvhYllyl2dgeLTEJT58wzFz5HeNMNz8ohY5K0XaKAe5cepryqoXLhA-V-O1OjSG8lCNdKS09OY6O0fkyweKEtuDfien5tHHSsHXoAxYEHPFcSRL4bFPLZ0orTt1_4zpyfew",
            "alg": "HS256"
          }
        ]
      }
  - name: consumer2
    issuer: abc
    jwks: |
      {
        "keys": [
          {
            "kty": "RSA",
            "e": "AQAB",
            "use": "sig",
            "kid": "123",
            "alg": "RS256",
            "n": "i0B67f1jggT9QJlZ_8QL9QQ56LfurrqDhpuu8BxtVcfxrYmaXaCtqTn7OfCuca7cGHdrJIjq99rz890NmYFZuvhaZ-LMt2iyiSb9LZJAeJmHf7ecguXS_-4x3hvbsrgUDi9tlg7xxbqGYcrco3anmalAFxsbswtu2PAXLtTnUo6aYwZsWA6ksq4FL3-anPNL5oZUgIp3HGyhhLTLdlQcC83jzxbguOim-0OEz-N4fniTYRivK7MlibHKrJfO3xa_6whBS07HW4Ydc37ZN3Rx9Ov3ZyV0idFblU519nUdqp_inXj1eEpynlxH60Ys_aTU2POGZh_25KXGdF_ZC_MSRw"
          }
        ]
      }

global_auth: false
2. 消费者配置

每个消费者需要指定名称、签发者(issuer)和JSON Web Key Set (JWKS)。JWKS包含验证JWT签名所需的公钥或对称密钥。

配置字段说明:

  • name: 消费者的名称。
  • issuer: JWT的签发者,需与payload中的iss字段一致。
  • jwks: JWKS JSON字符串,包含验证JWT签名的公钥或对称密钥。

如上所示,已经配置了两个消费者consumer1consumer2

3. 特定路由或域名的配置

接下来,你需要为特定的路由或域名配置允许访问的消费者列表。这通过allow字段来实现。

配置字段说明:

  • allow: 允许访问的消费者名称列表。

路由级配置示例:

allow:
  - consumer1

域名级配置示例:

allow:
  - consumer2

完整配置示例:

# 路由级配置
route-a:
  allow:
    - consumer1

route-b:
  allow:
    - consumer1

# 域名级配置
*.example:
  allow:
    - consumer2

test:
  allow:
    - consumer2
4. 发布JWT令牌

为了使客户端能够访问受保护的API,你需要生成并分发JWT令牌。可以使用在线工具或本地生成一对JWK,并使用私钥生成JWT令牌。

生成JWK示例(Java代码):

import org.jose4j.jwk.RsaJsonWebKey;
import org.jose4j.jwk.RsaJwkGenerator;

public class GenerateJwtDemo {
    public static void main(String[] args) {
        RsaJsonWebKey rsaJsonWebKey = RsaJwkGenerator.generateJwk(2048);
        final String publicKeyString = rsaJsonWebKey.toJson(JsonWebKey.OutputControlLevel.PUBLIC_ONLY);
        final String privateKeyString = rsaJsonWebKey.toJson(JsonWebKey.OutputControlLevel.INCLUDE_PRIVATE);

        System.out.println("Public Key: " + publicKeyString);
        System.out.println("Private Key: " + privateKeyString);
    }
}

颁发JWT令牌示例(Java代码):

import java.security.PrivateKey;
import org.jose4j.json.JsonUtil;
import org.jose4j.jwk.RsaJsonWebKey;
import org.jose4j.jws.AlgorithmIdentifiers;
import org.jose4j.jws.JsonWebSignature;
import org.jose4j.jwt.JwtClaims;
import org.jose4j.jwt.NumericDate;
import org.jose4j.lang.JoseException;

public class GenerateJwtDemo {
    public static void main(String[] args) throws JoseException {
        String keyId = "uniq_key";
        String privateKeyJson = "{...}"; // 从上一步生成的私钥

        JwtClaims claims = new JwtClaims();
        claims.setGeneratedJwtId();
        claims.setIssuedAtToNow();
        NumericDate date = NumericDate.now();
        date.addSeconds(120 * 60);
        claims.setExpirationTime(date);
        claims.setNotBeforeMinutesInThePast(1);
        claims.setSubject("YOUR_SUBJECT");
        claims.setAudience("YOUR_AUDIENCE");
        claims.setClaim("userId", "1213234");
        claims.setClaim("email", "userEmail@youapp");

        JsonWebSignature jws = new JsonWebSignature();
        jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.RSA_USING_SHA256);
        jws.setKeyIdHeaderValue(keyId);
        jws.setPayload(claims.toJson());
        PrivateKey privateKey = new RsaJsonWebKey(JsonUtil.parseJson(privateKeyJson)).getPrivateKey();

        jws.setKey(privateKey);
        String jwtResult = jws.getCompactSerialization();
        System.out.println("Generate Json Web token, result is " + jwtResult);
    }
}
几个关键概念说明
  • 全局配置:决定了JWT认证是否全局生效,以及配置了哪些消费者。
  • 消费者配置:定义了每个消费者的名称、签发者和JWKS。
  • 特定路由或域名的配置:指定了哪些消费者可以访问特定的路由或域名。
  • 发布JWT令牌:生成并分发JWT令牌,以便客户端可以访问受保护的API。

通过以上步骤,你可以在Higress中成功配置和实现JWT认证。

Higress单机版简易部署指南

单机版的Higress部署适合个人开发者在本地搭建学习环境或用于简易站点。以下是详细的安装步骤:

  1. 本机安装 Docker:首先确保你的计算机上已经安装了Docker。如果还没有,请参考Docker官网指南完成安装:Get Docker | Docker Docs。
  1. 启动Higress
    创建一个工作目录以存放配置文件,并使用以下命令启动Higress容器。该命令会将容器内相关服务映射到宿主机上的指定端口,便于后续访问和管理。
# 创建一个工作目录
mkdir higress

# 启动 higress 容器
docker run -d --rm --name higress-ai -v ./higress:/data \
    -p 8001:8001 -p 8080:8080 -p 8443:8443  \
    higress-registry-hangzhou.cr.aliyuncs/higress/all-in-one:latest

上述命令中各端口的作用如下:

    • 8001 端口:提供Higress UI控制台入口;
    • 8080 端口:作为网关HTTP协议入口;
    • 8443 端口:作为网关HTTPS协议入口。
  1. 登录Higress控制台进行初始设置
    打开浏览器并输入http://127.0.0.1:8001访问Higress控制台。首次访问时需初始化管理员账号,按照页面提示操作即可。初始化完成后,使用刚才设置的用户名密码登录控制台。

通过上述步骤,你就能成功地在本地单机环境中安装并运行起Higress了。此方法非常适合想要快速体验Higress功能或需要构建简单测试环境的用户。请注意,虽然这种方式对于开发和测试非常方便,但在生产环境中建议采用更安全稳定的方式部署Higress,比如通过Kubernetes集群或者阿里云MSE等企业级解决方案。

目录

​编辑

API网关安全性认证的重要作用

API网关常见认证方式解析:

那安全认证是怎么做的 ?

        以JWT为例方式解析网关认证的核心机制

Higress简单介绍:基于Istio与Envoy的多功能云原生API网关

Higress 做 JWT认证的配置方法详解

JWT认证的详细配置方式

1. Higress server 的全局配置

2. 消费者配置

3. 特定路由或域名的配置

4. 发布JWT令牌

几个关键概念说明

Higress单机版简易部署指南


API网关安全性认证的重要作用

为了保护您对外提供服务的 API,避免恶意访问、未授权访问、应用漏洞、黑客攻击等导致的数据损失和资产损失,API网关的认证是十分必要的。基于token的身份验证机制,如JWT(Json Web Token),在这一过程中扮演了关键角色。

API网关常见认证方式解析:

API密钥认证:适合轻量级安全需求场景,易于实现和管理,但安全性较低,易被窃取。适用于内部系统或低敏感数据接口。

OAuth 2.0 : 适用于需要第三方授权访问的场景,提供细粒度权限控制,增强用户隐私保护,但流程较复杂,可能增加开发成本。

JWT(JSON Web Token):适合跨域、分布式环境下的单点登录,携带信息丰富,减轻服务器负担,但需注意令牌过期与刷新机制设计,比较常用的认证方式之一。

OpenID Connect : 基于OAuth 2.0之上添加了身份验证层,特别适合Web应用的身份验证,简化登录流程,提高用户体验,但依赖于可靠的身份提供商。

HMAC认证 : 通过共享密钥生成消息验证码来验证请求合法性,适用于确保数据完整性与来源真实性,但要求双方严格保密共享密钥。

那安全认证是怎么做的 ?

以下是基于 JWT 的网关认证流程的详细步骤:

  1. 客户端发起认证请求
    • 客户端(如浏览器或移动应用)向 API 网关发送一个认证请求,通常包含用户的用户名和密码。请求可能通过 POST 方法发送到特定的认证端点。
  1. 网关转发请求到后端服务
    • 网关接收到认证请求后,直接将请求转发给后端的身份验证服务。这个过程是透明的,客户端并不知道请求被转发了。
  1. 后端服务进行验证并生成 token
    • 后端服务读取请求中的用户名和密码,进行身份验证。如果验证成功,后端服务会使用私钥生成一个 JWT token。
    • 生成的 JWT 包含以下部分:
      • Header:定义了令牌的类型(JWT)和签名算法(例如 HS256)。
      • Payload:包含了用户信息(如用户名、角色等)和其他声明(如过期时间 exp 和颁发时间 iat)。
      • Signature:对 Header 和 Payload 进行签名,确保数据未被篡改。
  1. 网关返回 token 给客户端
    • 后端服务将生成的 JWT token 返回给网关。
    • 网关将该 token 作为响应的一部分返回给客户端。客户端需要将这个 token 缓存到本地(如浏览器的 localStorage 或 session 存储)。
  1. 客户端发送业务请求
    • 客户端在后续的业务请求中,将 JWT token 添加到请求头中(通常是 Authorization: Bearer <token> 形式)。
  1. 网关验证 token
    • 网关接收到带有 token 的请求后,使用预先配置的公钥对 token 进行验证。
    • 验证包括检查签名是否有效、exp 字段是否已过期以及 iss 字段是否与预期的签发者一致。
    • 如果验证通过,网关将请求透传给后端服务;否则,返回相应的错误码(如 401 Unauthorized)。
  1. 后端服务处理业务请求
    • 后端服务处理来自网关的请求,并生成相应的业务响应。
  1. 网关返回业务响应给客户端
    • 罗网关将后端服务的响应返回给客户端。

这样做的好处:

  • 无状态性:整个过程中,网关和后端服务都不需要维护用户的会话状态。每次请求都依赖于 JWT token 来进行身份验证。
  • 安全性:JWT token 的签名机制确保了数据的完整性和防篡改性。此外,可以通过设置较短的有效期来减少 token 被盗用的风险。
  • 扩展性:由于不需要维护会话状态,这种认证机制非常适合分布式系统和微服务架构,可以轻松实现水平扩展。

通过上述步骤,网关利用 JWT 实现了高效且安全的认证机制,使得客户端能够安全地访问受保护的 API。

下面我们以阿里开源的免费API网关Higress为例,来看看具体这个JWT怎么配置。

Higress简单介绍:基于Istio与Envoy的多功能云原生API网关

Higress 是一个基于阿里内部 Envoy Gateway 实践沉淀、以开源 Istio + Envoy 为核心构建的云原生 API 网关,它实现了流量网关、微服务网关与安全网关三合一的高集成能力,并深度集成了 Dubbo、Nacos 和 Sentinel 等微服务技术栈。特别值得注意的是,Higress 只需通过简单的配置就能支持大部分的安全认证方式,这种特性不仅极大地简化了部署过程,还提高了运维效率,使得用户能够快速便捷地为他们的应用添加复杂的安全策略而无需编写额外代码。

Higress 做 JWT认证的配置方法详解

JWT认证的详细配置方式

基于Higress实现JWT认证涉及多个步骤,包括全局配置、消费者配置以及特定路由或域名的配置。以下是详细的配置流程和代码示例:

1. Higress server 的全局配置

首先,你需要在Higress中设置全局配置,以决定JWT认证是否对所有请求生效。如果global_auth设置为true,则认证机制将全局生效;如果设置为false,则仅对做了具体配置的域名和路由生效。

配置字段说明:

  • consumers: 配置服务的调用者,用于对请求进行认证。
  • global_auth: 是否全局生效认证机制,默认不配置时仅当没有域名和路由配置时全局生效。
consumers:
  - name: consumer1
    issuer: abcd
    jwks: |
      {
        "keys": [
          {
            "kty": "oct",
            "kid": "123",
            "k": "hM0k3AbXBPpKOGg__Ql2Obcq7s60myWDpbHXzgKUQdYo7YCRp0gUqkCnbGSvZ2rGEl4YFkKqIqW7mTHdj-bcqXpNr-NOznEyMpVPOIlqG_NWVC3dydBgcsIZIdD-MR2AQceEaxriPA_VmiUCwfwL2Bhs6_i7eolXoY11EapLQtutz0BV6ZxQQ4dYUmct--7PLNb4BWJyQeWu0QfbIthnvhYllyl2dgeLTEJT58wzFz5HeNMNz8ohY5K0XaKAe5cepryqoXLhA-V-O1OjSG8lCNdKS09OY6O0fkyweKEtuDfien5tHHSsHXoAxYEHPFcSRL4bFPLZ0orTt1_4zpyfew",
            "alg": "HS256"
          }
        ]
      }
  - name: consumer2
    issuer: abc
    jwks: |
      {
        "keys": [
          {
            "kty": "RSA",
            "e": "AQAB",
            "use": "sig",
            "kid": "123",
            "alg": "RS256",
            "n": "i0B67f1jggT9QJlZ_8QL9QQ56LfurrqDhpuu8BxtVcfxrYmaXaCtqTn7OfCuca7cGHdrJIjq99rz890NmYFZuvhaZ-LMt2iyiSb9LZJAeJmHf7ecguXS_-4x3hvbsrgUDi9tlg7xxbqGYcrco3anmalAFxsbswtu2PAXLtTnUo6aYwZsWA6ksq4FL3-anPNL5oZUgIp3HGyhhLTLdlQcC83jzxbguOim-0OEz-N4fniTYRivK7MlibHKrJfO3xa_6whBS07HW4Ydc37ZN3Rx9Ov3ZyV0idFblU519nUdqp_inXj1eEpynlxH60Ys_aTU2POGZh_25KXGdF_ZC_MSRw"
          }
        ]
      }

global_auth: false
2. 消费者配置

每个消费者需要指定名称、签发者(issuer)和JSON Web Key Set (JWKS)。JWKS包含验证JWT签名所需的公钥或对称密钥。

配置字段说明:

  • name: 消费者的名称。
  • issuer: JWT的签发者,需与payload中的iss字段一致。
  • jwks: JWKS JSON字符串,包含验证JWT签名的公钥或对称密钥。

如上所示,已经配置了两个消费者consumer1consumer2

3. 特定路由或域名的配置

接下来,你需要为特定的路由或域名配置允许访问的消费者列表。这通过allow字段来实现。

配置字段说明:

  • allow: 允许访问的消费者名称列表。

路由级配置示例:

allow:
  - consumer1

域名级配置示例:

allow:
  - consumer2

完整配置示例:

# 路由级配置
route-a:
  allow:
    - consumer1

route-b:
  allow:
    - consumer1

# 域名级配置
*.example:
  allow:
    - consumer2

test:
  allow:
    - consumer2
4. 发布JWT令牌

为了使客户端能够访问受保护的API,你需要生成并分发JWT令牌。可以使用在线工具或本地生成一对JWK,并使用私钥生成JWT令牌。

生成JWK示例(Java代码):

import org.jose4j.jwk.RsaJsonWebKey;
import org.jose4j.jwk.RsaJwkGenerator;

public class GenerateJwtDemo {
    public static void main(String[] args) {
        RsaJsonWebKey rsaJsonWebKey = RsaJwkGenerator.generateJwk(2048);
        final String publicKeyString = rsaJsonWebKey.toJson(JsonWebKey.OutputControlLevel.PUBLIC_ONLY);
        final String privateKeyString = rsaJsonWebKey.toJson(JsonWebKey.OutputControlLevel.INCLUDE_PRIVATE);

        System.out.println("Public Key: " + publicKeyString);
        System.out.println("Private Key: " + privateKeyString);
    }
}

颁发JWT令牌示例(Java代码):

import java.security.PrivateKey;
import org.jose4j.json.JsonUtil;
import org.jose4j.jwk.RsaJsonWebKey;
import org.jose4j.jws.AlgorithmIdentifiers;
import org.jose4j.jws.JsonWebSignature;
import org.jose4j.jwt.JwtClaims;
import org.jose4j.jwt.NumericDate;
import org.jose4j.lang.JoseException;

public class GenerateJwtDemo {
    public static void main(String[] args) throws JoseException {
        String keyId = "uniq_key";
        String privateKeyJson = "{...}"; // 从上一步生成的私钥

        JwtClaims claims = new JwtClaims();
        claims.setGeneratedJwtId();
        claims.setIssuedAtToNow();
        NumericDate date = NumericDate.now();
        date.addSeconds(120 * 60);
        claims.setExpirationTime(date);
        claims.setNotBeforeMinutesInThePast(1);
        claims.setSubject("YOUR_SUBJECT");
        claims.setAudience("YOUR_AUDIENCE");
        claims.setClaim("userId", "1213234");
        claims.setClaim("email", "userEmail@youapp");

        JsonWebSignature jws = new JsonWebSignature();
        jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.RSA_USING_SHA256);
        jws.setKeyIdHeaderValue(keyId);
        jws.setPayload(claims.toJson());
        PrivateKey privateKey = new RsaJsonWebKey(JsonUtil.parseJson(privateKeyJson)).getPrivateKey();

        jws.setKey(privateKey);
        String jwtResult = jws.getCompactSerialization();
        System.out.println("Generate Json Web token, result is " + jwtResult);
    }
}
几个关键概念说明
  • 全局配置:决定了JWT认证是否全局生效,以及配置了哪些消费者。
  • 消费者配置:定义了每个消费者的名称、签发者和JWKS。
  • 特定路由或域名的配置:指定了哪些消费者可以访问特定的路由或域名。
  • 发布JWT令牌:生成并分发JWT令牌,以便客户端可以访问受保护的API。

通过以上步骤,你可以在Higress中成功配置和实现JWT认证。

Higress单机版简易部署指南

单机版的Higress部署适合个人开发者在本地搭建学习环境或用于简易站点。以下是详细的安装步骤:

  1. 本机安装 Docker:首先确保你的计算机上已经安装了Docker。如果还没有,请参考Docker官网指南完成安装:Get Docker | Docker Docs。
  1. 启动Higress
    创建一个工作目录以存放配置文件,并使用以下命令启动Higress容器。该命令会将容器内相关服务映射到宿主机上的指定端口,便于后续访问和管理。
# 创建一个工作目录
mkdir higress

# 启动 higress 容器
docker run -d --rm --name higress-ai -v ./higress:/data \
    -p 8001:8001 -p 8080:8080 -p 8443:8443  \
    higress-registry-hangzhou.cr.aliyuncs/higress/all-in-one:latest

上述命令中各端口的作用如下:

    • 8001 端口:提供Higress UI控制台入口;
    • 8080 端口:作为网关HTTP协议入口;
    • 8443 端口:作为网关HTTPS协议入口。
  1. 登录Higress控制台进行初始设置
    打开浏览器并输入http://127.0.0.1:8001访问Higress控制台。首次访问时需初始化管理员账号,按照页面提示操作即可。初始化完成后,使用刚才设置的用户名密码登录控制台。

通过上述步骤,你就能成功地在本地单机环境中安装并运行起Higress了。此方法非常适合想要快速体验Higress功能或需要构建简单测试环境的用户。请注意,虽然这种方式对于开发和测试非常方便,但在生产环境中建议采用更安全稳定的方式部署Higress,比如通过Kubernetes集群或者阿里云MSE等企业级解决方案。

发布评论

评论列表 (0)

  1. 暂无评论