Spring boot HTTP和HTTPS与keycloack+;春天

Spring boot HTTP和HTTPS与keycloack+;春天,spring-boot,spring-security,keycloak,Spring Boot,Spring Security,Keycloak,我正在尝试使用KeyClope保护我的应用程序 我的前端使用angular,后端使用spring引导 仅使用http,一切正常,问题是,如果我想在http旁边使用HTTPS,我的后端会出现如下错误: o.k.a.BearerTokenRequestAuthenticator : Failed to verify token org.keycloak.common.VerificationException: Invalid token issuer. Expected 'http://myDom

我正在尝试使用KeyClope保护我的应用程序
我的前端使用angular,后端使用spring引导

仅使用http,一切正常,问题是,如果我想在http旁边使用HTTPS,我的后端会出现如下错误:

o.k.a.BearerTokenRequestAuthenticator : Failed to verify token
org.keycloak.common.VerificationException: Invalid token issuer. Expected 'http://myDomain/auth/realms/realmName', but was 'https://myDomain/auth/realms/realmName'
在我的属性文件中,我有:keydape.auth-server-url,它指向


有没有一种方法可以支持http和https与Key斗篷?

如果您使用的是Key斗篷libs,我认为这是不可行的。当我使用KeyClope时,我遇到了相同的流。有人认为,为什么要在安全模块上使用http呢。我的意思是,当你传递令牌时,你只需要有https。 同意,但通常情况下,服务需要自己发起一个调用,并从内部(安全区域)调用KeyClope,而他们可以不使用https(可以使其更快一点)

但后来我找不到自己的出路。我们最终只使用https

为什么失败?

当您的令牌使用协议信息签名时 如果解码令牌,您将找到iss字段。 KeyClope令牌验证程序在该字段上进行检查。所以您可以让服务器同时在HTTP和HTTPS上运行,但应用程序可以配置为这两种方式之一

我们能做些什么来解决这个问题


但是,您可以在令牌验证程序模块中进行更改,以忽略对协议的检查。这将帮助您验证令牌。您所需要的只是JWT库和公钥。

如果您使用的是keydape libs,我认为这是不可行的。当我使用KeyClope时,我遇到了相同的流。有人认为,为什么要在安全模块上使用http呢。我的意思是,当你传递令牌时,你只需要有https。 同意,但通常情况下,服务需要自己发起一个调用,并从内部(安全区域)调用KeyClope,而他们可以不使用https(可以使其更快一点)

但后来我找不到自己的出路。我们最终只使用https

为什么失败?

当您的令牌使用协议信息签名时 如果解码令牌,您将找到iss字段。 KeyClope令牌验证程序在该字段上进行检查。所以您可以让服务器同时在HTTP和HTTPS上运行,但应用程序可以配置为这两种方式之一

我们能做些什么来解决这个问题


但是,您可以在令牌验证程序模块中进行更改,以忽略对协议的检查。这将帮助您验证令牌。您需要的只是JWT库和公钥。

现在,必须使用与为其颁发令牌的URL相同的URL来检查令牌验证

从版本4开始,将提供对适配器中不同URL、前端和后端通道请求的支持


目前,必须使用与为其颁发令牌的URL相同的URL来检查令牌验证

从版本4开始,将提供对适配器中不同URL、前端和后端通道请求的支持


如何配置HTTPS?如果您使用的是反向代理(我使用NGINX),我想这只是将代理配置为不需要HTTPS,并在
none
中使用SSL配置keydape的问题。在我的例子中,NGINX和keydove之间的通信没有加密。如何配置HTTPS?如果您使用的是反向代理(我使用NGINX),我想这只是将代理配置为不需要HTTPS,并在
none
中使用SSL配置keydape的问题。在我的例子中,NGINX和keydove之间的通信是不加密的。这是我的使用案例,我通过本地安全网络调用keydove服务器,使用https是一种开销。我不想触摸令牌验证器。对我来说,使用KeyClope的漏洞在于不实现令牌签名过程。经过一些研究之后,我认为可以从版本4()开始应用我的用例(从另一个URL,在我的例子中是本地的,也称为调用keydrope,以验证令牌)。这也是我的用例,我通过本地安全网络调用keydrope服务器,使用https这是一种开销。我不想触摸令牌验证器。对我来说,使用KeyClope的漏洞在于不实现令牌签名过程。经过一些研究之后,我认为可以从版本4()开始应用我的用例(从另一个URL(在我的例子中是本地的)aka call keydape来验证令牌)