Учетные данные сеанса, привязанные к устройству (DBSC)

Учетные данные сеанса, привязанного к устройству (DBSC), усиливают аутентификацию за счет обеспечения аппаратной безопасности сеанса.

Дэниел Руби
Daniel Rubery

Введение

Многие веб-сайты используют долгоживущие файлы cookie для аутентификации пользователей, но они подвержены перехвату сеанса. Учетные данные сеанса с привязкой к устройству (DBSC) добавляют уровень аппаратной безопасности для снижения этого риска, гарантируя привязку сеансов к конкретным устройствам.

Это руководство предназначено для разработчиков, которые поддерживают потоки аутентификации в веб-приложениях. В нем объясняется, как работает DBSC и как интегрировать его в ваш сайт.

Как работает ДБСК

На высоком уровне DBSC представляет пару криптографических ключей, связанную с устройством пользователя. Chrome генерирует эту пару ключей во время входа в систему и сохраняет закрытый ключ на защищенном оборудовании, например в доверенном платформенном модуле (TPM) , если он доступен. В сеансах используются кратковременные файлы cookie. Когда срок действия одного из этих файлов cookie истекает, Chrome доказывает владение закрытым ключом, прежде чем обновлять его. Этот процесс связывает непрерывность сеанса с исходным устройством.

Если устройство пользователя не поддерживает безопасное хранение ключей, DBSC корректно возвращается к стандартному поведению, не нарушая поток аутентификации.

Обзор реализации

Чтобы интегрировать DBSC в ваше приложение, вам необходимо внести следующие изменения:

  • Измените процесс входа в систему, включив в него заголовок Sec-Session-Registration .
  • Добавьте конечную точку регистрации сеанса, которая:
    • Связывает открытый ключ с сеансом пользователя.
    • Обслуживает конфигурацию сеанса.
    • Переход на кратковременные файлы cookie.
  • Добавьте конечную точку обновления для обработки обновления файлов cookie и проверки владения ключом.

Большинство существующих конечных точек не требуют каких-либо изменений. DBSC спроектирован так, чтобы быть аддитивным и не нарушающим работу.

Если необходимый кратковременный файл cookie отсутствует или срок его действия истек, Chrome приостанавливает запрос и пытается обновить файл cookie. Это позволяет вашему приложению продолжать использовать обычные проверки файлов cookie сеанса для подтверждения входа пользователя в систему. Поскольку это соответствует типичным потокам аутентификации, DBSC работает с минимальными изменениями в вашей логике входа.

Этапы реализации

В этом разделе описаны необходимые изменения в вашей системе аутентификации, в том числе способы изменения процесса входа в систему, обработки регистрации сеанса и управления кратковременными обновлениями файлов cookie. Каждый шаг предназначен для плавной интеграции с существующей инфраструктурой.

Шаги реализации соответствуют обычному процессу, который происходит с вошедшим в систему пользователем, когда DBSC активен: регистрация при входе в систему, за которой следуют регулярные кратковременные обновления файлов cookie. Вы можете протестировать и реализовать каждый шаг независимо, в зависимости от уровня чувствительности вашего приложения к сеансу.

Диаграмма, показывающая поток DBSC

1. Измените процесс входа в систему

После того как пользователь войдет в систему, ответьте ему долгоживущим файлом cookie и заголовком Sec-Session-Registration . Например:

Следующий заголовок ответа HTTP возвращается после успешной регистрации сеанса:

HTTP/1.1 200 OK Sec-Session-Registration: (ES256 RS256); path="/StartSession" Set-Cookie: auth_cookie=session_id; max-age=2592000; Domain=example.com; Secure; SameSite=Lax 

Если устройство поддерживает безопасное хранение ключей, Chrome связывается с конечной точкой /StartSession с помощью открытого ключа в веб-токене JSON (JWT).

auth_cookie в этом примере представляет ваш токен сеанса. Вы можете назвать этот файл cookie как угодно, при условии, что оно соответствует полю name в конфигурации вашего сеанса и последовательно используется во всем вашем приложении.

