在开始前,需要让keycloak实现jwt认证,请查看http://www.emptyrealm.com/archives/176

  1. 在阿里云创建一个公开的获取token接口,该接口是让用户通过用户名和密码获取到token
    请求方式为POSt
    入参请求模式设置为透传
    后端url设置为keycloak认证url即可
  2. 创建JWT插件(https://help.aliyun.com/zh/api-gateway/user-guide/jwt-authentication?spm=a2c4g.11186623.0.0.1ded6bbbRy7D8s),主要是jwk的参数的获取,先获取token,然后将token放在https://jwt.io/进行解密
    里面就有我们需要的信息了。以下是简单模板

    ---
    parameter: Authorization # 从指定的参数中获取JWT, 对应API的参数
    parameterLocation: header # API为映射模式时可选, API为透传模式下必填, 用于指定JWT的读取位置, 仅支持query,header
    preventJtiReplay: false # 是否开启针对jti的防重放检查, 默认: false
    #
    # Json Web KeyPublic Key
    jwk:
    kty: RSA
    e: AQAB
    use: sig
    kid: ataIExRUqCQj7wmAjpoqvBwPtYubXE_VSr3P6DgP1Rs # 在只配置一个JWK时,kid是可选的,但如果中JWT包含了kid,网关会校验kid的一致性
    alg: RS256
    n: qp5KAM8Rjyl5Pn84PSE83d5tmn_r9xqJ7QAUVUK7TXhyEj1x7VU31x0teEtPlUGRxjgb8IEhiBWZNAN7QSE7S3hg5ul7OmMbeNpEACTtQiTKcSFcmA2y_UgmU0w1rE9dxIJLTdcbU2Q8n0qR5y6eY2BsCwXAj7qhXZ9IyNXersLiPuz_q8ihFXCUykpNbZqpX9hby3ZiHpHppzYQPww4b9YXnCiEb7l8IKuT2tgYXnpT64GXaGP1KWReB4zGzw8B_zNvUAM5StjNNTPTQ-w40LTAT2KbIRkeCMdlGoGE-x2c6Yx5IsyhcBfof2DOTzd3K5GrPll3CBRrApB0LIS-ew

  3. 创建一个/test-auth接口接口进行测试,然后将JWT插件绑定到这个接口,先通过token接口获取access_token,然后在请求/test-auth时放在header上即可,注意是Bearer token类型
    PS: 插件返回内容可以在阿里云API网关日志上查到