如果我的网关已经得到保护,为啥我必须保护我的资源服务?

Posted

技术标签:

【中文标题】如果我的网关已经得到保护,为啥我必须保护我的资源服务?【英文标题】:Why do i have to secure my Resource-Service if my Gateway is already secured?如果我的网关已经得到保护,为什么我必须保护我的资源服务? 【发布时间】:2021-04-23 00:40:55 【问题描述】:

我正在阅读有关如何使用令牌中继模式保护我的 Spring Cloud Gateway 的文章。

https://spring.io/blog/2019/08/16/securing-services-with-spring-cloud-gateway

见https://static.spring.io/blog/bwilcock/20190801/demo.png

用户请求资源后,网关将他重定向到身份提供者的登录页面以进行身份​​验证。 成功后,身份提供者会将您重定向回原始请求的资源(网关),包括身份提供者提供的访问令牌。

所以现在网关是安全的。为什么资源服务器必须再次针对身份提供者验证访问令牌?网关不只是验证它吗? 或者不是,网关只是在那里将访问令牌中继到资源服务器,以便他可以验证它?

【问题讨论】:

【参考方案1】:

基本上从不信任 JWT。

最后,资源服务器需要知道它在哪里可以找到公钥来验证它所获得的访问令牌的真实性。 UAA 提供了一个端点,资源服务器和网关在运行时都依赖该端点来执行此检查。端点在 application.yml 中为每个应用程序配置

资源服务器永远不能 100% 确定访问令牌是由身份提供者创建的,甚至是来自网关的。所以至少,你应该确保访问令牌是由身份提供者使用公钥签名的,由配置的端点公开。

【讨论】:

以上是关于如果我的网关已经得到保护,为啥我必须保护我的资源服务?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的手机上滑控制中心出不来了

为啥我的覆盖保护函数 createChildren 被忽略?

如何保护我的jar资源不被提取?

Spring oauth2 指定受保护和不受保护的资源

JSF 2 上的 Https,用于受保护的资源和登录

C++:为啥我的 DerivedClass 的构造函数无法访问 BaseClass 的受保护字段?