Web Account Manager (WAM) представляет собой аутентификационную библиотеку на платформе Windows, которая упрощает управление учётными записями и токенами, обеспечивая беспроблемный Single Sign-On (SSO) для приложений Windows с использованием провайдеров идентичности Microsoft, таких как Microsoft Entra ID и Microsoft Account. Введённый в Windows 10 и интегрированный с MSAL, WAM упрощает и стандартизирует обслуживание учетных записей и токенов, снижая сложность для разработчиков и поддерживая Zero Trust сценарии.
Централизация идентичности и безопасности
Фрагментированные реализации OAuth/OIDC на уровне приложений вызывают сложность протоколов, дублирование усилий, слабую защиту токенов и увеличенные эксплуатационные расходы. WAM решает эти проблемы, централизуя идентичность, предоставляя согласованный интерфейс и безопасную защиту токенов. Это включает автоматическую доставку таких функций безопасности, как привязка токенов (token binding), токены доказательства владения (Proof-of-Possession, или PoP) и устойчивость к фишингу с использованием Windows Hello и FIDO2.
Преимущества WAM различны для всех заинтересованных сторон. Конечные пользователи получают бесперебойную работу SSO и согласованный опыт работы с идентичностями. Разработчики - упрощённую интеграцию, централизованное управление токенами и встроенную безопасность. Организации получают поддержку регистрации устройств, MDM и Conditional Access, что позволяет создавать облачную стратегию и соответствовать принципам Zero Trust.
Работа с токенами и ключевыми артефактами безопасности
WAM использует API WinRT GetTokenSilently и RequestToken для брокерства токенов. Типичный рабочий процесс запроса токена включает:
- определение провайдера (например, Entra или MSA);
- построение WebTokenRequest (поставщик, объём, clientId);
- попытка выполнения тихого запроса (GetTokenSilentlyAsync) или интерактивного потока (RequestTokenAsync).
Ключевыми артефактами безопасности являются: связанный с устройством сеансовый ключ (Session Key) для PoP и шифрования токенов, транспортный ключ устройства для шифрования сеансового ключа и Primary Refresh Token (PRT) — неявный токен, связанный с устройством, который позволяет реализовать SSO. Поведение GetTokenSilently зависит от состояния устройства. Устройства, зарегистрированные в Entra, используют PRT и сеансовый ключ, хранящиеся в LSASS. Гибридные устройства добавляют резервное использование Windows Integrated Authentication (WIA). Устройства, присоединённые к домену, обычно полагаются на WIA или кешированные токены обновления.
Тихие потоки PRT/RT требуют подписей PoP, в то время как интерактивный RequestToken следует за процессом кода авторизации OAuth 2.0 и включает верификацию облака, прикрепление SSO cookie/PRT, выдачу кода авторизации, обмен токенами, кеширование, защищённое DPAPI, и доставку токенов приложению. Будущие улучшения акцентируются на более сильной привязке токенов, что делает их и ключи нераздельно связанными с оборудованием устройства, предотвращая кражу токенов и атаки нулевого дня.



