Keycloak 4.3.0无限循环方案

时间:2018-08-22 02:20:40

标签: keycloak keycloak-services

我已经将keycloak.js包含在索引页面的开头。成功登录后,我将被重定向回我的已定义重定向网址,其中经过身份验证的身份等于true。但是,大约5秒钟后,页面将重新加载并返回Authenticated true。这只是一个循环而已,并且不确定从何处去。这是我在HTML中的内容:

<script src="/js/application/jquery/jquery-3.2.1.min.js"></script>
<script src="/js/application/keycloak.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    var keycloak = Keycloak('keycloak.json');    
    keycloak.init({onLoad:'login-required', flow:'standard'}).success(function(authenticated) {         
        console.log('load app here');
    }).error(function() {
        alert('failed to initialize');
    });
});

我的keycloak.json是:

{
"realm": "myapp",
"auth-server-url": "https://localhost:8081/auth",
"ssl-required": "external",
"resource": "app",
"credentials": {
  "secret": "77296286-f52d-48d9-82ac-fcf287486110"
 },
 "confidential-port": 0,
 "policy-enforcer": {},
 }

非常感谢您提出的任何建议。这主要是在IE 11中发生的。我们有很多仍在使用IE 11的老客户,所以必须支持它。

我正在使用4.3.0中的keycloak.js并使用所有Java 4.3.0 adpaters。

2 个答案:

答案 0 :(得分:2)

解决了这个问题。问题不是铬。问题是由于iframe。 KeyCloak将iframe附加到浏览器窗口中,然后iframe将请求发送到KeyCloak服务器以进行身份​​验证,然后再返回响应,并且有关响应的iframe更新父窗口KeyCloak库将附加一个iframe,这将导致无限循环。因此,我只是在KeyCloak库中添加了一个条件,如果该iframe已在窗口中,则不要追加新的iframe。

添加“ checkLoginIframe”:在keycloak服务的init方法中为true,它将解决您的问题。

请参阅以下github链接:

https://github.com/dasniko/keycloak-reactjs-demo/issues/3

答案 1 :(得分:0)

就我而言, checkLoginIframe:false 没有为我解决问题。在阅读了 keycloak iframe 的文档和这里的讨论后,我重新审视了浏览器是问题所在。

我为 Brave 关闭了 Chrome、Safari 和 Shields 的第三方 cookie 阻止功能。刷新问题对我来说已经消失了。 MS Edge 不受此影响。

以下文档提供了线索:https://github.com/keycloak/keycloak-documentation/blob/master/securing_apps/topics/oidc/javascript-adapter.adoc#modern-browsers-with-tracking-protection