【问题标题】:Keycloak and Identity Broker (OpenId) IdentityBrokerException "Token no longer valid"Keycloak 和身份代理 (OpenId) IdentityBrokerException “令牌不再有效”
【发布时间】:2016-09-25 00:21:17
【问题描述】:

我们已经在服务器上独立安装了 keycloak,并通过 wildfly 将其注册为同一服务器上的适配器。因此,在 Identity Broker 使用 OpenId 注册后(自行编写并部署在另一个域上),我们将不会被重定向回我们的应用程序,但我们会收到下一个错误:“无法进行身份提供者誓言回调:”令牌不有效期更长”。 接下来工作: DNS:8080(8443)/app.war (server wildfly)-> (重定向到 keycloak on) DNS:8180(8543)/auth -> (在选择 open-id provider 后我们将成功重定向到它并且我们'输入名称和密码后将登录系统)->(错误)我们没有被重定向到我们的应用程序,而是得到一个异常。

我们还尝试了 Google Auth 来测试服务器是否正常工作,是的,确实如此。但我们的身份代理也可以与 localhost 正常工作。可能是什么?

感谢您的帮助,并将为您提供所需的任何 sn-p 代码。

Keycloak 1.9.4.Final,Wildfly 8.2.1.Final

代码:

wildfly,standalone-full.xml:

 <subsystem xmlns="urn:jboss:domain:keycloak:1.1">
        <secure-deployment name="jbpm-console.war">
            <realm>nameOfRealm</realm>
            <resource>nameOfClient</resource>
            <enable-basic-auth>true</enable-basic-auth>
            <realm-public-key>myPublicKey</realm-public-key>
            <auth-server-url>myUrl</auth-server-url>
            <ssl-required>none</ssl-required>
            <principal-attribute>preferred_username</principal-attribute>
            <credential name="secret">mysecret</credential>
        </secure-deployment>
    </subsystem>

<interfaces>
    <interface name="management">
        <inet-address value="${jboss.bind.address.management:0.0.0.0}"/>
    </interface>
    <interface name="public">
        <inet-address value="${jboss.bind.address:0.0.0.0}"/>
    </interface>
    <interface name="unsecure">
        <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/>
    </interface>
</interfaces>

 <subsystem xmlns="urn:jboss:domain:undertow:1.2">
        <buffer-cache name="default"/>
        <server name="default-server">
            <http-listener name="default" socket-binding="http"/>
            <host name="default-host" alias="localhost">
                <location name="/" handler="welcome-content"/>
                <filter-ref name="server-header"/>
                <filter-ref name="x-powered-by-header"/>
                <single-sign-on path="/"/>
            </host>
        </server>



23:33:18,529 ERROR [org.keycloak.broker.oidc.AbstractOAuth2IdentityProvider] (default task-5) Failed to make identity provider oauth callback: org.keycloak.broker.provider.IdentityBrokerException: Token is no longer valid
at org.keycloak.broker.oidc.OIDCIdentityProvider.validateToken(OIDCIdentityProvider.java:346)
at org.keycloak.broker.oidc.OIDCIdentityProvider.getFederatedIdentity(OIDCIdentityProvider.java:254)
at org.keycloak.broker.oidc.AbstractOAuth2IdentityProvider$Endpoint.authResponse(AbstractOAuth2IdentityProvider.java:230)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)

【问题讨论】:

    标签: openid wildfly identity keycloak


    【解决方案1】:

    在 Office 365 中遇到了同样的问题,其中 Microsoft Azure AD 负责发出将由 Keycloak 验证和使用的令牌。

    问题在于 Keycloak 服务器存在时钟偏差。这导致 Keycloak 拒绝 JSON Web 令牌,因为在实际情况并非如此的情况下令牌明显过期。要解决此问题,必须同步托管 Keycloak 的服务器上的日期以减少或消除时钟偏差,以便 Keycloak 在令牌过期之前对其进行验证。

    【讨论】:

    • 这是真的。就是这样。
    【解决方案2】:

    有一个现有的功能请求:https://issues.jboss.org/browse/KEYCLOAK-4538

    我们遇到了同样的问题并修补了我们的服务器和客户端代码模块以支持时钟偏差功能。

    keycloak-core 项目中的修补类 JsonWebToken。用更新的模块替换了 JBoss / Wildfly 中的 keycloak-core 模块。 JsonWebToken 的变化如下所示

    # Added these two fields to get clock skew from system property
    public static final String KEYCLOAK_WEBTOKEN_CLOCK_SKEW_SEC = "Keycloak.WebToken.ClockSkew.Sec";
    private static final Integer clockSkew = Integer.getInteger(KEYCLOAK_WEBTOKEN_CLOCK_SKEW_SEC, 0);
    
        # Updated this method to support clock skew
        @JsonIgnore
        public boolean isNotBefore() {
    
            int currentTime = Time.currentTime() + clockSkew;
            int tokenTime = notBefore;
    
            return currentTime >= tokenTime;
        }
    

    【讨论】:

      猜你喜欢
      • 2021-03-04
      • 2018-11-16
      • 2019-11-08
      • 2015-03-04
      • 2017-11-30
      • 2020-07-22
      • 2012-09-03
      • 1970-01-01
      • 2015-09-03
      相关资源
      最近更新 更多