【发布时间】:2020-11-23 10:08:42
【问题描述】:
我正在开发一个网络应用程序,我使用 angular 作为前端,使用 keycloak 作为安全性。
我在角度方面使用以下软件包:
keycloak-js@10.0.1
keycloak-angular@8.0.1
在前端(角度应用程序)上,我正在尝试使用以下服务检索用户详细信息:
import { Injectable } from '@angular/core';
import { KeycloakService } from 'keycloak-angular';
@Injectable({
providedIn: 'root'
})
export class JwtDecoderService {
public profile;
getUserProfile(){
this.keycloakService.loadUserProfile().then(x => this.profile = x)
}
constructor(public keycloakService: KeycloakService) {}
}
我认为,对 loadUserProfile() 的调用会向 keycloak 服务器的客户端(帐户)发起 GET 请求。
我收到一条 CORS 错误消息作为响应,见下文:
我尝试将 localhost:4200 添加为所用客户端的 Web Origins,在 Angular 部分配置为我的客户端是 newClient,但上述请求是针对帐户客户端的。
最后,我将 * 作为涉及 newClient 和 account 的所有客户端的 Web 源。
这是我的客户名单:
正如我提到的,这是我在 angular 中指出的客户:
export const environment = {
production: false,
keycloakConfig: {
clientId: 'newClient',
realm: 'SportEmploy',
url: 'http://localhost:8083/auth'
}
};
我已尝试将两个客户端变体的 WebOrigins http://localhost:4200/ http://localhost:4200 http://localhost:4200/* + 和 * ,这些都不起作用。
这就是我在有角度的一面开始 keycloak 的方式:
import {KeycloakService, KeycloakOptions} from 'keycloak-angular'
import { environment } from './environments/environment'
export function initializer(keycloak: KeycloakService): () => Promise<any> {
const options: KeycloakOptions = {
config: environment.keycloakConfig
};
return (): Promise<any> => keycloak.init(options);
}
你知道我的 keycloak 配置有什么问题吗?
【问题讨论】: