使用 WSO2 Identity Server 和 WSO2 API Manager 保护后端

Posted

技术标签:

【中文标题】使用 WSO2 Identity Server 和 WSO2 API Manager 保护后端【英文标题】:Securing backend with WSO2 Identity Server and WSO2 API Manager 【发布时间】:2020-10-27 11:34:23 【问题描述】:

我有一个通过 WSO2 API Manager 公开的 API,它受 OAuth2 保护,因此客户端必须通过 apikeytokencredentials 才能访问资源。到现在为止还挺好。但是现在,我也想保护后端的端点。后端只接受来自 API Manager(IP 安全)的调用,但它是开放的,我的意思是,如果可以访问 APIM 主机的人进行调用,它将接受,因为它们之间没有身份验证。

我想使用 Identity Server 来保护后端,但根据 APIM documentation,支持的端点安全性是 BASIC 或 DIGEST。

在 SpringBoot 后端实现 BASIC/Digest 身份验证并使用 WSO2 Identity Server 作为用户注册表的最佳方法是什么?这样我就可以将每个安全细节集中到一个解决方案中。

提前致谢。

【问题讨论】:

【参考方案1】:

如果您使用基本身份验证或任何此类身份验证,您的后端可能需要对 WSO2 执行另一个 API 调用来验证该令牌。相反,您可以将自包含的 JWT 令牌从 API 管理器传递到后端。这样后端就可以验证 JWT 是由它自己使用证书的 API 管理器颁发的,而不依赖于其他任何东西。

通过这种方式,您可以验证调用是否是由 API 管理器进行的,另外还有来自 JWT 内容的最终用户。

文档:https://apim.docs.wso2.com/en/latest/learn/api-gateway/passing-end-user-attributes-to-the-backend/passing-enduser-attributes-to-the-backend-using-jwt/?fbclid=IwAR1JT9DLOclmA-xw0Ev9C2Xrje5EDGrDBnmMkfDKMcbxTlCLf0swSPucMfA

【讨论】:

是的,我做到了,但在这种情况下,我需要验证这个令牌。仅针对公钥进行验证就足以确保此令牌的来源? JWT 签名验证确保内容由 API Manager 生成,并且内容不会在两者之间更改。 (假设你的 APIM 到 BE 的连接是 HTTPS,这样 JWT 就不能在另一个请求中被复制和伪造) 太棒了!谢谢!

以上是关于使用 WSO2 Identity Server 和 WSO2 API Manager 保护后端的主要内容,如果未能解决你的问题,请参考以下文章

WSO2 Identity Server 和 WSO2 API Manager 集成 - 错误:传输错误 202:绑定失败:地址已在使用中

比较WSO2 Identity Server和SCIM

在没有浏览器的情况下对WSO2 Identity Server进行身份验证,并获取SAML2断言消息

WSO2 Identity Server 4.5 上的单次注销

如何在WSO2 Identity Server 5.3.0中从CSV批量导入批量密码过期时间

Identity Server不验证SAML LogoutRequest签名