使用keycloack + spring的HTTP和HTTPS

时间:2018-02-27 23:30:26

标签: spring-boot spring-security keycloak

我正在尝试使用keycloak保护我的应用程序。
我使用角度为我的前端和弹簧靴为我的后端。

只使用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'

在我的属性文件中,我有:keycloak.auth-server-url,它指向http://my-keycloak/auth

有没有办法用keycloak支持http和https?

2 个答案:

答案 0 :(得分:1)

如果您使用的是keycloak库,我认为这是不可行的。当我使用keycloak时,我遇到了同样的流程。有人争辩说为什么甚至在你的安全模块上使用http。我的意思是当你传递令牌时,你只需要有https。 同意,但通常服务需要自己发起呼叫并从内部(安全区域)调用keycloak,他们可以在没有https的情况下进行调用(可以使其快一点。)。

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

为什么会失败?

当你的令牌被协议信息签名时 如果您解码令牌,您将找到 iss 字段。 Keycloak Token验证器检查此字段。因此,您可以在HTTP和HTTPS上运行服务器,但可以为两者之一配置应用程序。

我们可以采取哪些措施来解决此问题

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

答案 1 :(得分:1)

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

从版本4开始,将支持适配器中的不同URL,前后通道请求。

Source