2. Реализуйте конечную точку регистрации сеанса.

В /StartSession ваш сервер должен:

  • Свяжите полученный открытый ключ с сеансом пользователя.
  • Ответьте конфигурацией сеанса.
  • Замените долгоживущий файл cookie на недолговечный.

В следующем примере срок действия кратковременного файла cookie истекает через 10 минут:

HTTP/1.1 200 OK Set-Cookie: auth_cookie=short_lived_grant; Max-Age=600; # Expires after 10 minutesSet-Cookie: Domain=example.com; Secure; SameSite=Lax  {   "session_identifier": "session_id",   "refresh_url": "/RefreshEndpoint",   "scope": {     "origin": "https://example.com",     "include_site": true,     "scope_specification": [       { "type": "exclude", "domain": "*.example.com", "path": "/static" }     ]   },   "credentials": [{     "type": "cookie",     "name": "auth_cookie",     "attributes": "Domain=example.com; Secure; SameSite=Lax"   }] } 

3. Реализация конечной точки обновления

Когда срок действия недолговечного файла cookie истекает, Chrome инициирует процесс обновления, чтобы доказать владение закрытым ключом. Этот процесс включает в себя скоординированные действия Chrome и вашего сервера:

  1. Chrome откладывает запрос пользователя к вашему приложению и отправляет запрос на обновление в /RefreshEndpoint :

    POST /RefreshEndpoint HTTP/1.1 Sec-Session-Id: session_id 
  2. Ваш сервер отвечает вызовом:

    HTTP/1.1 401 Unauthorized Sec-Session-Challenge: "challenge_value" 
  3. Chrome подписывает запрос, используя сохраненный закрытый ключ, и повторяет запрос:

    POST /RefreshEndpoint HTTP/1.1 Sec-Session-Id: session_id Sec-Session-Response: <JWT proof> 
  4. Ваш сервер проверяет подписанное доказательство и выдает обновленный недолговечный файл cookie:

    HTTP/1.1 200 OK  Set-Cookie: auth_cookie=short_lived_grant; Max-Age=600; Domain=example.com; Secure; SameSite=Lax 
  5. Chrome получает обновленный файл cookie и возобновляет исходный отложенный запрос.

Альтернативный шаблон интеграции

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

  • Долгосрочный файл cookie сохраняется даже в случае сбоя DBSC.
  • Кратковременный файл cookie обновляется с помощью DBSC и необходим для конфиденциальных операций.

Этот шаблон дает сайтам больше контроля над тем, как обрабатывать крайние случаи.

Предостережения и резервное поведение

Chrome может пропускать операции DBSC и отправлять запросы без недолговечных файлов cookie, управляемых DBSC, в следующих сценариях:

  • Конечная точка обновления недоступна из-за сетевых ошибок или проблем с сервером.
  • Доверенный платформенный модуль занят или возникли ошибки подписи. Поскольку TPM используется совместно всеми системными процессами, чрезмерные обновления могут превысить его ограничения по скорости.
  • Кратковременный файл cookie, управляемый DBSC, является сторонним файлом cookie, и пользователь заблокировал сторонние файлы cookie в настройках своего браузера.

В таких ситуациях Chrome возвращается к использованию долгоживущего файла cookie, если он все еще присутствует. Этот запасной вариант работает только в том случае, если ваша реализация включает в себя как долгосрочные, так и кратковременные файлы cookie. Если нет, Chrome отправляет запрос без файла cookie.

Краткое содержание

Учетные данные сеанса, привязанного к устройству, повышают безопасность сеанса с минимальными изменениями в вашем приложении. Они обеспечивают более надежную защиту от перехвата сеанса, привязывая сеансы к конкретным устройствам. Большинство пользователей получают выгоду, не испытывая каких-либо сбоев, а DBSC изящно переходит на неподдерживаемое оборудование.

