问题标签 [spring-security-oauth2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3632 浏览

spring-security - 如何覆盖 Spring Boot 默认的 OAuthTokenEndpoint

我一直致力于使用 Spring Security Oauth 保护 Restful 服务。我一直在努力尝试使用 SSL 保护 /oauth/token 端点并且只允许 POST 调用。

我正在使用 @EnableAuthorizationServer 声明

用于在当前应用程序上下文中启用授权服务器(即 AuthorizationEndpoint 和 TokenEndpoint)的便利注释,该上下文必须是 DispatcherServlet 上下文。可以使用 AuthorizationServerConfigurer 类型的 @Beans 自定义服务器的许多功能(例如,通过扩展 AuthorizationServerConfigurerAdapter)。用户负责使用普通 Spring Security 功能(@EnableWebSecurity 等)保护授权端点(/oauth/authorize),但令牌端点(/oauth/token)将使用客户端凭据上的 HTTP 基本身份验证自动保护。必须通过一个或多个 AuthorizationServerConfigurer 提供 ClientDetailsS​​ervice 来注册客户端。

这很好,但我似乎无法覆盖令牌端点部分或强制执行仅 POST 调用,就像使用 intercept-url xml 语法一样

我保护了我的资源服务器

使用 requiresChannel 的授权服务器 TokenEndpoint 安全性是否有类似的构建器语法?

0 投票
0 回答
424 浏览

spring - FB登录的Spring Oauth密码授予

我有一个带有Spring OAuth2Angularjs客户端的 Spring 后端。

简单的用户名/密码密码授予 是没有道理的。但是当我希望用户也能够使用另一个 oauth 提供程序(例如 FB)登录时会发生什么。

我想象以下流程:

  1. 首先从 Angular 客户端检索 FB 访问令牌。
  2. 以某种方式将该令牌作为密码授予请求发布到 spring 端点
  3. 使用来自 FB 的令牌从后端获取 userId。
  4. 查找具有相同 fb userId 的用户。如果找到为用户创建 securityContext。

如果我可以稍微调整一下 Spring Oauth,我认为这应该是可能的。我应该寻找哪些类来扩展和配置?

0 投票
0 回答
88 浏览

spring-security - Spring OAUTH2 用于两种不同类型的身份验证

我们正在使用 OAUTH2 令牌机制来保护 REST Web 服务。是否有可能在单个令牌生成器中配置两种可能的身份验证机制并对其进行验证。

  1. 身份验证(基于用户 ID 和密码)。
  2. 身份验证(基于商家 ID 和密码)。

这样它就可以用来生成有效的令牌和被认证的用户。需要这种类型的机制来保护基于移动的休息服务和使用 Web 服务的 Web 应用程序。如果我错了,请纠正。

0 投票
2 回答
9877 浏览

spring-security - 用于 Google 登录的 Spring Security OAuth2 Java 配置

我正在将工作 XML 配置迁移到 Spring Security OAuth2 的 Java 配置,并使用 Google 作为 OAuth 提供程序。

这就是我的 java 配置的样子:

请注意,我已禁用 CSRF。从我的登录页面,用户会被重定向到 Google 登录页面

问题:-

  1. Google 权限页面只要求“具有离线访问权限”。缺少“电子邮件/个人资料”访问请求。

等效的“范围”属性 XML 配置:-

正确地要求电子邮件和个人资料权限。为什么?

  1. 继续使用“具有脱机访问权限”会导致此异常:-

在尝试使用此代码块获取用户配置文件时:

Spring RestTemplate 在日志中显示了这一点:

与 XML 配置一起使用时,同样的代码也可以工作。

更新 1

我能够通过将范围更改为“ https://www.googleapis.com/auth/plus.profile.emails.read ”和“ https://www.googleapis.com/auth/ ”来解决“离线访问”问题加上.login '。

尝试获取用户个人资料时仍然出现错误的请求错误

请在此处找到问题的源代码 - git clone https://kumarsambhavjain@bitbucket.org/kumarsambhavjain/spring-oauth2-login.git

0 投票
4 回答
12421 浏览

java - 带有自定义 TokenGranter 的 Spring Security OAuth2 版本 2.0.+

在以前版本的 OAuth2 中,可以通过将自定义令牌授予者添加到<authorization-server>元素中的 xml 配置中来添加它。

我想知道如何使用 AuthorizationServerConfigurerAdapter 使用 Java Config 扩展授权服务器,而不会丢失包含隐式、客户端凭据、刷新令牌和授权代码授予类型的默认配置。

第一次尝试是使用 @Component 创建 TokenGranter:

这会导致依赖解析异常,因为构造 Granter 所需的 tokenServices 无法自动装配。

第二次尝试是使用配置方法

使用它,将不会注册默认授权类型。

我还尝试了第二个较低阶的配置,但没有成功。我还能做些什么来添加我的自定义授权类型?

0 投票
0 回答
1003 浏览

spring - Spring oauth 的 ResourceServer 最小配置

我正在开发一个使用 Spring Security OAuth 的应用程序,但只有 ResourceServer组件。AuthorizationServer 是另一个产品,与 Spring OAuth 无关。正如Spring 文档所说,要配置 ResourceServer,我需要使用 EnableResourceServer 注释并使用 ResourceServerConfigurer 提供配置。因此,对于自定义 oauth sever,我只需要提供自定义 ResourceServerTokenServices,它可以通过访问令牌加载身份验证信息。

Spring java 文档说可以使用 ResourceServerConfigurerAdapter 类进行配置(此信息可以在 java 文档中找到):提供 http config + ResourceServerTokenServices impl。

我尝试使用此配置:

但这种配置不起作用。当我运行我的应用程序时,我得到一个异常

如果我在上下文中明确定义 AuthenticationManager

并将其设置在adaper中,然后一切都很好。

但这对我来说似乎很奇怪,因为如果用户没有提供 ResourceServerSecurityConfigurer 已经有代码来创建 authenticationManager 。

所以问题是:我的初始配置有什么问题?如果上下文无法正常启动,Configurer 中的 OAuthAuthenticationManager 创建代码的目的是什么?

0 投票
0 回答
1101 浏览

spring - Spring OAuth2RestTemplate 在 HttpMessageConverterExtractor.extractData() 调用之前关闭响应

在 RestTemplate 类的 doExecute() 中有以下代码:

使用 OAuth2RestTemplate 时,ResponseErrorHandler 设置为 OAuth2ErrorHandler。在我的特定用例中,请求(在获得 oauth 令牌之后)返回一个 400 错误,我想在我的代码中处理该错误。因此,我通过传入我的自定义处理程序来创建 OAuth2ErrorHandler,该处理程序覆盖 DefaultResponseHandler.handleError() 什么都不做。这将允许调用 RestTemplate.postForEntity() 的代码取回 ResponseEntity,以便我可以对其进行进一步评估。

现在我看到的问题是,在上面的代码中,在 handleResponseError 中,它进入了 OAuth2ErrorHandler.handleError() 并且在该代码中,有一条关于:

这在 OAuth2ErrorHandler 调用委托 errorHandler 时效果很好,因为该 errorHandler 然后也可以读取响应。不幸的是,当该方法返回 bufferedResponse 不再可用并且调用 responseExtractor.extractData(response) 时,输入流已关闭。

这是我看到的异常:

有没有办法解决这个问题?对于我的用例,我想继续使用 OAuth2RestTemplate 来处理我的 OAuth 握手以及能够让我自己的代码逻辑针对 ResponseEntity 运行。

0 投票
1 回答
929 浏览

java - Spring Oauth 异常消息中的国际化

是否可以本地化 Spring Oauth2 错误消息?尤其是 InvalidGrantException 和 UsernameNotFoundException 的错误消息。

0 投票
1 回答
1275 浏览

spring-security-oauth2 - 并发请求上的spring oauth2空指针

我们有一个使用 spring oauth2(版本 1.0.4)的 oAuth 服务器设置。在尝试检索客户端凭据授予类型的访问令牌时,当发出多个并发请求时,我们会收到一个空指针错误。

包括堆栈跟踪的片段:

请求是这样的:

同样,当发出单个请求(或发出少量并发请求)时,不会发生此问题。某种比赛条件?

0 投票
1 回答
1558 浏览

spring-security - OAuth2 和基于会话的身份验证可以在 Spring Security 中共存吗?

我有一个 Web 应用程序,它使用 Spring Security 进行基于会话的登录,使用用户名和密码身份验证以及以下安全应用程序上下文 xml。

现在我想为移动应用程序公开我的 Web 服务,所以我希望实现 OAuth2。我已经阅读了 github 上提供的示例。

我想知道这两个安全流如何共存,因为两个流的拦截 url 模式相同?