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

时间:2017-10-19 13:49:05

标签: javascript django keycloak

我有一个Django应用程序通过Keycloak进行身份验证,如here所述。从这个Django应用程序,我现在想要使用相同的登录名称调用受Keycloak保护的微服务。我不希望suer必须再次登录。我想试试JavaScript adapter。我试图配置它像:

  <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身份验证来设置我想要的功能?

1 个答案:

答案 0 :(得分:2)

您必须在Keycloak控制台中为myclient设置允许的来源。 (检查客户端详细信息屏幕上的最后一个输入框)