org.keycloak.common.VerificationException:无效的令牌发行者

Val*_*lik 7 keycloak

我正在开发一个 Android 应用程序,它使用我的 REST 后端。后端在 JBoss 实例上运行,该实例通过 Keycloak 进行保护。自从我将 Keycloak 从 1.0.7 更新到 2.1.5 以来,我遇到了以下问题。如果我尝试调用后端的 REST API,JBoss 会写入以下日志:

        [org.keycloak.adapters.BearerTokenRequestAuthenticator] (default task-39) 
Failed to verify token: org.keycloak.common.VerificationException: Invalid token issuer.
            Expected 'http://localhost:8180/auth/realms/myrealm', but was 'http://192.168.178.24:8180/auth/realms/myrealm'
            at org.keycloak.TokenVerifier.verify(TokenVerifier.java:156)
            at org.keycloak.RSATokenVerifier.verify(RSATokenVerifier.java:89)
Run Code Online (Sandbox Code Playgroud)

192.168.178.24 是正确的 IP 地址。好像是配置问题,但是这个地址在哪里可以配置呢?

有没有人知道如何解决这个问题?

DOU*_*L3P -1

如果你看一下实现,它会抛出你的异常。

public static class RealmUrlCheck implements Predicate<JsonWebToken> {

    private static final RealmUrlCheck NULL_INSTANCE = new RealmUrlCheck(null);

    private final String realmUrl;

    public RealmUrlCheck(String realmUrl) {
        this.realmUrl = realmUrl;
    }

    @Override
    public boolean test(JsonWebToken t) throws VerificationException {
        if (this.realmUrl == null) {
            throw new VerificationException("Realm URL not set");
        }

        if (! this.realmUrl.equals(t.getIssuer())) {
            throw new VerificationException("Invalid token issuer. Expected '" + this.realmUrl + "', but was '" + t.getIssuer() + "'");
        }

        return true;
    }
};
Run Code Online (Sandbox Code Playgroud)

我认为您的客户端配置不正确。您的客户与 Keycloak 中的客户相同吗?