87cdeaf72873424e38fa0b2b15a0b039.ppt
- Количество слайдов: 35
От паролей к Card. Space Сергей Березников Эксперт Docs. Vision Digital Design
Содержание • • • Личностный кризис Интернет Обзор Card. Space Реализация Метасистема Идентификации Запуск Card. Space
А Вы кто?
Личностный кризис Интернет • Мошенничество (фишинг) • «Утомлённые паролями» • Несовместимые, частные механизмы идентификации
Мошенничество (фишинг) • Интернет – опасное место!
«Утомлённые паролями» ü Плохой выбор ü Плохое управление ü Плохое (пере-)использование
Что необходимо? • Простой, согласованный, защищённый способ представления личности – Применимый всеми и для всего • Быть открытым и никому не принадлежать • Подходить для всех сценариев • Работать с существующими и будущими системами – Вовлечь пользователя в управление своей личностью • Защитить персональную информацию • Помочь в принятии правильных решений • Получить признание и принятие индустрии
Личностная метасистема Абстракция личности, основанная на Семи Законах • • Личность (identity): набор заявок (claims) в маркере безопасности (security token) Роли – – – • Субъект Поставщик личности Заинтересованная сторона Протокол 1) 2) 3) 4) Пользователя просят представиться Пользователь выбирает поставщика личности Поставщик выдаёт пользователю маркер Пользователь предъявляет маркер безопасности инициатору запроса
Протокол взаимодействия Пользователь подтверждает/отклоняет выдачу маркера 7 Клиент 4 Пользователь выбирает IP 1 Клиент желает получить доступ к ресурсу У IP запрашивается маркер безопасности 3 5 Клиент показывает список IP, удовлетворяющих этим требованиям 2 6 RP выставляет требования: формат, список заявок и издателя маркера безопасности IP генерирует маркер на основе требований RP 8 Маркер предъявляется RP RP просматривает заявки и предоставляет доступ Поставщик личности (Identity Provider - IP) Заинтересованная сторона (Relying Party - RP)
Как? WS-* и Card. Space! • Описать политику… – WS-Security. Policy • Извлечь политику… – WS-Metadata. Exchange • Security Token Service… – WS-Trust • Сообщения… – SOAP и WS-Security • Формат маркера… – Всё, что желает RP и может предоставить IP • Взаимодействие сторон происходит под руководством селектора личности (identity selector) на клиенте – Card. Space – селектор личности для Windows
Windows Card. Space Проще • Единообразный интерфейс • Помогает избавиться от паролей Безопаснее • Помогает защитить пользователей от подделок и мошенничества • Поддерживает взаимную и многоступенчатую аутентификацию Базируется на WS-* протоколах
Что такое Windows Card. Space? • Card. Space – это селектор личности для Windows – Часть. NET Framework 3. 0, использует WCF для реализации стека WS-* • Цифровые личности пользователя – набор карточек – Карточки связаны с поставщиком личности – Содержат метаданные маркера безопасности • Что они из себя представляют и где их взять – Отображаются при помощи специального защищённого пользовательского интерфейса • Когда пользователь выбирает карточку… – Card. Space получает у поставщика личности маркер – С согласия пользователя передаёт его заинтересованной стороне • Пользователь принимает непосредственное и активное участие в процессе
Поиграем за… 1) 2) 3) Поставщика Сторону Клиента
Роль 1: Поставщик личности • Каждый поставщик личности должен иметь: – SSL сертификат • Представляет личность поставщика, используется для подписи маркера • Предпочтительны High Assurance сертификаты с логотипом – Security Token Service • Обрабатывает запросы на получение маркера, аутентифицирует пользователя, создаёт маркер – Одну информационную карточку на пользователя • Содержит метаданные маркера безопасности • Примеры – Работодатель, школа, банк, клуб – Пользователь!
Поставщик личности = Пользователь • Подходит для большинства веб-сайтов • На клиенте нам нужно: – Security Token Service – Создание карточки – Ключи для подписи маркера • Является частью системы Card. Space • Персональные или самодельные карточки – – Создаются пользователем в Card. Space UI Фиксированный набор из 12 заявок Маркеры безопасности в формате SAML 1. x Карточка и данные - на клиенте
Поставщик личности != Пользователь • SSL сертификат – High Assurance сертификаты с логотипом • Security Token Services – Купить у производителя – Создать на. NET Framework 3. 0 – На устройстве… “портативный STS” • Создаёт управляемые (managed) карточки – Одна на пользователя, подписана поставщиком – Поставщик определяет набор заявок, формат маркера, способ аутентификации – Карточка передаётся пользователю, но данные остаются у поставщика
Роль 2: Заинтересованная сторона • SSL сертификат – High Assurance сертификат с логотипом • Требования к маркеру заданы в политике • Обработка маркера безопасности – Расшифровать маркер, проверить подпись издателя, разобрать заявки, идентифицировать пользователя, авторизовать • Примеры – Любой сайт или сервис
Заинтересованный = Веб-сервис • Установить сертификат, использовать WCF, config и System. Identity. Model <!--. . . --> <ws. Federation. Http. Binding> <binding name = “my. Federated. Binding"> <security mode = "Message"> <message issued. Token. Type = "urn: oasis: names: tc: SAML: 1. 0: assertion"> <claims> <add claim. Type = "http: //. . . /identity/claims/emailaddress"/> <add claim. Type = "http: //. . . /identity/claims/givenname"/> <add claim. Type = "http: //. . . /identity/claims/surname"/> <add claim. Type = "http: //. . . /identity/claims/privatepersonalidentifier"/> </claims> <issuer address = "http: //. . . /identity/issuer/self"/> </message> </security> </binding> </ws. Federation. Http. Binding> <!--. . . -->
Заинтересованный = Веб-сайт • Веб-сайтам тоже нужны WS-*? Нет! • Для поддержки Card. Space: – Изменить страницы входа и регистрации • Добавить кнопку с тегом объекта Card. Space • Добавить обработчик присланного маркера безопасности – Авторизованным пользователям традиционно выдать куки – Модифицировать базу учётных записей • Добавить поле для заявки «идентификатор пользователя»
Интеграция с Card. Space • Четыре основных задачи: 1. 2. 3. 4. Изменить базу данных Создать страницу ассоциации Обновить страницу входа Обновить страницу регистрации
1. Ассоциируем пользователя с карточкой CREATE PROCEDURE aspnet_cardspace_associate (@User. Id nvarchar(256), @card nvarchar(50) ) AS. . . CREATE PROCEDURE aspnet_cardspace_lookup (@card nvarchar(50) ) AS. . .
2 a. Создаём страницу ассоциации <!--. . . --> <button onclick="javascript: return cardspacelogin. submit(); "> Update account with your Information Card </button> <form name=“cardspacelogin" target="_self" method="post"> <object type="application/x-informationcard" name="xml. Token"> <param name="token. Type" value="urn: oasis: names: tc: SAML: 1. 0: assertion"> <param name="issuer“ value="http: //schemas. . /identity/issuer/self"> <param name="required. Claims" value="http: //. . . /claims/givenname, http: //. . . /claims/surname, http: //. . /claims/emailaddress, http: //. . . /claims/privatepersonalidentifier"> </object> </form> <!--. . . -->
2 b. Создаём страницу ассоциации public partial class Associate_aspx : System. Web. UI. Page { protected void Page_Load(object sender, Event. Args e) { // check if an xml. Token is posted string xml. Token = Request["xml. Token"]; if (xml. Token != null) { Token. Helper token. Helper = new Token. Helper(xml. Token); // get the unique id string unique. ID = token. Helper. get. Unique. ID(); if (unique. ID != null && unique. ID != "") { //store it with the account. Membership. User user = Membership. Get. User(); Membership. Helper. Associate. User( user. User. Name, unique. ID); } }
3 a. Обновляем страницу входа <!--. . . --> <button onclick="javascript: return cardspacelogin. submit(); "> Sign in with your Information Card </button> <form name=“cardspacelogin" target="_self" method="post"> <object type="application/x-informationcard" name="xml. Token"> <param name="token. Type" value="urn: oasis: names: tc: SAML: 1. 0: assertion"> <param name="issuer“ value="http: //schemas. . /identity/issuer/self"> <param name="required. Claims" value="http: //. . . /claims/givenname, http: //. . . /claims/surname, http: //. . /claims/emailaddress, http: //. . . /claims/privatepersonalidentifier"> </object> </form> <!--. . . -->
3 b. Обновляем страницу входа public partial class Login_aspx : System. Web. UI. Page { protected void Page_Load(object sender, Event. Args e) { string xml. Token = Request["xml. Token"]; Token. Helper token. Helper = new Token. Helper(xml. Token); // Lookup the account using the unique. Id string username = Membership. Helper. Get. User( token. Helper. get. Unique. ID()); if (username != null) { Membership. User user = Membership. Get. User(username); // give the cookie back to the browser. Forms. Authentication. Set. Login. Cookie(user. User. Name, false); } } }
4 a. Обновляем страницу регистрации <!--. . . --> <button onclick="javascript: return cardspacelogin. submit(); "> Register with your Information Card </button> <form name=“cardspacelogin" target="_self" method="post"> <object type="application/x-informationcard" name="xml. Token"> <param name="token. Type" value="urn: oasis: names: tc: SAML: 1. 0: assertion"> <param name="issuer“ value="http: //schemas. . /identity/issuer/self"> <param name="required. Claims" value="http: //. . . /claims/givenname, http: //. . . /claims/surname, http: //. . /claims/emailaddress, http: //. . . /claims/privatepersonalidentifier"> </object> </form> <!--. . . -->
4 b. Обновляем страницу регистрации //. . . string xml. Token = Request["xml. Token"]; Token. Helper token. Helper = new Token. Helper(xml. Token); string unique. Id = token. Helper. get. Unique. ID(); string email. Address = token. Helper. Get. Claim( “http: //schemas. . . /emailaddress”); string username = token. Helper. Get. Claim( “http: //schemas. . . /givenname”); if (username != null) { Membership. User user = Create. User(name , email. Address , . . . ); Membership. Helper. Associate. User(user. User. Name, unique. ID); } //. . .
Роль 3: Клиентское приложение • «Толстый» клиент – Использовать WCF и System. Identity. Model • Браузер – В IE 7. 0 есть icardie. dll • Читает HTML тег и вызывает Card. Space – Другие браузеры в Windows могут делать то же самое • Клиентам Mac, Linux нужен селектор личности и WS-* стек
Безопасность Card. Space • Архитектура – – – Отдельный «рабочий стол» Ограниченная учётная запись Обслуживает сервис Хранилище зашифровано и ACL Защита PIN PKCS#5 • Взаимодействие – Всё зашифровано (кроме WS-MEX) – Многоступенчатая аутентификация • Секретность – Для каждой RP свой ключ для самодельных карт • Пользователь всегда при деле – Пользователь всегда знает какую информацию он предоставляет – Идентификация сторон через Trust Dialog – Пользователь может защитить карточки PIN-кодом
Trust Dialog • Пользователь выносит явное решение о доверии поставщику личности и заинтересованной стороне • Идентифицируют X. 509 сертификатами • Диалог доверия отображает: – Предмет и издателя сертификата – High Assurance информацию и логотип • RP: показывается при первом визите и последующих отказах • IP: появляется при импорте карточки
демонстрация Card. Space
. NET 3. 0 и Card. Space B 1 Q 1 2005 Q 2 • • • CTP Q 3 Q 4 Q 1 2006 B 2 Q 2 CTP Q 3 V 1 RTM Q 4 Встроена в Windows Vista Доступна для Windows XP и Windows Server 2003 Beta 2 выпущена CTP периодически RTM в конце 2006
Дополнительная информация • . NET Framework 3. 0 Beta – msdn. microsoft. com/windowsvista/downloads/getthe beta/ • Internet Explorer 7. 0 Beta 2 – www. microsoft. com/windows/ie/ie 7/ • Card. Space в. NET 3. 0 Developer Center – msdn. microsoft. com/winfx/reference/infocard/ • Kim Cameron’s Identity Weblog – www. identityblog. com
Вопросы? Сергей Березников sergey@docsvision. com sergey@digdes. com
© 2006 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
87cdeaf72873424e38fa0b2b15a0b039.ppt