Для получения дополнительной информации обратитесь к спецификации DBSC .

,

Учетные данные сеанса, привязанного к устройству (DBSC), усиливают аутентификацию за счет обеспечения аппаратной безопасности сеанса.

Дэниел Руби
Daniel Rubery

Введение

Многие веб-сайты используют долгоживущие файлы cookie для аутентификации пользователей, но они подвержены перехвату сеанса. Учетные данные сеанса с привязкой к устройству (DBSC) добавляют уровень аппаратной безопасности для снижения этого риска, гарантируя привязку сеансов к конкретным устройствам.

Это руководство предназначено для разработчиков, которые поддерживают потоки аутентификации в веб-приложениях. В нем объясняется, как работает DBSC и как интегрировать его в ваш сайт.

Как работает ДБСК

На высоком уровне DBSC представляет пару криптографических ключей, связанную с устройством пользователя. Chrome генерирует эту пару ключей во время входа в систему и сохраняет закрытый ключ на защищенном оборудовании, например в доверенном платформенном модуле (TPM) , если он доступен. В сеансах используются кратковременные файлы cookie. Когда срок действия одного из этих файлов cookie истекает, Chrome доказывает владение закрытым ключом, прежде чем обновлять его. Этот процесс связывает непрерывность сеанса с исходным устройством.

Если устройство пользователя не поддерживает безопасное хранение ключей, DBSC корректно возвращается к стандартному поведению, не нарушая поток аутентификации.

Обзор реализации

Чтобы интегрировать DBSC в ваше приложение, вам необходимо внести следующие изменения:

  • Измените процесс входа в систему, включив в него заголовок Sec-Session-Registration .
  • Добавьте конечную точку регистрации сеанса, которая:
    • Связывает открытый ключ с сеансом пользователя.
    • Обслуживает конфигурацию сеанса.
    • Переход на кратковременные файлы cookie.
  • Добавьте конечную точку обновления для обработки обновления файлов cookie и проверки владения ключом.

Большинство существующих конечных точек не требуют каких-либо изменений. DBSC спроектирован так, чтобы быть аддитивным и не нарушающим работу.

Если необходимый кратковременный файл cookie отсутствует или срок его действия истек, Chrome приостанавливает запрос и пытается обновить файл cookie. Это позволяет вашему приложению продолжать использовать обычные проверки файлов cookie сеанса для подтверждения входа пользователя в систему. Поскольку это соответствует типичным потокам аутентификации, DBSC работает с минимальными изменениями в вашей логике входа.

Этапы реализации

В этом разделе описаны необходимые изменения в вашей системе аутентификации, в том числе способы изменения процесса входа в систему, обработки регистрации сеанса и управления кратковременными обновлениями файлов cookie. Каждый шаг предназначен для плавной интеграции с существующей инфраструктурой.

Шаги реализации соответствуют обычному процессу, который происходит с вошедшим в систему пользователем, когда DBSC активен: регистрация при входе в систему, за которой следуют регулярные кратковременные обновления файлов cookie. Вы можете протестировать и реализовать каждый шаг независимо, в зависимости от уровня чувствительности вашего приложения к сеансу.

Диаграмма, показывающая поток DBSC

1. Измените процесс входа в систему

После того как пользователь войдет в систему, ответьте ему долгоживущим файлом cookie и заголовком Sec-Session-Registration . Например:

Следующий заголовок ответа HTTP возвращается после успешной регистрации сеанса:

HTTP/1.1 200 OK Sec-Session-Registration: (ES256 RS256); path="/StartSession" Set-Cookie: auth_cookie=session_id; max-age=2592000; Domain=example.com; Secure; SameSite=Lax 

Если устройство поддерживает безопасное хранение ключей, Chrome связывается с конечной точкой /StartSession с помощью открытого ключа в веб-токене JSON (JWT).

auth_cookie в этом примере представляет ваш токен сеанса. Вы можете назвать этот файл cookie как угодно, при условии, что оно соответствует полю name в конфигурации вашего сеанса и последовательно используется во всем вашем приложении.

