OAuth2客户端UI混乱

时间:2016-03-11 13:30:58

标签: spring oauth spring-security

所以,我认为我已经迷失了大量的方法,因为我对这一切都是新手,但是,我有一个独立的Auth服务器,使用基本的auth进行用户凭据输入。

然后我有一个非常简单的客户端应用程序,该应用程序成功重定向到/oauth/authorize,然后作为流程的一部分对/oauth/token/oauth/check_token进行后续调用。所以我回来了访问令牌,它看起来不错。

问题是我无法访问UI应用程序中的任何资源,因为它说我没有经过身份验证。我添加了这个以检查控制器中的状态:

SecurityContext ctx = SecurityContextHolder.getContext();

上下文是说我没有经过身份验证(但它确实包含OAuth2Authentication对象,其中包含访问令牌的详细信息等)。

如果我再调试一下,我可以在OAuth2AuthenticationProcessingFilter中看到,它试图通过授权标题从请求中获取持有者令牌(BearerTokenExtractor),但无法找到它;我应该在auth服务器验证后明确设置吗?

我错过了什么?

非常感谢

3 个答案:

答案 0 :(得分:0)

这意味着您没有将从OAuth2服务器收到的令牌传递到资源服务器的请求标头中;这是资源服务器可以检查您是否获得授权的机制,然后设置适当的安全上下文。

您应该为资源服务器的任何请求设置以下标头:

Authorization: Bearer {your token}

答案 1 :(得分:0)

丹尼尔,非常感谢你。

我之后有2个问题/问题。

首先,要访问我已标记为需要进行身份验证的同一(客户端)应用中的资源,我才会“拒绝访问”#39;我可以在Chrome中的dev工具中看到JSESSIONID和XSRF令牌。

其次,要访问远程资源,我是否需要使用OAuth2RestTemplate,从会话中获取承载?

非常感谢

马丁

答案 2 :(得分:0)

为了解决这个问题,我解决了两个问题。

  1. 远程资源;我使用Zuul来代理我为我附加OAuth令牌的请求。
  2. 当地受保护的资源;重写http限制