Реализация Windows CardSpace Дневник разработчика Основан на одноименном докладе: Dominick Baier Консультант по безопасности.

Презентация:



Advertisements
Похожие презентации
Top 10 возможностей ASP.NET 2.0. Выбор сделан на основе опросов разработчиков Top 10 – горячая десятка возможностей.
Advertisements

От паролей к CardSpace Сергей Березников Эксперт DocsVision Digital Design.
Microsoft TechDays Александр Неволин Nevlabs кандидат технических наук.
Сергей Байдачный Специалист по разработке ПО Майкрософт Украина.
Простая автоматизация бизнес-процессов с помощью Microsoft InfoPath На базе Microsoft Share Point Portal Server И DocsVision Share Point Edition Докладчик.
Windows ® Azure Platform. Проблемы безопасности в «облаке» Физическая безопасность Сети и изоляция Безопасность приложений Управление идентификацией пользователей.
Полигон 2006: Тестовая лаборатория будущего The 2007 Microsoft Office system.
Проф. В.К.Толстых, WCF-службы Понятие безопасности Из цикла лекций «Internet-технологии разработки приложений» для студентов 4-го курса.
Microsoft TechDays Панов Никита Технический инженер Microsoft.
Андрей Рыковский Евгений Якушкин пятница, 27 июля 2012 г.пятница, 27 июля 2012 г.пятница, 27 июля 2012 г.пятница, 27 июля 2012 г.пятница, 27 июля 2012.
Microsoft TechDays Николай Миляев консультант Microsoft.
Ресурсы WPF Два типа ресурсов WPF: объектные ресурсы (object resource) – определенный.NET-объект, который можно использовать многократно; ресурсы сборки.
Microsoft TechDays Никоноров Евгений разработчик EPAM Systems.
Microsoft TechDays Заграничнов Александр Microsoft.
Применение Microsoft ASP.NET AJAX Андрей Скляревский.NET Developer
Microsoft TechDays Леонид Шапиро MCT ЦКО «Специалист»
Microsoft TechDays Леонид Шапиро MCT ЦКО «Специалист»
Microsoft TechDays Виталий Дильмухаметов
Microsoft TechDays Леонид Шапиро MCT ЦКО «Специалист»
Прогресс в безопасности за первое полугодие 2007 года ИНФОФОРУМ 14 июня 2007 г. Владимир Мамыкин Директор по информационной безопасности Кабинет Президента.
Транксрипт:

Реализация Windows CardSpace Дневник разработчика Основан на одноименном докладе: Dominick Baier Консультант по безопасности

План и цели доклада Мотивация и требования Анализ приложений Стратегии реализации Предварительные условия к сайтам Процесс регистрации и аутентификации Потеря карточек Структура Базы Данных Авторизация Внедрение в ASP.NET и WCF Внедрение в последующие технологии

Требоваания Веб-приложения Но с интерфейсами сервисов WCF и ASMX Поддержка паролей и информационных карточек Все типичные задачи по управлению аккаунтами Инфраструктура авторизации Простая реализация для обеих ролей и патентов

Мотивация Сделать приложения более удобными для использования Хранилище личностей Поднять уровень безопасности приложения (и его пользователей) Фишинг (Phishing)

Примеры хранилищ личностей

Структура с центром - приложение

Структура с центром - пользователь

Фишинг (Phishing)

Что в карточке? Открытый Ключ PPID Фамилия Имя … … Закрытый ключ Зашифровано: Динамическое создание Данные пользователя Сайт, который маскируется под

Аутентификация с использованием ИнфоКарт ИнфоКарты не содержат логинов/паролей Заменено уникальными идентификаторами Использование Хэша(Открытый Ключ, (Персона X)) для формирования уникального идентификатора База Данных Регистрация Вход Отправка карты Создание/Сохранение уникального ID Создание/Проверка уникального ID

Внедрение в ASP.NET Веб-приложение HTML Страница Зашифрованный XML (через поле form) Отправка (submit) или триггеры на getElementById

