为什么在使用keycloak JavaScript适配器时不允许访问?

问题描述:

我有一个Django应用程序通过Keycloak进行身份验证,如here所述。从这个Django应用程序,我现在要调用一个微服务也受到Keycloak保护使用相同的登录名。我不希望suer必须重新登录。我正在尝试JavaScript adapter。我想配置它是这样的:为什么在使用keycloak JavaScript适配器时不允许访问?

<script> 
    var keycloak = Keycloak({ 
     url: "{{Keycloakurl}}/auth", 
     realm: 'myrealm', 
     clientId: 'myclient' 
    }); 
    keycloak.init({ onLoad: 'login-required' }).success(function(authenticated) { 
     alert(authenticated ? 'authenticated' : 'not authenticated'); 
    }).error(function() { 
     alert('failed to initialize'); 
    }); 
    </script> 

但是当我加载页面我得到这种错误消息:

Failed to load http://keycloak.FOO.com/auth/realms/toxhq/protocol/openid-connect/token: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://myapp.Foo.com' is therefore not allowed access.

我不能完全肯定这是为什么,但我开始怀疑这是否是因为same-origin policy在某种程度上。

如何设置我想与Keycloak保护的微服务共享一个Keycloak身份验证的功能?

您必须在Keycloak控制台中设置myclient的允许原点。 (检查客户详情屏幕上的最后一个输入框)