Http请求在通过Zuul后未经过身份验证

时间:2017-04-10 15:15:18

标签: spring spring-boot spring-security

我尝试发送包含

的Javascript XHR请求
'Authorization: Basic base64encodedCredentials'

通过Zuul代理头。代理的背后是我的Spring Security Server,它暴露了一个由Basic HTTP身份验证保护的端点。我的服务器对401做出反应(“未经授权”)。如果我通过curl发送相同的请求,一切都很好。

使用网络监控工具,我观察到Zuul发送的标头如下所示:

'authorization: Basic base64encodedCredentials'(注意'授权'中的小写'a')

在我查看Spring Security中BasicAuthenticationFilter的源代码后,我怀疑小写'a'是我的服务器未对我的XHR请求进行身份验证的原因。

这是Zuul的错误吗?你觉得怎么样?

编辑:http标头名称实际上不区分大小写。

所以Zuul不应该受到指责。还有什么导致身份验证失败?

1 个答案:

答案 0 :(得分:1)

我看错了地方。

对于每个人都磕磕绊绊,我会描述发生的事情:

我的Zuul路线设置为

http://<host>/<securityContext>/auth/token  

虽然应该设置为

http://<host>/<securityContext>/oauth/token(注意额外的“o”)

Spring Security Server的邪恶反应不是用'404'(“未找到”)回应错误的路由,而是用'401'(“未授权”)。这使我认为认证标题(或其他一些标题)存在问题。

截至目前,我不知道为什么安全管理服务器会这样做。在我看来,/auth/token下实际上有一个端点。