2. Реализуйте конечную точку регистрации сеанса.

В /StartSession ваш сервер должен:

  • Свяжите полученный открытый ключ с сеансом пользователя.
  • Ответьте конфигурацией сеанса.
  • Замените долгоживущий файл cookie на недолговечный.

В следующем примере срок действия кратковременного файла cookie истекает через 10 минут:

HTTP/1.1 200 OK Set-Cookie: auth_cookie=short_lived_grant; Max-Age=600; # Expires after 10 minutesSet-Cookie: Domain=example.com; Secure; SameSite=Lax  {   "session_identifier": "session_id",   "refresh_url": "/RefreshEndpoint",   "scope": {     "origin": "https://example.com",     "include_site": true,     "scope_specification": [       { "type": "exclude", "domain": "*.example.com", "path": "/static" }     ]   },   "credentials": [{     "type": "cookie",     "name": "auth_cookie",     "attributes": "Domain=example.com; Secure; SameSite=Lax"   }] } 

3. Реализация конечной точки обновления

Когда срок действия недолговечного файла cookie истекает, Chrome инициирует процесс обновления, чтобы доказать владение закрытым ключом. Этот процесс включает в себя скоординированные действия Chrome и вашего сервера:

  1. Chrome откладывает запрос пользователя к вашему приложению и отправляет запрос на обновление в /RefreshEndpoint :

    POST /RefreshEndpoint HTTP/1.1 Sec-Session-Id: session_id 
  2. Ваш сервер отвечает вызовом:

    HTTP/1.1 401 Unauthorized Sec-Session-Challenge: "challenge_value" 
  3. Chrome подписывает запрос, используя сохраненный закрытый ключ, и повторяет запрос:

    POST /RefreshEndpoint HTTP/1.1 Sec-Session-Id: session_id Sec-Session-Response: <JWT proof> 
  4. Ваш сервер проверяет подписанное доказательство и выдает обновленный недолговечный файл cookie:

    HTTP/1.1 200 OK  Set-Cookie: auth_cookie=short_lived_grant; Max-Age=600; Domain=example.com; Secure; SameSite=Lax 
  5. Chrome получает обновленный файл cookie и возобновляет исходный отложенный запрос.

Альтернативный шаблон интеграции

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

  • Долгосрочный файл cookie сохраняется даже в случае сбоя DBSC.
  • Кратковременный файл cookie обновляется с помощью DBSC и необходим для конфиденциальных операций.

Этот шаблон дает сайтам больше контроля над тем, как обрабатывать крайние случаи.

Предостережения и резервное поведение

Chrome может пропускать операции DBSC и отправлять запросы без недолговечных файлов cookie, управляемых DBSC, в следующих сценариях:

  • Конечная точка обновления недоступна из-за сетевых ошибок или проблем с сервером.
  • Доверенный платформенный модуль занят или возникли ошибки подписи. Поскольку TPM используется совместно всеми системными процессами, чрезмерные обновления могут превысить его ограничения по скорости.
  • Кратковременный файл cookie, управляемый DBSC, является сторонним файлом cookie, и пользователь заблокировал сторонние файлы cookie в настройках своего браузера.

В таких ситуациях Chrome возвращается к использованию долгоживущего файла cookie, если он все еще присутствует. Этот запасной вариант работает только в том случае, если ваша реализация включает в себя как долгосрочные, так и кратковременные файлы cookie. Если нет, Chrome отправляет запрос без файла cookie.

Краткое содержание

Учетные данные сеанса, привязанного к устройству, повышают безопасность сеанса с минимальными изменениями в вашем приложении. Они обеспечивают более надежную защиту от перехвата сеанса, привязывая сеансы к конкретным устройствам. Большинство пользователей получают выгоду, не испытывая каких-либо сбоев, а DBSC изящно переходит на неподдерживаемое оборудование.

Для получения дополнительной информации обратитесь к спецификации DBSC .

