使用 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 保护,因此客户端必须通过 apikey
、token
或 credentials
才能访问资源。到现在为止还挺好。但是现在,我也想保护后端的端点。后端只接受来自 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进行身份验证,并获取SAML2断言消息
WSO2 Identity Server 4.5 上的单次注销