我正在尝试使用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?
答案 0 :(得分:1)
如果您使用的是keycloak库,我认为这是不可行的。当我使用keycloak时,我遇到了同样的流程。有人争辩说为什么甚至在你的安全模块上使用http。我的意思是当你传递令牌时,你只需要有https。 同意,但通常服务需要自己发起呼叫并从内部(安全区域)调用keycloak,他们可以在没有https的情况下进行调用(可以使其快一点。)。
但后来我找不到自己的路。我们最终只使用https。
为什么会失败?
当你的令牌被协议信息签名时 如果您解码令牌,您将找到 iss 字段。 Keycloak Token验证器检查此字段。因此,您可以在HTTP和HTTPS上运行服务器,但可以为两者之一配置应用程序。
我们可以采取哪些措施来解决此问题
但是,您可以在令牌验证程序模块中进行更改,以忽略对协议的检查。这应该可以帮助您验证令牌。您只需要JWT库和公钥。
答案 1 :(得分:1)