问题描述
我正在开发一个项目,后端使用 SpringBoot 框架,前端使用 Angular8。前端和后端之间的连接是通过 Nginx 代理服务器进行的。我想与 Keycloak 集成,我使用了 keycloak-angular v.6.1.0 库(https://www.npmjs.com/package/keycloak-angular)和 keycloak-js v.9.0.3(https://www.npmjs.com/package/keycloak-js),乍一看似乎工作顺利.具体来说,登录页面出现,我提供凭据,登录成功,keycloak 发回令牌,该令牌用作发送到后端的请求的授权承载令牌。
我面临的问题是这些请求通常会成功,但有时却不会,会给出 401 未经授权的代码。当我监控这些失败的请求时,我用 jwt(https://jwt.io/) 检查了不记名令牌的有效性,它总是有效的,然后我用 curl 仔细检查,请求成功,我得到了预期的结果。
app.module.ts
export function initializer(keycloak: KeycloakService) {
return async () => {
const authenticated = await keycloak.init({
config: environment.keycloakConfig
});
if (!authenticated) {
console.log("Not authenticated")
await keycloak.login({ scope: environment.scope });
return authService.loadSecurityInfo(true)
.pipe(
map(securityInfo => {
....
})
).toPromise();
} else {
console.log("Authenticated!")
return authService.loadSecurityInfo(true)
.pipe(
map(securityInfo => {
...
})
).toPromise();
}
};
}
我提供了带有 keycloak 初始值设定项和 keycloak 登录的代码。 loadSecurityInfo 函数只是在后端的相应端点中执行 get 请求。
LoadSecurityInfo
return this.http
.get<any>(AuthService.URL.Security_INFO,{ headers: HttpUtils.getDefaultHttpHeaders() })
.pipe(
map(body => {
...
})
);
我想知道是否有人面临相同或类似的问题,并且可以让我了解可能出现的问题。 提前致谢! :D
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)