我正在使用Angular 8.0.3,keycloak 8.0.0和keycloak-service 7.0.1
问题
我设法通过我的角度应用程序配置了身份验证。因此,每次我在没有授权标头的情况下进入应用程序时,都会被重定向到keycloak登录页面。
如果我希望未登录的人访问公共页面(例如“ / public / city”)而不重定向到密钥库登录页面,我应该使用“ bearerExcludedUrIs”吗?如果是这样,我应该穿什么?如果没有,如何进行?
从更一般的角度来看,提供的服务中的keycloak初始化函数具有initOption部分。我不完全了解其所有属性的含义(onLoad,令牌,refreshToken,idToken,timeSkew,sheckLoginIframe,checkLoginIframeInterval,responseMode,流)。如果一个愿意与我分享知识的开明人士能启发我,我将不胜感激...
我的代码
我正在使用ngDoBootstrap引导库并配置keycloak-angular。在此示例中,我尝试使用正则表达式/.*/允许所有URL(但没有任何变化)。
const keycloakService = new KeycloakService();
@NgModule({
declarations: [
AppComponent,
HeaderComponent,
LoginComponent
],
imports: [
KeycloakAngularModule,
BrowserModule,
AppRoutingModule,
CoreModule,
SharedModule,
PagesModule
],
providers: [
{
provide: KeycloakService,
useValue: keycloakService,
}
],
entryComponents: [AppComponent]
})
export class AppModule implements DoBootstrap {
async ngDoBootstrap(app) {
const { keycloakConfig } = environment;
try {
keycloakService.init({
config: keycloakConfig,
initOptions: {
onLoad: 'login-required',
checkLoginIframe: false
},
enableBearerInterceptor: true,
bearerExcludedUrls: ['.*']
}).then(() => {
app.bootstrap(AppComponent);
});
} catch (error) {
console.error('Keycloak init failed', error);
}
}
}
下面,我已经访问了几个链接
keycloak-angular github examples
A topic that raises a similar error with version 4.0.0 of the keycloak-service
答案 0 :(得分:0)
我已经与钥匙斗篷战斗了两个星期,我相信我有类似的问题。我试过的是注释keycloak初始化选项“ onLoad:'需要登录'”。 之后,当我尝试输入受AuthGuard保护的网址时,只需登录。对我来说,如果未注释掉“需要登录”,则“ bearerExcludedUrls”不起作用。
答案 1 :(得分:0)
对于bearerExcludedUrls,以下代码对我有用:
await keycloak.init({
config: {
url: 'url',
realm: 'realm',
clientId: 'clientId'
},
initOptions: {
onLoad: 'check-sso',
checkLoginIframe: false
},
bearerExcludedUrls: [
'main$'
]
});