SaveTokens = правда, тупица в промежуточном программном обеспечении OpenIdConnect?

После получения токена доступа с гибридным потоком или потоком кода авторизации, чтобы скрыть их от браузера, кажется глупым использовать SaveTokens = true в промежуточном программном обеспечении OpenIdConnect (ASP.NET Core), чтобы они снова оказались в браузере.

Как лучше хранить токен доступа с помощью промежуточного программного обеспечения?


person RolandG    schedule 30.01.2017    source источник


Ответы (2)


Используя SaveTokens, промежуточное ПО сохраняет токены в cookie вместе с утверждениями пользователей. Хотя этот файл cookie может храниться в браузере, он защищен, поэтому только это приложение может его прочитать. Код браузера или на стороне клиента не может прочитать файл cookie. Таким образом, они на самом деле не попадают в браузер (как если бы они использовали неявный тип предоставления).

В противном случае вам нужно будет создать хранилище токенов, ища токены либо по аутентифицированному пользователю, либо по сеансу.

В ASP.NET Core Identity есть таблица для хранения токенов для пользователя, который вы можете использовать, но тогда это будет означать, что все ваши приложения должны быть интегрированы с библиотекой ASP.NET Identity, и к токену можно будет получить доступ из любого приложения.

person Scott Brady    schedule 31.01.2017
comment
Или вы можете реализовать кэш билетов в cookie MW и хранить все данные на сервере. - person leastprivilege; 31.01.2017
comment
Я заметил, что Доминик Байер говорит (около 46:10 в этом видео youtube.com/watch? v = YXdJ2HLAOdE ... NDC 2017 London IdentityServer4), что установка SaveTokens = True не является хорошей идеей по другим причинам, связанным с увеличением размера файлов cookie. ... А теперь я думаю об этом ... разве он не наименее привилегированный? - person Wellspring; 19.12.2017

Есть несколько ключевых отличий от неявного потока, которые делают его значительно более безопасным:

  1. В конечном итоге они отображаются в браузере как Secure и HttpOnly. файлы cookie, что означает, что они:

    1. Only sent over encrypted requests over HTTPS.
    2. Они недоступны для JavaScript.
  2. Файлы cookie также зашифрованы и могут быть прочитаны только серверным приложением ASP.NET Core. Таким образом, даже если злоумышленник каким-то образом получит их, для их расшифровки потребуется доступ к серверу или ключ шифрования, используемый поставщиком защиты данных ASP.NET Core.

person Saeb Amini    schedule 18.11.2020