问题标签 [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 回答
201 浏览

java - Spring Security OAuth Maven 构建失败

我删除了我的~/.m2/repository并做了一个从https://github.com/spring-projects/spring-security-oauth克隆的mvn clean install -P bootstrap提交(主) 。它无法通过javadoc“阶段”并呕吐。我在 Linux 和 Windows 中使用了 JDK 1.7.0_65。我可以用我以前的旧版本编译项目。#371aad08ac93efa2~/.m2/repository

我在这里想念什么?谢谢

0 投票
1 回答
1098 浏览

java - 在没有 XML 配置的情况下实现 Spring Security Oauth

我正在尝试构建一个基本的 REST 服务,该服务受 Spring Security 保护,具有 OAuth 2.0 身份验证和授权。

我试图限制所涉及的元素,因此我没有复制粘贴依赖于 Spring Beans、Spring MVC 等的 Spring Security Oath XML 配置,而是直接使用 Spring Security Oauth 类。

我在尝试从 /oauth/token 获取访问令牌时遇到了麻烦。我可能缺少一些基本的东西,但是 Spring Security 和 Spring Security Oauth 都很难让我理解,而且我似乎找不到一个不需要使用额外框架的示例或教程。

谁能看到我哪里出错了?

RestService.java

OAuthServices.java

安全配置.java

web.xml

0 投票
1 回答
3721 浏览

spring - Spring中至少需要一个映射错误

这里有一个问题:我想保护一个 URI,直到获得一些第三方 OAuth2 的授权。基于http://docs.spring.io/spring-security/oauth/apidocs/org/springframework/security/oauth2/config/annotation/web/configuration/EnableOAuth2Client.html,我有这些:

最后

但这给出了:

java.lang.IllegalStateException: 至少需要一个映射(即authorizeRequests().anyRequest.authenticated())

我已经尝试了很多 HttpSecurity 构建器的组合,但都无济于事 - 有什么帮助,还是这种方法完全不符合标准?

0 投票
2 回答
5678 浏览

spring-security - 重定向循环中的 Spring Security OAuth2 (google) web 应用程序

我正在尝试构建一个 Spring MVC 应用程序并使用 Spring Security OAuth2 保护它,并且提供者是 Google。我能够让网络应用程序在没有安全性和表单登录的情况下工作。但是,我无法通过 google 获得 OAuth 工作。谷歌应用程序设置很好,因为我可以让回调等与非 Spring Security 应用程序一起使用。

我的安全配置如下:

OAuth2 保护的资源如下:

我编写的用于抛出重定向异常以获取 OAuth2 授权的自定义身份验证过滤器如下:

Spring Web 应用程序的过滤器链顺序如下:

重定向到谷歌工作正常,我得到了过滤器的回调并且身份验证成功。但是在那之后,请求会导致重定向并再次调用过滤器(请求是相同的,我已经检查了 hasCode)。在第二次调用SecurityContextis中的身份验证null。作为第一次身份验证调用的一部分,身份验证对象被填充到安全上下文中,那么它为什么会消失呢?我是第一次使用 Spring Security,所以可能犯了新手错误。

0 投票
0 回答
1207 浏览

spring - 在检查密码时无法使 Bcrypt 哈希工作

我正在使用 Bcrypt 对密码进行哈希处理,并根据 Spring 文档使用 Random。我正在使用 Spring Security 3.2.5.RELEASE。

我有以下 OAuth2 安全配置:

问题是:

当它运行时,它会转到 org.springframework.security.authentication.dao.DaoAuthenticationProvider 和方法:

additionalAuthenticationChecks(UserDetails userDetails, UsernamePasswordAuthenticationToken authentication) 失败,因为盐为空。

它应该有一个随机盐。这就是我创建密码并存储在数据库中的方式。我已经验证了从数据库中检索到的密码并且是正确的。

在哪里:

密码经过哈希处理并正确生成。它已正确保存在数据库中并正确检索。但是当它被检查时,提供的密码不会被散列,因此比较失败。

首先, this.saltSource 为空,因为我没有定义盐豆。我认为这是随机的,盐是旧的做法。

现在,在查看调试器时:

presentPassword 没有经过哈希处理,salt 为空。因此 (!passwordEncoder.isPasswordValid(userDetails.getPassword(), presentPassword, salt)) 测试检查并失败。

如果我使用的是随机盐,我怎样才能使它起作用?我错过了什么?

0 投票
0 回答
140 浏览

spring-security - 如何启用具有 2 个不同授权和身份验证管理器的方法级安全性?

我的应用程序中有一个基于用户的安全性,它为所有带有前缀 /app 的请求提供服务。

现在,我在我的应用程序中创建了一些以 /rs 为前缀的 RESTFul 服务,并使用 Spring security Oauth2 来保护这些资源。

我已经使用 xml 配置成功地保护了这些资源。但是,我也想启用方法级别的安全性。

当我读到我们应该在应用程序中只有一个标签。此外,方法级别的安全性取决于身份验证管理器和授权管理器。身份验证管理器和授权管理器都基于 http 前缀而有所不同。在这种情况下,如何启用方法级别的安全性。我正在使用基于 xml 的安全配置。请建议。

0 投票
2 回答
12204 浏览

spring-security - 春季安全模式属性

我已经看到 Spring Security OAuth2 示例spring-servlet.xml

标签中的pattern属性是否有效?http我在spring-security-2.0.1.xsd. 如果有效,这个模式与intercept-url'pattern属性有什么关系?举个例子,拦截路径/photos/user/**是否有最终匹配的拦截路径/users/photos/user/**?谢谢。

0 投票
1 回答
2816 浏览

java - Spring 4.0 Oauth 2 不工作

请参阅下面的 spring servlet 文件配置。它曾经可以工作,现在在将依赖项升级到 Spring core 4.0 和 Spring sec oauth 2.0 之后,它就不起作用了。我的意思是,我无法获得令牌。请参阅以下错误消息和问题:

当我尝试使用以下 URL 获取令牌时,它会给出 406 错误:

网址:/oauth2/oauth/token

“错误”:此请求标识的资源只能生成具有根据请求“接受”标头不可接受的特征的响应。

我是否缺少 Spring 4.0 和 Spring security 3.2 或 Spring security oauth 2.0.0 中的任何新配置

以下是详细信息:

这是一个基于 REST 的 API,没有客户端。我在 chrome 浏览器上用 Postman 测试了这个。明确地说,我没有在接受标头中发送任何内容。使用旧版本的 spring oauth2,它确实适用于接受标头中的 application/json。

使用下面提到的依赖版本,我得到了这个响应,它工作正常。但是,一旦我升级到新的依赖版本,它就会失败并给出 406:

{“access_token”:“f9287b1d-243b-453d-9d3e-f5ed67e974f6”,“token_type”:“bearer”,“refresh_token”:“c6a45534-7c20-4dda-b6f1-9a231cb649ed”,“expires_in”:299999,“范围” :“读写”}

我使用以下依赖项来工作。:

第一个是使用 InMemoryTokenStore 实现的。但是,现在我们要使用 JDBCTokenStore。我读到,Spring oauth2 2.0 具有更好的特性,所以我开始更改依赖项,同时我必须更改代码中的一些包引用,因为它们现在在 2.0 中已更改。

这是spring servlet上下文文件:

以下是两种实现的 curl 响应:

这是新的实现 Spring 4 和 Spring oauth 2.0.3

curl -v -X POST -d "username=user1&password=user1&client_id=client1&client_secret=client1&grant_type=password" -H "Accept:application/json" [url1]

它失败了:

这是使用 Spring 3 和 Spring oauth 1.0 的旧实现 - 它给出了正确的响应

curl -v -X POST -d "username=user1&password=user1&client_id=client1&client_secret=client1&grant_type=password" -H "Accept:application/json" [url2]

0 投票
3 回答
14974 浏览

oauth-2.0 - 找不到 Spring Boot OAuth 2.0 UserDetails 用户

我是 Spring Boot 的新手,我正在尝试配置 OAuth 2.0。我现在遇到的问题是,当我尝试请求访问令牌时,我不断收到以下消息:

{ "error": "invalid_grant", "error_description": "凭证错误" }

Spring Boot 控制台中的错误消息说找不到用户。

:使用 org.springframework.security.authentication.dao.DaoAuthenticationProvider 进行身份验证:未找到用户“stromero”:返回单例 bean“authenticationAuditListener”的缓存实例

我已经使用 JPA 实现了一个已经保存到数据库的自定义用户,我无法弄清楚为什么 Spring Security 找不到这个用户,这可能是我的逻辑或配置有问题。如果有更多经验的人可以查看我的代码并指导我走向正确的方向,那将不胜感激。

这是 HTTP 请求:

POST /oauth/token HTTP/1.1 主机:localhost:8181 授权:基本 YnJvd3NlcjpzZWNyZXQ= 缓存控制:无缓存 内容类型:application/x-www-form-urlencoded username=stromero&password=password&client_id=browser&client_secret=secret&grant_type=password

这些是我用来实现自定义用户和 OAuth 2.0 的类

下面是我创建的自定义用户

下面是一个 customdetails 服务,它从数据库中读取用户信息并将其作为 UserDetails 对象返回

下面的类是一个包含 UserDetailsS​​ervice 和 ClientDetailsS​​ervice 的数据结构

下面的类是我使用 Spring Boot 对 OAuth 2.0 的配置

下面是我的 pom.xml 文件

0 投票
2 回答
19678 浏览

spring - 如何使用远程令牌服务?

我有一个使用 Spring-Security-oauth2 构建的单独的 ResourceServer。这是代码远程令牌服务。

当我使用 AccessToken 访问资源服务器时,我得到以下信息:

谁能告诉我我的配置有什么问题?

更新: 我的 Spring 安全配置。

我的身份验证服务器配置。