Adding experimental Device Bound Session Credentials (DBSC) support to ASP.NET Core Identity in .NET 11
#dotnet #aspnetcore #security
✅
DBSC привязывает сессию к TPM-ключу устройства: украденную куку нельзя использовать на чужой машине, потому что refresh требует подписи приватным ключом, который никогда не покидает TPM.
📈
Долгоживущая auth-кука заменяется на короткоживущую session-куку плюс refresh-куку, ограниченную путём /.well-known/dbsc.
🔧 Включение сводится к одному вызову AddDeviceBoundSession(sourceScheme) поверх существующей cookie-схемы; для Identity, где AddAuthentication/AddCookie спрятаны в хелперах, обходят это через new AuthenticationBuilder(builder.Services).AddDeviceBoundSession(IdentityConstants.ApplicationScheme).
⚠️ Registration- и refresh-запросы не видны в обычной вкладке Network в Chrome, требуют HTTPS, а ad blocker их ломает — отлаживать приходится по серверным логам ASP.NET Core.
Читаем:
Подробный разбор внутренностей — PolicySchemeHandler для подмены схемы, генерация challenge через Data Protection без хранения состояния, и пошаговый ход registration/refresh с 403-челленджем и проверкой публичного ключа из куки.
https://andrewlock.net/exploring-the-dotnet-11-preview-8-experimental-support-for-device-bound-session-credentials-in-aspnetcore/
@aStateOfNet
#dotnet #aspnetcore #security
✅
DBSC привязывает сессию к TPM-ключу устройства: украденную куку нельзя использовать на чужой машине, потому что refresh требует подписи приватным ключом, который никогда не покидает TPM.
📈
Долгоживущая auth-кука заменяется на короткоживущую session-куку плюс refresh-куку, ограниченную путём /.well-known/dbsc.
🔧 Включение сводится к одному вызову AddDeviceBoundSession(sourceScheme) поверх существующей cookie-схемы; для Identity, где AddAuthentication/AddCookie спрятаны в хелперах, обходят это через new AuthenticationBuilder(builder.Services).AddDeviceBoundSession(IdentityConstants.ApplicationScheme).
⚠️ Registration- и refresh-запросы не видны в обычной вкладке Network в Chrome, требуют HTTPS, а ad blocker их ломает — отлаживать приходится по серверным логам ASP.NET Core.
Читаем:
Подробный разбор внутренностей — PolicySchemeHandler для подмены схемы, генерация challenge через Data Protection без хранения состояния, и пошаговый ход registration/refresh с 403-челленджем и проверкой публичного ключа из куки.
https://andrewlock.net/exploring-the-dotnet-11-preview-8-experimental-support-for-device-bound-session-credentials-in-aspnetcore/
@aStateOfNet