问题标签 [spring-cloud-security]

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 回答
1840 浏览

java - Spring Cloud:微服务认证通过 Eureka Discovery 工作,而不是通过 Zuul

我对 Spring Cloud 有点陌生。我正在尝试使用 Spring Cloud Eureka Discovery 和 Zuul Gateway 构建一些微服务。

我可以通过 Zuul 网关访问微服务并执行操作,但前提是不涉及安全性。如果我的微服务是安全的,那么我无法通过 Zuul 做任何事情,因为它不会返回 JWT 令牌。如果我通过 Eureka 发现客户端来完成它,它就像一个魅力。

也许我的 Zuul 配置有问题?或者我选择了一种无效的方式来保护服务?提前致谢!

这是我的 Zuul 网关配置:

应用程序类

应用程序属性

引导程序属性

这是我的微服务 JWT 和安全配置:

WebSecurityConfig.class

TokenAuthenticationService.class

JWTLoginFilter.class

JWTAuthenticationFilter.class

0 投票
3 回答
1446 浏览

java - Spring Cloud OAuth2Authentication 返回 NullPointerException

我正在慢慢理解 Spring Cloud Security。我创建了一个授权服务,它在授权和返回令牌时工作,但在使用该令牌时不返回任何当前用户详细信息,从OAuth2Authentication. 这两行返回一个 NPE:

OAuth2Authentication user没有实例化并且为空,而我知道它应该默认由 Spring Security 实例化。也许我缺少一些配置bean?提前致谢!

应用程序类

OAuth2Config.class

WebSecurityConfigurer.class

0 投票
1 回答
730 浏览

spring-security - @EnableOAuth2Sso 和 csrf

我正在尝试为 Gateway、UI、Resource构建完整的示例代码。一切都很完美,除非我尝试发帖。

我首先注意到我有一个来自网关和一个来自 UI 的双 csrf。所以我不确定是否正确的决定是在 UI 上禁用 csrf 并将其保留在网关(Zuul 代理)上,但我无法做到这一点。

我不知道我应该扩展什么适配器WebSecurityConfigurerAdapterResourceServerConfigurerAdapter

一旦我宣布WebSecurityConfigurerAdapter整个 OAuth2Sso 停止工作并且我被拒绝访问并且ResourceServerConfigurerAdapter似乎没有做任何事情。

起初我想禁用 csrf@EnableZuulProxy并且 @EnableOAuth2Sso

0 投票
1 回答
43 浏览

java - 如何保护许多 Java Web 应用程序

我在一台服务器上有三个 Java Web 应用程序,我想通过一次登录连接所有应用程序。我想将 oauth 与 Spring Cloud Security 一起使用。

有人可以帮助我吗!!!

0 投票
2 回答
5078 浏览

angular - OAuth2 授权代码流,不共享客户端密码

我使用带有 Angular 2 客户端的 Spring Security Cloud 对 OAuth2 的授权代码流程做了一个小演示。

一切正常,我正在从服务器获取访问令牌响应。

然而,根据 Aaron perecki 的博客https://aaronparecki.com/oauth-2-simplified/

从网页加载源代码后,单页应用程序(或基于浏览器的应用程序)完全在浏览器中运行。由于浏览器可以使用整个源代码,因此它们无法维护其客户端机密的机密性,因此在这种情况下不使用机密。该流程与上面的授权码流程完全相同,但在最后一步,将授权码交换为访问令牌,而不使用客户端密钥。

所以我不想使用客户端密码从 auth-server 获取访问令牌。

但是,如果不将客户端密码共享给身份验证服务器,我将无法继续。

以下是我检索令牌的 Angular 2 逻辑

这是我的AuthorizationServerConfig类源代码

WebConfig 类的源代码

SpringBootApplication 类

AuthCodeResponse POJO

0 投票
0 回答
278 浏览

identityserver3 - openID 使用 spring-cloud-securiy 连接服务器

我们正在尝试使用 Open ID Connect (OIDC) 为我们基于 spring-cloud 框架的微服务架构进行身份验证和授权 (AnA)

作为要求的一部分,我们希望实现以下目标:

  • 将 (OIDC) 与 SSO 联合作为身份提供者集成,我们使用联合来验证用户身份(员工 ID)
  • 如何自定义 access_token 依次由微服务(授权服务)提供

我正在将 MITREid Connect 视为基于 spring 框架和 spring 安全性

