如何解决我的 angular7 项目中的 keycloak refresh /#state - 我正在使用 keycloak-angular

ter*_*ou1 5 keycloak angular7

我还尝试了 Web 来源和有效重定向 URI 的所有不同组合

钥匙斗篷领域我通过 keycloak 登录,它不断地在我的本地主机应用程序和这个 url 之间来回重定向我:http://localhost:4200/#state=166446fd-daf6-4b76-b595-583c01c663df&session_state=57ead1f3-bf41-4117-code237ed7d =8692b58b-0868-4762-b82e-acde9911dd34.57ead1f3-bf41-4117-9ddf-75e37c9248e7.1e8b5b9d-b590-453e-b496-182b9cc

我已经在 firefox 和 chrome 上尝试过,但遇到了同样的问题——它似乎在网络选项卡中寻找 keycloak.json 文件,即使我可以通过 keycloak 登录到正确的领域

GET http://localhost:4200/keycloak.json 404 (Not Found) scheduleTask @ zone.js:2969

错误 Keycloak 初始化期间发生错误。core.js:1601

未处理的承诺拒绝:Keycloak 初始化期间发生错误。; 区域: ; 任务: Promise.then ;值:Keycloak 初始化期间发生错误。不明确的

static init(): Promise<any> {
    const keycloakAuth: any = Keycloak({
        url: 'http://localhost:8080/auth',
        realm: 'ContractPortal',
        clientId: 'secretkey2',
        'ssl-required': 'external',
        'public-client': true
    });

    KeycloakService.auth.loggedIn = false;

    return new Promise((resolve, reject) => {
        keycloakAuth.init({onLoad: 'login-required'})
            .success(() => {
                console.log(keycloakAuth);
                KeycloakService.auth.loggedIn = true;
                KeycloakService.auth.authz = keycloakAuth;
                KeycloakService.auth.logoutUrl = keycloakAuth.authServerUrl
                    + '/realms/angular_keycloak/protocol/openid-connect/logout?redirect_uri='
                    + document.baseURI;
                resolve();
            })
            .error(() => {
                reject();
            });
    });
}
Run Code Online (Sandbox Code Playgroud)

如果你们中的一个人能指出我解决这个问题的正确方向,那就太好了......

我发现了另一个与我所问链接类似的问题,但不确定如何实施此解决方案!这是我的提供商设置 -
providers: [ { provide: APP_INITIALIZER, useFactory: initializer, multi: true, deps: [KeycloakService] } ],

OP将以下内容放入他的提供者中 providers: [ KeyCloakService, AssetService, { provide: LocationStrategy, useClass: PathLocationStrategy } ]

如果您需要任何其他信息,请告诉我

ter*_*ou1 4

对于遇到同样问题的任何人 - 我误解了 keycloak.json 文件并且不知道在哪里获取它 - 所以我从 keycloak 导出完整的 json 文件,但这不是你应该得到它的方式!

首先,您必须转到您的领域>客户端并单击安装

在此输入图像描述

  • 然后下载keycloak OIDC json文件

  • 然后将其放置在应用程序中的index.html 文件旁边

这解决了我的问题 - 希望它对其他人有帮助