Аннулирование ссылочных токенов из кода (не HTTP-вызов конечной точки отзыва) - PullRequest
1 голос
/ 30 января 2020

Я сохраняю ссылки на токены в БД, мои пользователи имеют возможность изменить или получить сгенерированный пароль. Но если, например, пользователь забыл свой пароль и получил новый сгенерированный, то я хотел бы сделать недействительными / удалить все текущие токены для этой темы. Хорошая идея / приемлемо ли взаимодействовать напрямую с БД через efcore или для этого есть api, кроме конечной точки /connect/revocation?

1 Ответ

0 голосов
/ 30 января 2020

Нет проблем при взаимодействии с базой данных, но используйте для этого существующие службы.

В IdentityService вы можете найти store в пространстве имен IdentityServer4.Stores.

using IdentityServer4.Stores;

Вставьте хранилище в свой контроллер:

private readonly IReferenceTokenStore _referenceTokenStore;

public class MyController : Controller
{
    public MyController(IReferenceTokenStore referenceTokenStore)
    {
        _referenceTokenStore = referenceTokenStore;
    }
}

И вызовите его, чтобы удалить эталонные токены для этой комбинации пользователь / клиент:

await _referenceTokenStore.RemoveReferenceTokensAsync(subjectId, clientId);

Это будет эффективно удалить записи из базы данных. Вы не должны создавать свою собственную модель базы данных и напрямую удалять токены.

Поскольку IdentityServer является открытым исходным кодом, вы можете взглянуть на код , который используется для отзыва токенов.

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