Я использую сервер идентификации 4 с библиотекой oidc-client на веб-странице angular 2. Вызовы входа в систему, выхода из системы и вызовы API работают правильно без каких-либо проблем. Недавно я начал пытаться заставить функцию автоматического обновления токена работать и на веб-странице. Я вижу, что веб-страница, определенная в режиме silent-redirect, создается в iFrame, и я вижу вызовы службы id4, но всегда получаю ошибку тайм-аута в iframe и новый токен не получен. Будем очень признательны за любую помощь или предложения о том, что мне не хватает или что я делаю неправильно. Ниже я привел соответствующий код на стороне клиента. Я вижу, что срабатывает событие истечения срока действия токена. Заранее большое спасибо.
angular2 сервис
import { UserManager, Log, MetadataService, User, WebStorageStateStore } from 'oidc-client';
export const settings: any = {
authority: 'http://10.3.30.215:8885',
client_id: 'tps',
redirect_uri: 'http://10.3.30.215:4201/auth.html',
response_type: 'id_token token',
automaticSilentRenew: true,
monitorSession: true,
scope: 'openid scope1 scope2 offline_access',
post_logout_redirect_uri: 'http://10.3.30.215:4201',
silent_redirect_uri: 'http://10.3.30.215:4201/silent_renew.html',
loadUserInfo: true
};
public mgr: UserManager = new UserManager(settings);
constructor(private http: Http) {
Log.logger = console;
Log.level = Log.DEBUG;
}
login() {
this.mgr.clearStaleState().then(() => {
this.mgr.signinRedirect();
});
}
silent_renew.html:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<script src="oidc-client.js"></script>
<script>
new Oidc.UserManager().signinSilentCallback();
</script>
</body>
</html>