xDs*_*xDs 5 authentication keycloak keycloak-services angular
我正在我的 Angular 2 项目中实现 Keycloak 身份验证服务。我使用服务进行登录、注销等。
对用户进行身份验证并注销似乎可行。我现在正试图保护一些路线。我现在有一个有效的 AuthGuard。为了检查用户是否登录(在 AuthGuard 中),我在服务中有一个 isAuthenticated() 方法。这是服务:
import { Injectable } from '@angular/core';
declare let Keycloak: any;
@Injectable()
export class KeycloakService {
private keycloak = new Keycloak('app/keycloak/keycloak.json');
constructor() {
this.keycloak.init({onload: 'check-sso'});
console.log(this.keycloak);
}
public login() {
this.keycloak.login();
}
public logout() {
this.keycloak.logout();
}
public isAuthenticated() {
return this.keycloak.authenticated;
}
}
Run Code Online (Sandbox Code Playgroud)
流程:用户登录,用户尝试到达受保护的路由,AuthGuard 通过 isAuthenticated() 检查用户是否已登录。
注意:我不想为完整的 Angular 应用程序验证用户。仅适用于某些路线。
问题
用户登录后,用户将被重定向到 Angular 应用程序。在此之后, isAuthenticated() 方法仍然返回 false。原因如下:
我将 Keycloak 对象记录到控制台。我发现了一些我不明白的东西。
登录重定向后的 Keycloak 对象
登录重定向后相同的 Keycloak 对象(但已扩展)
首先,经过身份验证的属性是假的。展开后的authenticated 属性为true。
题
我尝试维护 Keycloak 对象的方式是否正确?
咨询来源
和别的
根据社区在keycloak 的 github 中提供的 Angular2 示例,您可以发现与 keycloak js 适配器交互时的一些差异。主要是对经过身份验证的(可能还有用户名)的实际检查是在 init 返回的承诺上完成的。
static init(): Promise<any> {
let keycloakAuth: any = new Keycloak('keycloak.json');
KeycloakService.auth.loggedIn = false;
return new Promise((resolve, reject) => {
keycloakAuth.init({ onLoad: 'login-required' })
.success(() => {
KeycloakService.auth.loggedIn = true;
KeycloakService.auth.authz = keycloakAuth;
KeycloakService.auth.logoutUrl = keycloakAuth.authServerUrl + "/realms/demo/protocol/openid-connect/logout?redirect_uri=/angular2-product/index.html";
resolve();
})
.error(() => {
reject();
});
});
}
Run Code Online (Sandbox Code Playgroud)
此外,官方keycloak js 适配器的文档使用承诺进行身份验证检查
<head>
<script src="keycloak.js"></script>
<script>
var keycloak = Keycloak();
keycloak.init().success(function(authenticated) {
alert(authenticated ? 'authenticated' : 'not authenticated');
}).error(function() {
alert('failed to initialize');
});
</script>
</head>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9644 次 |
| 最近记录: |