我已经将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。
答案 0 :(得分:2)
解决了这个问题。问题不是铬。问题是由于iframe。 KeyCloak将iframe附加到浏览器窗口中,然后iframe将请求发送到KeyCloak服务器以进行身份验证,然后再返回响应,并且有关响应的iframe更新父窗口KeyCloak库将附加一个iframe,这将导致无限循环。因此,我只是在KeyCloak库中添加了一个条件,如果该iframe已在窗口中,则不要追加新的iframe。
添加“ checkLoginIframe”:在keycloak服务的init方法中为true,它将解决您的问题。
请参阅以下github链接:
答案 1 :(得分:0)
就我而言, checkLoginIframe:false 没有为我解决问题。在阅读了 keycloak iframe 的文档和这里的讨论后,我重新审视了浏览器是问题所在。
我为 Brave 关闭了 Chrome、Safari 和 Shields 的第三方 cookie 阻止功能。刷新问题对我来说已经消失了。 MS Edge 不受此影响。