在WSO2中对JWT进行验证

后端开发 2026-07-09

我们正在尝试对外部JWT令牌进行校验。根据文档,我们可以通过一种简单的方法,通过验证来自令牌提供方的JWKS端点的签名密钥来实现。 https://apim.docs.wso2.com/en/4.6.0/api-security/key-management/tokens/jwt-tokens/#jwt-claim-transformation:\~:text=%5B%5Bapim.jwt.issuer%5D%5D%0Aname%20%3D%20%22%3Cissuer%20value%20of%20jwt%3E%22%0A%5Bapim.jwt.issuer.jwks%5D%0Aurl%20%3D%20%22%3Cjwks%20endpoint%20of%20oauth%20provider%3E%22

[[apim.jwt.issuer]]
name = "<issuer value of jwt>"
[apim.jwt.issuer.jwks]
url = "<jwks endpoint of oauth provider>"

但是在配置了这个方案之后,网关似乎仍然在接受请求,即使令牌缺失。我是不是对这个方案理解有误,还是需要额外的配置?

解决方案

你的deployment.tooml里的配置其实是正确的,但它只是告诉网关如何通过JWKS端点来验证令牌……并不会强制你的API实际上要一个令牌。

如果没有任何令牌的请求也能通过,我认为是在API端禁用了安全性。

你应该在API发布端检查这个设置:

  • 转到你的API -> 运行时配置(或根据版本不同的安全设置),确保勾选OAuth2/JWT。
  • 然后切换到“Resources”标签,检查你的具体端点……如果安全开关被设为 “None” 或已禁用,网关将不检查授权头就放行所有请求。

别忘了保存并创建一个新版本以将修改部署到网关上!希望这对你有帮助。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章