问题标签 [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 投票
6 回答
73779 浏览

spring - 如何从 OAuth2 授权服务器/用户端点获取自定义用户信息

我有一个配置了@EnableResourceServer注释的资源服务器,它通过参数引用授权服务器user-info-uri,如下所示:


授权服务器/用户端点返回一个扩展名,org.springframework.security.core.userdetails.User例如电子邮件:


每当访问某个资源服务器端点时,Spring 通过调用授权服务器的/user端点在后台验证访问令牌,它实际上会返回丰富的用户信息(其中包含例如电子邮件信息,我已经使用 Wireshark 验证了这一点)。

所以问题是如何在没有明确第二次调用授权服务器/user端点的情况下获取此自定义用户信息。Spring 是否在授权后将其存储在资源服务器本地的某个位置,或者如果没有开箱即用的可用信息,实现这种用户信息存储的最佳方法是什么?

0 投票
6 回答
11069 浏览

spring - Spring oauth2 hasRole 访问被拒绝

我对 OAuth2 真的很陌生,并试图在角色 auth.server 中构建一台服务器来授权用户和一个保留受保护资源的服务器......

我遇到了需要使用 ResourceServerConfigurerAdapter 保护的问题。似乎他忽略了从 userInfoUrl 中获取的所有角色...

所以这里的代码:

认证服务器

__

__

资源服务器

因此,从 authserver 获取令牌 + 调用“localhost:9091/”和“/forAdmin”可以使用此令牌。

但是当我这样做时:

我被拒绝访问....

可以肯定的是,角色正在到达资源服务器,我已将 geet() 从上面更改为

控制台显示

dkauth.Oa2ResourceServerApplication :具有角色:[{authority=ROLE_USER}]

因此,当“Principal”是当前经过身份验证的用户时,我假设 resourceserverer 配置器存在错误......或者我正在做一些致命的错误......

或两者兼而有之....我不知道

有人可以帮助我解决这个问题吗?

0 投票
3 回答
1815 浏览

spring - 安全过滤器重叠

当向 HttpSecurity 配置方法添加多个过滤器时,它们似乎是重叠的,因为当时只有一个有效。

这是配置方法:

我试图指定顺序,但问题仍然存在:

我按照以下线程没有成功。

spring-boot中的过滤顺序

https://github.com/spring-projects/spring-boot/issues/1640

https://github.com/spring-projects/spring-boot/issues/677

任何帮助将不胜感激!

更新:

CSRF 过滤器定义

SSO 过滤器定义:

0 投票
1 回答
237 浏览

spring - spring Oauth 2 授权服务器实现,用户注册后如何返回授权码

通常,客户端重定向到 Oauth 服务器,带有客户端 ID

显示登录页面,在收到并验证正确的凭据后,未使用授权码向客户端回调确认

如果用户没有注册需要注册,那么注册后没有登录如何生成授权码

0 投票
2 回答
2569 浏览

spring-mvc - Spring OAuth2 和 JWT 认证信息

我有一个充当资源服务器的 Spring Boot (1.3.x) 应用程序,我可以在 Authorization 标头中从 Keycloak 传递一个 JWT 令牌,并可以访问某些端点。我遇到的问题是我无法获取授权对象中我的 JWT 令牌中的信息。

如果我让 IDP 将其放入令牌中,则 p 将保存 client_id 的名称。

isClientOnly() 返回真。为什么?

我希望能够获得我的用户名和授权,但没有找到。如果我没有client_id,它实际上是空的。

我试图了解是否必须以某种方式配置有关在验证后如何处理 JWT 令牌以便正确信息进入 Authentication 对象的内容,但我完全感到困惑。我怎样才能做到这一点?

Spring Boot 很棒,您可以做这么少的事情来运行某些东西,但与此同时,我不知道从哪里开始,甚至一开始就设置了什么......

我的应用程序.yml:

我的 SecurityConfig.java:

0 投票
0 回答
602 浏览

rest - 使用 APIKeys 保护 REST API?

我们有一个使用 Spring Security 保护的 Spring Web 应用程序,并且一组 SOAP API 服务使用 Spring MVC 用于验证用户的相同安全域 @org.jboss.ejb3.annotation.SecurityDomain。

我们现在正在重构我们的应用程序并创建安全的 REST API。我们认为遵循以下方法

  • Spring @RestController 方法充当 REST APIS/webservices 来替换我们现有的soap API。
  • Spring OAuth2 保护 REST API
  • Spring MVC 继续使用 spring security 和 wildfly 服务器中定义的安全域,并且在表单登录后,一旦用户从 javascript/angular js 进行身份验证,使用 oauth 访问令牌来调用受保护的 REST API

弹簧配置

第三方应用程序或 REST API 客户端将使用以下步骤获取访问令牌并访问受保护的 REST API

http://hostname:8080/myapp/oauth/token?grant_type=password&client_id=X&username=user1&password=secret&client_secret=XYZ&scope=read+write+trust

http://hostname:8080/myapp/restapi/getdata?access_token=5ec70b18-d9eb-449b-a1fa-d29c3d47274d

要求我们的 Web 服务客户端在请求参数/标头中发送他们的凭据以获取访问令牌是否安全?

这是将令牌保存在服务器会话中以在 UI 中用于 Spring MVC 请求的好方法吗?

我们还被要求考虑访问 REST API 的 API 密钥。通过使用 API 密钥,我们可以获得 ejb 会话上下文和用户详细信息吗?如果是这样,我们可以在 Web 部件中使用 API 密钥和 spring 安全性吗?

0 投票
2 回答
2310 浏览

spring - 使用 oAuth2 /oAuth/Token 请求 405 方法的 Spring Security 不允许

我将 oAuth2 令牌与 Spring Security 一起使用。如果我使用与 Spring boot 1.3.0 相同的配置,它对我来说工作正常。但是当我使用与 Spring Mvc applicaito 相同的配置时。然后它会产生一个问题

/oAuth/token ---> 不允许发布 405 方法。

我的 oAuth 配置如下:

任何人都可以在我错的地方提供帮助。

0 投票
1 回答
326 浏览

spring-security - 由同一个 Spring Boot 应用程序支持的多个 Facebook 应用程序

所以我正在关注下面的(经典)教程,用于使用 facebook 进行 Spring Boot:

https://spring.io/guides/tutorials/spring-boot-oauth2/

一切正常,但是我找不到帮助我实现特定用例的文档。所以这里是:

  1. 我将有两个 Facebook 应用程序:一个供所有者使用,另一个供普通用户使用
  2. 这两个 facebook 应用程序将要求不同的权限(例如:对于所有者应用程序,它会请求在粉丝页面中发布的权限,而对于普通用户,它只会请求基本用户信息)
  3. 将有两个真正的应用程序,一个是移动设备(iOS 和 Android),另一个是基于浏览器的应用程序(这并不真正相关)
  4. REST API 将基于角色进行保护,这意味着所有者将拥有OWNER角色,而普通用户将拥有REGULAR_USER角色,因此,例如,普通用户将无法调用 API 在粉丝专页
  5. 这两个应用程序都可以使用或不使用 facebook 登录,因为我需要一个用户表来存储更多信息等
  6. 如果他/她下载了 **owner* 应用程序,最终普通用户可以作为所有者登录

所以,总而言之,我需要:

  1. 两个 facebook 应用程序由同一个 Spring Boot 应用程序支持
  2. 授权具有APP ID X的用户并分配OWNER角色的能力以及授权具有APP ID Y的用户并分配角色REGULAR_USER的能力
  3. 能够(在 YML 中)配置两个不同的 Facebook 应用程序
  4. 如果他稍后授权,用户可以将现有帐户与 facebook 合并

我想就是这样。如果我发现更多有用的信息可以提供,我会稍后进行编辑。

谢谢!

0 投票
1 回答
5169 浏览

java - 具有基本身份验证和自定义 UserDetailsS​​ervice 的 Spring Boot OAuth2

我正在尝试配置一个能够完成基本 OAuth2 流程的 OAuth2 服务器(有关示例,请参见此处)。

为长问题道歉

我的第一次尝试是能够执行授权代码流。

我有以下配置:

我的服务器配置

事实上,我的授权代码流程工作正常!当我尝试按如下方式执行密码流程时问题开始:

我的问题是 Authorization 标头被忽略,无论是否存在结果都是一样的,它给了我 access_token 和 refresh_token

如果我尝试按如下方式启用基本身份验证,请启用 ClientUserDetailsS​​ervice,从数据库 JDBC 读取客户端:

现在我所取得的成就是让基本身份验证正常工作但我失去了授权代码流,因为现在基本身份验证是针对客户端 ID 和机密而不是用户的实际凭据完成的

我错过了什么吗?我怎样才能同时拥有两个流程?请帮助,我现在挣扎了几天。

一些类似的问题,但没有任何运气:

0 投票
2 回答
637 浏览

spring-oauth2 - 冗余 Oauth 身份验证服务器(高可用性/故障转移)

我们正在考虑在我们的微服务之间使用 oauth 身份验证。即使身份验证服务器关闭,这些服务也能继续工作,这一点非常重要。

AuthorizationServer 在我的场景中不应该是多余的吗?

我们正在使用我们自己的 AuthorizationServer(基于https://github.com/spring-cloud-samples/authserver.git)(并且正在使用最新的稳定 spring cloud / spring boot apis)

我找不到任何有关使用第二个 AuthorizationServer 的文档,因此当第一个 AuthorizationServer 关闭时,微服务会继续工作。谁能解释如何做到这一点?