我尝试发送包含
的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不应该受到指责。还有什么导致身份验证失败?
答案 0 :(得分:1)
我看错了地方。
对于每个人都磕磕绊绊,我会描述发生的事情:
我的Zuul路线设置为
http://<host>/<securityContext>/auth/token
虽然应该设置为
http://<host>/<securityContext>/oauth/token
(注意额外的“o”)
Spring Security Server的邪恶反应不是用'404'(“未找到”)回应错误的路由,而是用'401'(“未授权”)。这使我认为认证标题(或其他一些标题)存在问题。
截至目前,我不知道为什么安全管理服务器会这样做。在我看来,/auth/token
下实际上有一个端点。