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

spring - 带有社交登录的 Spring OAuth2 + REST WS

我将构建一个移动(和网络)应用程序,它将允许电子邮件/密码注册以及社交(facebook、google)注册。本机或 Web 应用程序将调用 REST Web 服务(由 Spring OAuth2 保护)。社交登录将由本机 /web 应用程序处理。如果用户登录,REST 服务将没有任何线索。在电子邮件注册的情况下,用户名/密码将传递给 WS。鉴于事实,保护 REST 服务的标准或好的方法是什么?有类似架构的经验吗?

我们正在经历的几个想法:

  1. 在启动应用程序开始时,将设备 ID 传递给 WS。WS 会以静默方式(使用 apple/google )向设备发送包含一个授权码的推送通知。此代码将用于 OAuth2 身份验证。但不确定如何在这里处理 Web 应用程序。
  2. 用户登录到 social 后,从社交提供者处获取社交 ID 传递令牌。将社交访问令牌和此 ID 传递给 WS。WS 将根据 id 调用提供者 oauth 服务(例如https://graph.facebook.com/me?fields=id&access_token=XXX)验证令牌。
0 投票
2 回答
1365 浏览

spring-security - Spring Oauth2 - 重新加载主体

我已经使用 spring 安全模块实现了 OAuth2 密码授予。我添加了自己的 UserDetails 和 UserDetailsS​​ervice (jdbc) 实现。我将 User 注入到我的控制器中:

其中 User 是我的 UserDetails 实现。现在我想在不刷新令牌的情况下添加更改用户数据的可能性。

我尝试通过以下方式刷新主体:

但它不起作用,当我调用另一个控制器方法时,它返回旧的用户对象。

有没有办法在不刷新令牌的情况下更改用户数据?是否有任何解决方案可以使 Spring Security 始终从数据库(而不是从缓存)加载用户数据?

0 投票
1 回答
472 浏览

spring-cloud - Spring Cloud OAuth2 SSO 和刷新令牌

这是场景:

Web App (webapp) 身份验证通过设置 spring.oauth2.sso.* 属性使用 OAuth 授权服务器 SSO。

用户身份验证和 webapp 现在具有用户凭据和 access_token。然后应用程序使用此令牌调用后端的某些微服务。

当令牌过期时,它最终会得到 403 Unathorized。

由于我们没有刷新令牌,我们是否应该强制用户再次登录?如果我们希望用户保持登录的时间比令牌的 TTL 更长怎么办?

有什么想法吗?

0 投票
1 回答
2549 浏览

java - 在 Spring Security Oauth2 的标头中发送用户名和密码

我正在使用 Spring Security Oauth2 来生成访问令牌。当我password用作授权类型时,我发送一个发布请求为

http://localhost:8085/oauth/token?grant_type=password&client_id=ws&client_secret=secret&scope=read+write&username=david@abc.com&password=abc@123

我不想在 URL 中发送用户名和密码。

我检查了源代码,TokenEndPoint.java但找不到太多。我知道我们可以使用HTTPS和加密用户名和密码。

我只想知道是否有任何方法可以在标题中发送用户名和密码。

0 投票
0 回答
72 浏览

spring - App Gateway 和 Web App 的身份验证服务器与 Spring Boot 共享用户群

我正在使用 Spring Boot 编写应用程序网关 (REST-API) 和 Web 应用程序。我有一个包含用户和密码哈希的用户数据库。两个应用程序都将使用相同的用户数据库,因此我希望将它放在一个独立的服务中。我查看了https://spring.io/guides/tutorials/spring-security-and-angular-js/提出了通过 OAuth 使用 Auth 服务器的想法。

我很不确定我的用例的请求流。我认为它将进入 App -> App Gateway(例如登录),然后使用授权类型密码向 /uaa/oauth/token 发出请求(因为我获得了用户凭据)。此请求必须包含 client_id 和 client_secret 并且应该返回一个令牌。

  1. 这个概念对我的用例是否正确?
  2. 如果是这样:我如何配置身份验证服务器以使用数据库而不是基本身份验证?我发现的所有示例在 application.properties 中都有特定的用户/密码组合
  3. 通过用户名 + pw 将 Auth 委托给 Auth 服务器的最惯用的方式是什么?

编辑:我发现这很有帮助:https ://github.com/dsyer/sparklr-boot

现在我可以这样做:

curl -H "Accept: application/json" my-trusted-client@localhost:8080/oauth/token -d grant_type=password -d username=user -d password=password

如何将一些用户后端连接到其中?据我了解,以下使用默认的 Spring Basic Auth 设置。

应用程序.yml:

代码:

0 投票
2 回答
9803 浏览

oauth-2.0 - spring boot OAuth2 基于角色的授权

我们有一个扩展 AuthorizationServerConfigurerAdapter 的专用授权服务器,我们在其中设置了覆盖 void configure(ClientDetailsS​​erviceConfigurer clients) 方法的权限。

现在如何使用资源服务器中的权限进行基于角色的授权。我们能够通过授权服务器生成的令牌进行身份验证。需要帮忙。

0 投票
1 回答
1923 浏览

spring-rest - Spring-OAuth2 上的 CORS

我正在使用 Spring-Boot 和 Spring-OAuth2 来保护我的 Rest API。我已经实现了 OAuth2。它得到正确执行。我开发了 AngularJS 并尝试访问它,但我收到了 CORS 错误。

错误->Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://192.168.2.45:8080/Jaihind/oauth/token. (Reason: CORS header 'Access-Control-Allow-Origin' missing).

网址->curl -X POST -vu clientapp:123456 http://localhost:8080/Jaihind/oauth/token -H "Accept: application/json" -d "password=password&username=gaurav&grant_type=password&scope=read%20write&client_secret=123456&client_id=clientapp"

下面是代码。

OAuth2ServerConfiguration.java

我什至添加了过滤器。

0 投票
0 回答
2975 浏览

oauth-2.0 - 在资源服务器中使用来自 Auth Server 的角色进行 Spring Boot OAuth2 基于角色的访问控制

我已经使用 spring boot 创建了一个授权服务器,我想在资源服务器中使用它的资源所有者角色。我有一个扩展WebSecurityConfigurerAdapter的类SecurityConfig,我在其中检查了来自 mongodb 的资源所有者的凭据以进行身份​​验证。为此,我有一个实现AuthenticationProvider的类MongoAuthProvider ,我从中返回一个带有用户名、密码和角色的UsernamePasswordAuthenticationToken实例,例如“ROLE_ADMIN”、“ROLE_APPUSER”。

在身份验证服务器中,我还有一个用户信息休息端点:

我想在资源服务器中使用授权服务器数据库中资源所有者的角色。为此,我有一个类ResourceServer扩展ResourceServerConfigurerAdapter,我试图在其中检查来自身份验证服务器的用户角色。资源服务器工作正常。问题是它无法从身份验证服务器检查角色。

请帮助我如何使用资源服务器中授权服务器的角色进行基于角色的访问。

0 投票
2 回答
2082 浏览

angularjs - 如何集成 AngularJS 和 Spring-OAuth2?

我使用 Spring-Boot-1.3.1 开发了 Spring-Rest API。然后我为这些 API 提供了 Spring-OAuth2 安全性。这作为单个项目驻留在 Apache Tomcat 中。我开发的 API:

Spring-Oauth2 默认提供以下 API:

和一些更多的 api。

现在我正在开发 AngularJS UI,它将驻留在不同的服务器 - Apache2-Http 服务器中。

我需要知道如何将 angularJS 登录页面与 Spring-OAuth2 保护的 Spring-REST 集成?

0 投票
0 回答
2014 浏览

spring-security - 使用 oauth2 和 formlogin 在 Spring Security 中未调用 usernamepasswordauthenticationfilter

试图让 spring security oauth2 和 form login 在 spring boot 应用程序中工作。

我从 https://github.com/spring-projects/spring-security-oauth/tree/master/samples/oauth2/sparklr

https://github.com/royclarkson/spring-rest-service-oauth/issues/11

下面是我的配置

当我尝试通过上述配置进行身份验证时,oauth2 登录工作正常

/oauth/令牌

但是通过登录

/web/身份验证

总是显示

405 不支持请求方法“POST”

usernamepasswordauthenticationfilter 没有被调用。

在上面的代码中注释 ResourceServerConfiguration 部分后,

通过表单登录

/web/身份验证

工作正常。

我还可以看到从日志中调用了 usernamepasswordauthenticationfilter 。

我的问题是,即使为 oauth2 资源服务器和表单登录配置了不同的端点,为什么 oauth2 会覆盖表单登录的 httpsecurity 以及为什么在配置资源服务器时不调用 usernamepasswordauthenticationfilter?