,

Учетные данные сеанса, привязанного к устройству (DBSC), усиливают аутентификацию за счет обеспечения аппаратной безопасности сеанса.

Дэниел Руби
Daniel Rubery

Введение

Многие веб-сайты используют долгоживущие файлы cookie для аутентификации пользователей, но они подвержены перехвату сеанса. Учетные данные сеанса с привязкой к устройству (DBSC) добавляют уровень аппаратной безопасности для снижения этого риска, гарантируя привязку сеансов к конкретным устройствам.

Это руководство предназначено для разработчиков, которые поддерживают потоки аутентификации в веб-приложениях. В нем объясняется, как работает DBSC и как интегрировать его в ваш сайт.

Как работает ДБСК

На высоком уровне DBSC представляет пару криптографических ключей, связанную с устройством пользователя. Chrome генерирует эту пару ключей во время входа в систему и сохраняет закрытый ключ на защищенном оборудовании, например в доверенном платформенном модуле (TPM) , если он доступен. В сеансах используются кратковременные файлы cookie. Когда срок действия одного из этих файлов cookie истекает, Chrome доказывает владение закрытым ключом, прежде чем обновлять его. Этот процесс связывает непрерывность сеанса с исходным устройством.

Если устройство пользователя не поддерживает безопасное хранение ключей, DBSC корректно возвращается к стандартному поведению, не нарушая поток аутентификации.

Обзор реализации

Чтобы интегрировать DBSC в ваше приложение, вам необходимо внести следующие изменения:

  • Измените процесс входа в систему, включив в него заголовок Sec-Session-Registration .
  • Добавьте конечную точку регистрации сеанса, которая:
    • Связывает открытый ключ с сеансом пользователя.
    • Обслуживает конфигурацию сеанса.
    • Переход на кратковременные файлы cookie.
  • Добавьте конечную точку обновления для обработки обновления файлов cookie и проверки владения ключом.

Большинство существующих конечных точек не требуют каких-либо изменений. DBSC спроектирован так, чтобы быть аддитивным и не нарушающим работу.

Если необходимый кратковременный файл cookie отсутствует или срок его действия истек, Chrome приостанавливает запрос и пытается обновить файл cookie. Это позволяет вашему приложению продолжать использовать обычные проверки файлов cookie сеанса для подтверждения входа пользователя в систему. Поскольку это соответствует типичным потокам аутентификации, DBSC работает с минимальными изменениями в вашей логике входа.

Этапы реализации

В этом разделе описаны необходимые изменения в вашей системе аутентификации, в том числе способы изменения процесса входа в систему, обработки регистрации сеанса и управления кратковременными обновлениями файлов cookie. Каждый шаг предназначен для плавной интеграции с существующей инфраструктурой.

Шаги реализации соответствуют обычному процессу, который происходит с вошедшим в систему пользователем, когда DBSC активен: регистрация при входе в систему, за которой следуют регулярные кратковременные обновления файлов cookie. Вы можете протестировать и реализовать каждый шаг независимо, в зависимости от уровня чувствительности вашего приложения к сеансу.

Диаграмма, показывающая поток DBSC

1. Измените процесс входа в систему

После того как пользователь войдет в систему, ответьте ему долгоживущим файлом cookie и заголовком Sec-Session-Registration . Например:

Следующий заголовок ответа HTTP возвращается после успешной регистрации сеанса:

HTTP/1.1 200 OK Sec-Session-Registration: (ES256 RS256); path="/StartSession" Set-Cookie: auth_cookie=session_id; max-age=2592000; Domain=example.com; Secure; SameSite=Lax 

Если устройство поддерживает безопасное хранение ключей, Chrome связывается с конечной точкой /StartSession с помощью открытого ключа в веб-токене JSON (JWT).

auth_cookie в этом примере представляет ваш токен сеанса. Вы можете назвать этот файл cookie как угодно, при условии, что оно соответствует полю name в конфигурации вашего сеанса и последовательно используется во всем вашем приложении.

