Web API 2, аутентификация OWIN, SignOut не выходит из системы

Я провожу некоторые исследования для работы с целью использования токенов Bearer в качестве механизма аутентификации (т.е. пользовательский интерфейс AngularJS, аутентифицируется через OWIN в проекте Web API [2]).

У меня нормально работает логин, информация о ролях и все нормально, но я не могу получить маркер для выхода из системы.

Моя начальная конфигурация такая:

OAuthOptions = new OAuthAuthorizationServerOptions() {
    TokenEndpointPath = new PathString("/Token"),
    Provider = new ApplicationOAuthProvider(PublicClientId),
    AccessTokenExpireTimeSpan = SESSION_TIMEOUT,
    AllowInsecureHttp = true
};

И мое действие по выходу из системы просто так:

public HttpResponseMessage Logout() {
    var authentication = HttpContext.Current.GetOwinContext().Authentication;
    authentication.SignOut(DefaultAuthenticationTypes.ExternalBearer);

    return new HttpResponseMessage(HttpStatusCode.OK);
}

Я оставил все аутентификационные материалы для краткости, но для подтверждения я используюExternalBearer при настройке токена.

В моем пользовательском интерфейсе я храню токен в локальном хранилище (здесь не используются файлы cookie, что является преднамеренным дизайнерским решением). Итак, у меня естьвыйти кнопка на моем интерфейсеВыйти действие ударил и код работает нормально.

Однако, если я впоследствии выполню действие в API, которое требует авторизации, запрос все равно будет выполнен (т.е. пользователь все еще аутентифицирован, даже если ондолжен были выписаны.

Либо я упускаю что-то действительно очевидное (не в первый раз ;-), либо здесь происходит нечто более фундаментальное - наконец-то я пингую @leastprivilege, поскольку знаю, что это их область.

Любая помощь или понимание будут с благодарностью приняты.

Единственное, о чем я могу думать, это то, что токен не имеет состояния на стороне сервера / API и, следовательно, не может быть просрочен или завершен.

Если это так, думаю, я мог бы либо:

a) Добавьте токен обновления, который создает новый токен, срок действия которого истекает в прошлом. Будет ли это работать? - на самом деле отмените это, он выдаст новый токен ... старый будет по-прежнему действителен

б) Храните токен на предъявителя в базе данных и проверяйте каждый раз, удаляя токен при выходе из системы (естественно соленый, хэшированный и т. д.). Однако это только возвращает нас к серверу с состоянием.

c) Я могу (и буду) удалять токен из локального хранилища, когда кто-то явно выйдет из системы, однако токен все еще технически действителен, еслиплохой может перехватить токен. Естественно все вышеперечисленное закончитсяSSL во всяком случае, что должно препятствоватьплохие парни / девушки.

d) Возможно, именно поэтому многие люди хранят токен Bearer в cookie (как механизм хранения), поэтому, как только вы выйдете из системы, как минимум, cookie будет удален при следующем обновлении.

Извините, вышесказанное - это просто мозговая утечка, просто хочу предупредить любые вопросы