ValidateAntiForgeryToken блокирует новый вход

У меня очень простая реализация сервера идентификации 4, и я использую oidc-client в моем приложении angular для выполнения всего управления безопасностью. В моем сервисе аутентификации у меня есть следующее:

@Injectable()
export class AuthService {
    private manager: UserManager;
    private user: User = null;

    constructor() {
        if (!environment.production) {
            Log.logger = console;
        }
        this.manager = new UserManager(getClientSettings());
        this.manager.getUser()
                    .then(user => {
                        this.user = user;
                    });
        this.manager.events.addUserSignedOut(() => {
            this.user = null;
            this.signOut();
        });
    }

    signOut(): Promise<void> {
        return this.manager.signoutRedirect()
                           .then(() => {
                               this.manager.clearStaleState();
                           });
    }

    ...more
}

export function getClientSettings(): UserManagerSettings {
    return {
        authority: environment.authorityUrl,
        client_id: 'myclient',
        redirect_uri: `${environment.baseUrl}/auth-callback`,
        post_logout_redirect_uri: environment.baseUrl,
        response_type: 'id_token token',
        scope: 'openid profile myapi',
        filterProtocolClaims: true,
        loadUserInfo: true,
        automaticSilentRenew: true,
        revokeAccessTokenOnSignout : true,
        silent_redirect_uri: `${environment.baseUrl}/silent-renew-callback`,
    };
}

Все работает как шарм, поэтому я могу войти / выйти без каких-либо проблем, обновление токена работает, как ожидалось, и пока все хорошо. Однако я решил реализовать «индивидуальное» поведение, когда пользователь открывает приложение на нескольких вкладках одного и того же браузера, и одна из них выходит из системы. Затем запускается событие UserSignedOut, и я выхожу из остальных вкладок, которые могут быть открыты. У меня проблема в том, что когда пользователь возвращается, ПЕРВАЯ попытка входа в систему выполняется правильно, однако любой последующий запрос входа с любой другой вкладки приводит к 400 - ПЛОХОМУ ЗАПРОСУ (удаление атрибута токена защиты от подделки из метода входа в мой IS4 тогда он работает, но я не хочу этого делать).

Если вы обновили вкладку, вы войдете в систему, поэтому мне кажется, что что-то не так с самим фактическим состоянием?

Я не уверен, следует ли мне вызывать какой-либо другой метод в моем AuthService перед выходом из системы или мне следует повторно реализовать ValidateAntiForgeryToken с настраиваемым поведением для этого.

Любая помощь очень ценится, спасибо!


person Carlos Torrecillas    schedule 15.03.2019    source источник
comment
Вы это решили? Поведение недостаточно описано: вы предварительно загружали страницу входа после выхода из системы на каждой вкладке, поэтому пользователь должен заполнить и опубликовать форму? Если это так, AntiForgery не работает, поскольку он привязан к текущему идентификатору, и идентификатор изменяется после первого успешного входа в систему.   -  person d_f    schedule 03.06.2019
comment
Я решил эту серверную часть. Я проверяю, вошел ли пользователь уже в систему, если да, то я обойду проверку токена защиты от подделки.   -  person Carlos Torrecillas    schedule 03.06.2019
comment
Тогда хорошо! думаю, вы реализовали что-то похожее на один из этих   -  person d_f    schedule 03.06.2019
comment
В самом деле, хотя вместо того, чтобы быть на уровне атрибутов, я напрямую использовал IAntiforgery на уровне контроллера для проверки   -  person Carlos Torrecillas    schedule 03.06.2019