https://github.com/mitreid-connect/OpenID-Connect-Java-Spring-Server

因此,对我们服务的所有请求都必须通过 (OIDC) 以获取 (AnA)

我还检查了https://cloud.spring.io/spring-cloud-security/,因为我了解 Zuul 服务器将获得一个 access_token 以中继到代理服务。但是我们的场景不同,因为我们也希望将其他微服务暴露给外部方,以便我们希望保护我们的服务。

任何建议都将受到高度赞赏。

0 投票
0 回答
570 浏览

oauth-2.0 - Eureka客户端Oauth2如何在资源服务器中中继Oauth2访问令牌时使用固定URL作为User-info-uri

我正在编写一个微服务作为尤里卡客户端。我想使用 Oauth2 保护它们,所以我将其配置为资源服务器。

这是 yml 配置。

到目前为止,它运行良好,我可以毫无问题地访问受保护的端点。现在我正在尝试将访问令牌中继到也配置为 ResourceServers 的其他一些微服务。为此,我创建了一个 OAuth2RestTemplate Bean。

它使用@LoadBalanced 进行注释,因为我想在我调用的端点中使用 eureka 服务 ID。这是我的控制器映射之一:

这是问题所在:由于我使用的是功能区客户端,因此在调用底层微服务时,url ai.github.com 似乎被解释为服务 id,从而导致此错误:

并在程序初始化:

如何使 UserInfoTokenServices 使用 github url(或我将在生产中使用的授权服务器 url)作为真实 URL,同时保持 eureka 客户端处于激活状态,以便我可以在我的 restTemplate 调用中使用服务 ID?

谢谢你的帮助。

0 投票
1 回答
2278 浏览

java - 会话验证 - 带有微服务的 Spring Security

我当前的 Web 应用程序架构有一个网关服务器,它协调一堆微服务,如果给定的原则经过身份验证,授权发生在网关,它们可以与一些下游服务通信。

下游服务获取所需的数据来识别给定的经过身份验证的客户端。然而,春季证券违约行为开始出现并引发预期:

鉴于我可以在任何给定的微服务中使用会话 ID 和 + XSRF 令牌来验证用户是否经过身份验证并知道哪个用户已登录(我目前正在使用 Http Basic)。

我的问题是有一种更简单/声明性的方法可以用来代替必须向每个微服务添加过滤器来覆盖弹簧证券默认行为吗?(请参阅我的示例伪代码)

见附图:架构。 在此处输入图像描述

资源服务器的 Spring Web 安全配置:

资源微服务的标头值:

计划的方法(伪代码)将一个新过滤器附加到弹簧证券过滤器链,如果给定标志为真,则允许访问安全端点。

0 投票
1 回答
722 浏览

spring-boot - 无法将 @LoadBalanced 与在 ClientCredentials 上配置的 OAuth2RestTemplate 一起使用

我想使用 OAuth2 ClientCredentials 流在两个资源服务器之间进行服务间通信。一切正常,除了我无法在对远程资源服务器的 OAuth2RestTemplate 调用中使用服务名称(功能区负载均衡器功能)而不是主机名。

我的一个资源服务器(调用另一个资源服务器)具有以下配置:

build.gradle 包含 eureka 和 Ribbon 的条目

使用此 OAuth2RestTemplate 的服务

使用服务名称(即http://notification-service,而不是远程资源服务器的实际主机名和端口)调用远程服务时出现异常。如果我使用实际的主机名 + 端口,那么一切正常,但我不希望我的一个资源知道另一个资源服务器的主机/帖子。

例外:

我有几个问题:

  1. 如果我的 RestTemplate 用 @LoadBalanced 注释,那么一切正常。OAuth2RestTemplate 是否支持此注释,我们可以使用服务名称而不是主机名吗?如果是,任何参考或文档将不胜感激。
  2. 将 oauth2 客户端凭据用于两个资源服务器之间的服务间安全性是一个好主意吗?我在文档中没有看到任何相同的示例?
0 投票
0 回答
1461 浏览

java - Keycloak + Spring Boot 无法将访问令牌转换为 JSON

我无法从 keycloak 生成的访问令牌中提取用户信息。我有一个受保护的路由,我期望正确填充 Principal 或 Authentication 对象。

在 Profile 控制器中,我想显示传入令牌的详细信息。

调用上述端点时出现以下错误。

无论我是否传递签名密钥都没有区别。

感谢您的帮助。