2. Реализуйте конечную точку регистрации сеанса.

В /StartSession ваш сервер должен:

  • Свяжите полученный открытый ключ с сеансом пользователя.
  • Ответьте конфигурацией сеанса.
  • Замените долгоживущий файл cookie на недолговечный.

В следующем примере срок действия кратковременного файла cookie истекает через 10 минут:

HTTP/1.1 200 OK Set-Cookie: auth_cookie=short_lived_grant; Max-Age=600; # Expires after 10 minutesSet-Cookie: Domain=example.com; Secure; SameSite=Lax  {   "session_identifier": "session_id",   "refresh_url": "/RefreshEndpoint",   "scope": {     "origin": "https://example.com",     "include_site": true,     "scope_specification": [       { "type": "exclude", "domain": "*.example.com", "path": "/static" }     ]   },   "credentials": [{     "type": "cookie",     "name": "auth_cookie",     "attributes": "Domain=example.com; Secure; SameSite=Lax"   }] } 

3. Реализация конечной точки обновления

Когда срок действия недолговечного файла cookie истекает, Chrome инициирует процесс обновления, чтобы доказать владение закрытым ключом. Этот процесс включает в себя скоординированные действия Chrome и вашего сервера:

  1. Chrome откладывает запрос пользователя к вашему приложению и отправляет запрос на обновление в /RefreshEndpoint :

    POST /RefreshEndpoint HTTP/1.1 Sec-Session-Id: session_id 
  2. Ваш сервер отвечает вызовом:

    HTTP/1.1 401 Unauthorized Sec-Session-Challenge: "challenge_value" 
  3. Chrome подписывает запрос, используя сохраненный закрытый ключ, и повторяет запрос:

    POST /RefreshEndpoint HTTP/1.1 Sec-Session-Id: session_id Sec-Session-Response: <JWT proof> 
  4. Ваш сервер проверяет подписанное доказательство и выдает обновленный недолговечный файл cookie:

    HTTP/1.1 200 OK  Set-Cookie: auth_cookie=short_lived_grant; Max-Age=600; Domain=example.com; Secure; SameSite=Lax 
  5. Chrome получает обновленный файл cookie и возобновляет исходный отложенный запрос.

Альтернативный шаблон интеграции

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

  • Долгосрочный файл cookie сохраняется даже в случае сбоя DBSC.
  • Кратковременный файл cookie обновляется с помощью DBSC и необходим для конфиденциальных операций.

Этот шаблон дает сайтам больше контроля над тем, как обрабатывать крайние случаи.

Предостережения и резервное поведение

Chrome может пропускать операции DBSC и отправлять запросы без недолговечных файлов cookie, управляемых DBSC, в следующих сценариях:

  • Конечная точка обновления недоступна из-за сетевых ошибок или проблем с сервером.
  • Доверенный платформенный модуль занят или возникли ошибки подписи. Поскольку TPM используется совместно всеми системными процессами, чрезмерные обновления могут превысить его ограничения по скорости.
  • Кратковременный файл cookie, управляемый DBSC, является сторонним файлом cookie, и пользователь заблокировал сторонние файлы cookie в настройках своего браузера.

В таких ситуациях Chrome возвращается к использованию долгоживущего файла cookie, если он все еще присутствует. Этот запасной вариант работает только в том случае, если ваша реализация включает в себя как долгосрочные, так и кратковременные файлы cookie. Если нет, Chrome отправляет запрос без файла cookie.

Краткое содержание

Учетные данные сеанса, привязанного к устройству, повышают безопасность сеанса с минимальными изменениями в вашем приложении. Они обеспечивают более надежную защиту от перехвата сеанса, привязывая сеансы к конкретным устройствам. Большинство пользователей получают выгоду, не испытывая каких-либо сбоев, а DBSC изящно переходит на неподдерживаемое оборудование.

Для получения дополнительной информации обратитесь к спецификации DBSC .

