【问题标题】:OAuth2 client UI confusionOAuth2 客户端 UI 混乱
【发布时间】:2016-06-26 18:39:34
【问题描述】:

所以,鉴于我对所有这些都是新手,我想我迷失在大量方法中,但是,我有一个独立的身份验证服务器,使用基本身份验证来输入用户凭据。

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

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

SecurityContext ctx = SecurityContextHolder.getContext();

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

如果我再调试一些,我可以在 OAuth2AuthenticationProcessingFilter 中看到它试图通过 Authorization 标头从请求(BearerTokenExtractor)中获取不记名令牌但找不到它;我应该在身份验证服务器进行身份验证后明确设置吗?

我错过了什么?

非常感谢

【问题讨论】:

    标签: spring oauth spring-security


    【解决方案1】:

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

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

    Authorization: Bearer {your token}
    

    【讨论】:

      【解决方案2】:

      丹尼尔,非常感谢。

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

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

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

      非常感谢

      马丁

      【讨论】:

        【解决方案3】:

        为了结束这一切,我修复了这两个问题。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-03
          • 2013-04-10
          • 1970-01-01
          • 2012-10-22
          • 1970-01-01
          • 2013-06-20
          相关资源
          最近更新 更多