Как выйти из системы из всех мест - PullRequest
0 голосов
/ 25 октября 2018

Я использую Identityserver4 с приложением Angular SPA, использующим Implicit Flow.Теперь мое требование состоит в том, чтобы выйти из системы пользователя (или, по крайней мере, отозвать токен) из всех расположений, в которые он вошел. Это будет полезно в случае, если учетные данные пользователя или токен были скомпрометированы, или разрешить администратору аннулировать доступ определенного пользователя.user.

В настоящее время я могу отозвать access_token как;

var subjectId = User?.Claims.Where(t => t.Type == "sub").FirstOrDefault().Value;
        var userGrants = await _persistedGrantService.GetAllGrantsAsync(subjectId);
        foreach (var item in userGrants)
        {
            var clientId = item.ClientId;
            if (User?.Identity.IsAuthenticated == true)
            {
                var result = _persistedGrantService.RemoveAllGrantsAsync(subjectId, clientId);
                await _interaction.RevokeUserConsentAsync(clientId);
                if (result.IsCompletedSuccessfully)
                    // delete local authentication cookie
                    await HttpContext.SignOutAsync();


                // raise the logout event
                await _events.RaiseAsync(new UserLogoutSuccessEvent(User.GetSubjectId(), User.GetDisplayName()));
            }
        }

хорошо работает, чтобы отозвать токен доступа из всех зарегистрированных сеансов во всех браузерах, пока не истек срок действия access_token.по истечении срока действия access_token он получает новый токен от IDP.в этом случае я хочу перенаправить его на страницу входа IDP.

Перенаправляет на страницу входа только для зарегистрированных в браузере.это не работает через устройства / браузеры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...