,

Учетные данные сеанса, привязанного к устройству (DBSC), усиливают аутентификацию за счет обеспечения аппаратной безопасности сеанса.

Дэниел Руби
Daniel Rubery

Введение

Многие веб-сайты используют долгоживущие файлы cookie для аутентификации пользователей, но они подвержены перехвату сеанса. Учетные данные сеанса с привязкой к устройству (DBSC) добавляют уровень аппаратной безопасности для снижения этого риска, гарантируя привязку сеансов к конкретным устройствам.

Это руководство предназначено для разработчиков, которые поддерживают потоки аутентификации в веб-приложениях. В нем объясняется, как работает DBSC и как интегрировать его в ваш сайт.

Как работает ДБСК

На высоком уровне DBSC представляет пару криптографических ключей, связанную с устройством пользователя. Chrome генерирует эту пару ключей во время входа в систему и сохраняет закрытый ключ на защищенном оборудовании, например в доверенном платформенном модуле (TPM) , если он доступен. В сеансах используются кратковременные файлы cookie. Когда срок действия одного из этих файлов cookie истекает, Chrome доказывает владение закрытым ключом, прежде чем обновлять его. Этот процесс связывает непрерывность сеанса с исходным устройством.

Если устройство пользователя не поддерживает безопасное хранение ключей, DBSC корректно возвращается к стандартному поведению, не нарушая поток аутентификации.

Обзор реализации

Чтобы интегрировать DBSC в ваше приложение, вам необходимо внести следующие изменения:

  • Измените процесс входа в систему, включив в него заголовок Sec-Session-Registration .
  • Добавьте конечную точку регистрации сеанса, которая:
    • Связывает открытый ключ с сеансом пользователя.
    • Обслуживает конфигурацию сеанса.
    • Переход на кратковременные файлы cookie.
  • Добавьте конечную точку обновления для обработки обновления файлов cookie и проверки владения ключом.

Большинство существующих конечных точек не требуют каких-либо изменений. DBSC спроектирован так, чтобы быть аддитивным и не нарушающим работу.

Если необходимый кратковременный файл cookie отсутствует или срок его действия истек, Chrome приостанавливает запрос и пытается обновить файл cookie. Это позволяет вашему приложению продолжать использовать обычные проверки файлов cookie сеанса для подтверждения входа пользователя в систему. Поскольку это соответствует типичным потокам аутентификации, DBSC работает с минимальными изменениями в вашей логике входа.

Этапы реализации

В этом разделе описаны необходимые изменения в вашей системе аутентификации, в том числе способы изменения процесса входа в систему, обработки регистрации сеанса и управления кратковременными обновлениями файлов cookie. Каждый шаг предназначен для плавной интеграции с существующей инфраструктурой.

Шаги реализации соответствуют обычному процессу, который происходит с вошедшим в систему пользователем, когда DBSC активен: регистрация при входе в систему, за которой следуют регулярные кратковременные обновления файлов cookie. Вы можете протестировать и реализовать каждый шаг независимо, в зависимости от уровня чувствительности вашего приложения к сеансу.

Диаграмма, показывающая поток DBSC

1. Измените процесс входа в систему

После того как пользователь войдет в систему, ответьте ему долгоживущим файлом cookie и заголовком Sec-Session-Registration . Например:

Следующий заголовок ответа HTTP возвращается после успешной регистрации сеанса:

HTTP/1.1 200 OK Sec-Session-Registration: (ES256 RS256); path="/StartSession" Set-Cookie: auth_cookie=session_id; max-age=2592000; Domain=example.com; Secure; SameSite=Lax 

Если устройство поддерживает безопасное хранение ключей, Chrome связывается с конечной точкой /StartSession с помощью открытого ключа в веб-токене JSON (JWT).

auth_cookie в этом примере представляет ваш токен сеанса. Вы можете назвать этот файл cookie как угодно, при условии, что оно соответствует полю name в конфигурации вашего сеанса и последовательно используется во всем вашем приложении.

