2016-06-07 106 views
2

我有两个弹簧引导进程。我在这两个平台上都启用了Spring Security,并且我使用了Spring Security OAuth2 SSO设置。我还使用Eureka和Zuul允许进入Boot1的呼叫在Boot2中调用服务。 UI正在将Angular与REST调用一起使用到服务中,并且使用的令牌是Json Web令牌。其余的调用需要JSESSIONID(Spring引导,Spring安全,OAuth2,Zuul)

这一切似乎工作,当然在用户界面。所有请求都使用Authorization头(包含JWT)和服务中的spring安全筛选器成功解析JWT并从中提取安全性上下文。作为Spring Web处理的一部分,它为客户端的cookie添加了JSESSIONID值。

最近,我在Boot1上只有Spring安全性。当将休息服务调用到Boot1中(最终使用Zuul将请求转发到Boot2)时,剩余客户机中所需的所有内容都包括授权标头和JWT,并且一切正常。

但是,我最近在Boot2中添加了Spring Security(使用@EnableResourceServer批注),现在除非我拥有Authorization标头以及包含JSESSIONID值的Cookie标头,否则其余调用将失败。调用不会失败,但会返回空值。

我已经启用了日志记录到Spring Security,并且它在Boot1中正确验证了所有内容。它将进入相同的ZuulFilter。但Boot2上没有任何活动。

Zuul中是否有某些东西需要定义JSESSIONID值才能转发请求?或者是在Boot2中,由于引入了Spring Security过滤器,它期望JSESSIONID标头值?

---更新---

我已经步入boot1。从我所看到的,OAuth2TokenRelayFilter中的代码抛出异常。具体而言,getAccessToken方法正在调用引发UserRedirectRequiredException的restTemplate.getAccessToken()。getValue(第90行,版本1.1.0-RELEASE)。

所以,虽然TokenRelayFilter有一个令牌,但它试图刷新它。当它收到一个异常时,它会抛出一个BadCredentialsException而不是使用已经定义的内容。

---更新2 ---

请辞OAuth2RestOperationsConfiguration断点,使其余的通话,而JSESSIONID总是要创建一个新的DefaultOAuth2ClientContext结束了,因为它试图创建会话范围豆。使用JSESSIONID,它使用持久的DefaultOAuth2ClientContext,它将拥有上下文。

那么,构建DefaultOAuth2ClientContext时是否有可能查看请求是否包含令牌并使用它?或者类似的东西?我们正试图转向无国界的服务,这似乎是一个障碍。

+0

您的Angular UI如何获得您的Oauth2服务器发布的JWT令牌,以及它如何在使用Angularjs $ http时呈现给Boot2应用程序?我提出了一个相关教程项目的问题。 https://github.com/spring-guides/tut-spring-security-and-angular-js/issues/114 –

+0

我想要实现的功能 - UI App - 一个@ EnableSSO应用,一旦通过身份验证就可以完成$ http调用启动[n]应用程序是@ EnableResourceServer - 使用JWT令牌进行身份验证。不使用zuul代理(一旦我处理了交叉来源) –

+0

客户端UI在登录后调用Spring的/用户端点来获取有关用户的详细信息。其中包括智威汤逊。对Rest端点的所有后续调用均将JWT作为HTTP标头“授权”的一部分。对于我们而言,我们希望使用Zuul代理,因为它可以减少应用程序上的攻击向量。但是,既然我们在这两个进程上都具有安全性,那么无论我们最终在javascript中调用哪个资源服务器,它都可以工作。 – EdH

回答

0

事实证明,这是系统不同部分使用的客户端ID值的问题。

查看OAuth2TokenRelayFilter,如果为资源服务器(boot1)定义的客户端ID与被请求提供的令牌中包含的令牌的一部分相匹配,它将尝试刷新令牌。在我的情况下,这是真的:令牌是使用相同的客户端ID来定义的。

这真的是不正确的。当我更新我的休息客户端以使用令牌时,但在请求令牌时使用不同的客户端ID时,则请求按预期正确转发,而不需要jsessionid。这正是我想要的。

我怀疑这是由于我的系统组件错误地使用了客户端ID值而导致的。

相关问题