Обработка Токенов в ASP.NET Класс Token дешифрует токен Часть инструментария для ИнфоКарт ASP.NET Дает простой доступ к персонам Нужны права на чтение закрытого ключа для дешифрования (!) protected void Page_Load(object sender, EventArgs e) { Token token = new Token(Request.Form["_xmlToken"]; string uniqueId = token.IssuerPubKeyHash; string = token.Claims[ClaimTypes. ]; }

Элемент InfoCardSelector для ASP.NET Внедрение объектов Выделяются необходимые UI, разметка и JavaScript Событийная модель программирования

Страница регистрации Поддержка как паролей, так и ИнфоКарт Добавление пользователя в базу данных (но аккаунт пока отключен) Отправка письма с подтверждением регистрации Включение аккаунта после подтверждения

Письмо с подтверждением Проверьте, что вы зашифровали данные перед отправкой!!!

Страница аутентификации Обычные UI элементы Что это? Потеряли ИнфоКарту/Пароль? Создать Аккаунт Предусмотреть опцию Запомнить меня После – обычное переключение на FormsAuthentication

Автообновление после входа Данные пользователя могут измениться со временем Новый адрес, телефонный номер, веб-страница… Автообновление ваших данных в базе из ИнфоКарты делает ваше приложение более удобным в Следующем входе на сайт Недвусмысленной информации о вас на сайтах

Структура Базы данных Information CardsInformation Cards UserID IssuerID UserID IssuerID FK1FK1 PK UniqueID UsersUsers FirstName LastName Address FirstName LastName Address PKUserID PK UserID

Структура базы данных в простом приложении

Объединение данных аккаунта и ИнфоКарт Ручное обновление данных аккаунта пользователей, предпочитающих логины/пароли Объединение ИнфоКарты с существующим аккаунтом или изменение ИнфоКарты …вы можете иметь несколько карт, объединенных с одним аккаунтом (роуминг-пользователи)

Потеря паролей или ИнфоКарт Сброс пароля или выдача новой карты Отключение аккаунта Отправка письма с подтверждением Переотправка карты на странице подтверждения

Авторизация Поставщик ролей ASP.NET поможет дать решения авторизации Заново реализовать GetRolesForUser() для вашей БД Возможности кэширования Поставщика Ролей дает неплохую оптимизацию Поддерживается на всех хостингах Используются следующие встроенные сущности ИнфоКарты - часть WCF authorization context Используется wsFederationHttpBinding Доступно через ServiceSecurityContext.AuthorizationContext

Доступ к сущностям в WCF public static string Get Claim() { AuthorizationContext context = ServiceSecurityContext.Current.AuthorizationContext; foreach (ClaimSet set in context) { foreach (Claim claim in set.FindClaims( ClaimTypes. , Rights.PossessProperty)) { return claim.Resource.ToString(); } throw new Exception("Claim not found"); }

Внедрение в последующие технологии ИнфоКарты могут быть легко внедрены в различные технологии/протоколы ASMX как пример System.IdentityModel.Selectors.CardSpaceSelector прямой API интерфейс в CardSpace Возвращает токен как строку Может быть переслан в различных контейнерах, например заголовок SOAP Получающая сторона использует классToken для дешифрования и доступа к сущности

CardSpaceSelector.GetToken() string GetInfoCardToken(string targetUri) { IdentitySelector selector = new IdentitySelector(); selector.TargetUri = new Uri(targetUri); selector.SetTargetCertificate(targetUri); selector.RequiredClaims.Add(ClaimTypes.GivenName); selector.RequiredClaims.Add(ClaimTypes.Surname); selector.RequiredClaims.Add(ClaimTypes. ); selector.OptionalClaims.Add(ClaimTypes.Webpage); return selector.GetTokenString(); }

Требования к сайтам Обычный SSL сертификат Подлинность сайта вычисляется, используя все поля, вплоть до корневого CA Проблемы при смене CA или DNS имени EV SSL сертификат Подлинность сайта вычисляется с использованием полей O, L, S, C (Organization, Location, State, Country) Более надежный (= рекомендуемый) Без SSL Подлинность сайта вычисляется, используя URL Без конфиденциальности, без аутентификации на сервере Потеря SSL-предоставляемого MITM и защиты

EV сертификаты

Основные tips & tricks Не храните пароли незашифрованными используйте Rfc2898DeriveBytes для создания хороших хэшей Остерегайтесь script / html инъекций Input против Output кодировки Используйте библиотеку Microsofts AntiXSS Остерегайтесь SQL инъекций Всегда используйте SqlCommand и хранимые процедуры Убедитесь, что используете SSL URL-ы Соответственно настройте IIS Базовая страница может делать авто-перенаправления Избегайте сессий Ущерб масштабируемости

Эпилог Основная идея – это уникальный ID Вам потребуется стабильный и надежный алгоритм генерации Остерегайтесь подделки сертификатов Типичные задачи обслуживания аккаунтов - те же Убедитесь, что ИнфоКарты в вашем приложении identity selector UI – часть вашего приложения Автообновление вашей базы из приходящих ИнфоКарт Все входные данные – это зло! Включая ИнфоКарты

© 2007 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.