2. Реализуйте конечную точку регистрации сеанса.

В /StartSession ваш сервер должен:

  • Свяжите полученный открытый ключ с сеансом пользователя.
  • Ответьте конфигурацией сеанса.
  • Замените долгоживущий файл cookie на недолговечный.

В следующем примере срок действия кратковременного файла cookie истекает через 10 минут:

HTTP/1.1 200 OK Set-Cookie: auth_cookie=short_lived_grant; Max-Age=600; # Expires after 10 minutesSet-Cookie: Domain=example.com; Secure; SameSite=Lax  {   "session_identifier": "session_id",   "refresh_url": "/RefreshEndpoint",   "scope": {     "origin": "https://example.com",     "include_site": true,     "scope_specification": [       { "type": "exclude", "domain": "*.example.com", "path": "/static" }     ]   },   "credentials": [{     "type": "cookie",     "name": "auth_cookie",     "attributes": "Domain=example.com; Secure; SameSite=Lax"   }] } 

3. Реализация конечной точки обновления

Когда срок действия недолговечного файла cookie истекает, Chrome инициирует процесс обновления, чтобы доказать владение закрытым ключом. Этот процесс включает в себя скоординированные действия Chrome и вашего сервера:

  1. Chrome откладывает запрос пользователя к вашему приложению и отправляет запрос на обновление в /RefreshEndpoint :

    POST /RefreshEndpoint HTTP/1.1 Sec-Session-Id: session_id 
  2. Ваш сервер отвечает вызовом:

    HTTP/1.1 401 Unauthorized Sec-Session-Challenge: "challenge_value" 
  3. Chrome подписывает запрос, используя сохраненный закрытый ключ, и повторяет запрос:

    POST /RefreshEndpoint HTTP/1.1 Sec-Session-Id: session_id Sec-Session-Response: <JWT proof> 
  4. Ваш сервер проверяет подписанное доказательство и выдает обновленный недолговечный файл cookie:

    HTTP/1.1 200 OK  Set-Cookie: auth_cookie=short_lived_grant; Max-Age=600; Domain=example.com; Secure; SameSite=Lax 
  5. Chrome получает обновленный файл cookie и возобновляет исходный отложенный запрос.

Альтернативный шаблон интеграции

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

  • Долгосрочный файл cookie сохраняется даже в случае сбоя DBSC.
  • Кратковременный файл cookie обновляется с помощью DBSC и необходим для конфиденциальных операций.

Этот шаблон дает сайтам больше контроля над тем, как обрабатывать крайние случаи.

Предостережения и резервное поведение

Chrome может пропускать операции DBSC и отправлять запросы без недолговечных файлов cookie, управляемых DBSC, в следующих сценариях:

  • Конечная точка обновления недоступна из-за сетевых ошибок или проблем с сервером.
  • Доверенный платформенный модуль занят или возникли ошибки подписи. Поскольку TPM используется совместно всеми системными процессами, чрезмерные обновления могут превысить его ограничения по скорости.
  • Кратковременный файл cookie, управляемый DBSC, является сторонним файлом cookie, и пользователь заблокировал сторонние файлы cookie в настройках своего браузера.

В таких ситуациях Chrome возвращается к использованию долгоживущего файла cookie, если он все еще присутствует. Этот запасной вариант работает только в том случае, если ваша реализация включает в себя как долгосрочные, так и кратковременные файлы cookie. Если нет, Chrome отправляет запрос без файла cookie.

Краткое содержание

Учетные данные сеанса, привязанного к устройству, повышают безопасность сеанса с минимальными изменениями в вашем приложении. Они обеспечивают более надежную защиту от перехвата сеанса, привязывая сеансы к конкретным устройствам. Большинство пользователей получают выгоду, не испытывая каких-либо сбоев, а DBSC изящно переходит на неподдерживаемое оборудование.

Для получения дополнительной информации обратитесь к спецификации DBSC .