версии
Мое приложение Использование Angular v13.3.0, поэтому самые высокие версии, которые я могу установить,-это 10.0.2 для KeyCloak-angular и 18.0.1 для KeyCloak-js. /> Мое приложение-это веб-приложение, которое также составлено для Android и iOS. < /P>
Конфигурация My KeyCloak должна для важных частей < /p>
Функция initkeycloak в app.module.ts и auth-interceptor (внедряет httpinterceptor).
Код: Выделить всё
export function initKeycloak(
keycloak: KeycloakService
): () => Promise {
const redirectUri = Capacitor.isNativePlatform()
? 'io.family-app://callback'
: window.location.href;
return () =>
keycloak.init({
config: {
url: environment.authUrl,
realm: 'family-realm',
clientId: 'family-app',
},
initOptions: {
onLoad: 'login-required',
redirectUri: redirectUri,
silentCheckSsoRedirectUri: Capacitor.isNativePlatform()
? undefined
: window.location.origin + '/silent-check-sso.html',
checkLoginIframe: !Capacitor.isNativePlatform(),
pkceMethod: 'S256',
responseMode: 'fragment',
},
});
}
Код: Выделить всё
intercept(
req: HttpRequest,
next: HttpHandler
): Observable {
return from(this.keycloak.isLoggedIn()).pipe(
switchMap((isLoggedIn) => {
if (!isLoggedIn) {
const redirectUri = Capacitor.isNativePlatform()
? 'io.family-app://callback'
: window.location.href;
this.keycloak.login({
redirectUri: redirectUri,
});
return new Observable();
}
return from(this.keycloak.getToken()).pipe(
switchMap((token) => {
return next.handle(
req.clone({
setHeaders: {
Authorization: `Bearer ${token}`,
'Content-Type': 'application/json',
},
})
);
})
);
})
);
}
}
< /code>
Также у меня есть в AndroidManifest фильтр намерения для обработки обратного вызова < /p>
Когда я запускаю свое приложение в веб-режиме, все работает нормально, задача завершается, а перехват включает в себя токен доступа в авторизацию. эмулятор. Процесс инициации запускается, но заканчивается в KeyCloak с неверной ошибкой параметров.
Я проверяю консоль администратора keyCloak, а URL-адрес uRL вызывается с помощью redirect_uri = http: // localhost .
Похоже, что keycloak-angular переопределяет мой redirect с http://codep:///codep://codep:///codep: ... ep://codep urt по умолчанию.
Что я делаю не так?
Подробнее здесь: https://stackoverflow.com/questions/796 ... ak-angular