Підключаємо microsoft passport

Підключаємо Microsoft Passport

У попередній статті ми розглядали, що таке Microsoft Passport. Тепер вивчимо, як підключити службу єдиного входу.

Установка необхідного програмного забезпечення

Для початку необхідно встановити Microsoft .NET Passport SDK 2.1. В процесі установки вибираємо, що встановлюємо в режимі Preproduction / Test Environment.

Система може працювати або в тестовому режимі (PreProduction), або в чинному (Production). Режим визначає сервера ідентифікації, з якими відбувається взаємодія. У тестовому режимі модуль працює з сервером current-login.passporttest.com. а в чинному - з login.passport.com. Ці сервери мають різні бази зареєстрованих сайтів і користувачів. Переводити систему в режим Production необхідно тільки після отримання Production Key.

Отримання тестового ключа

Починати підключення додатки можна і з тестовим ключем (Site ID = 1), що входить до складу SDK. Але я рекомендую витратити 10 хвилин, щоб отримати і налаштувати власний ключ.

Отримати тестовий ключ можна через систему .NET My Services Manager. В системі необхідно ідентифікувати себе через паспорт, після чого можливе створення власних додатків в розділі My Applications.

Після завершення реєстрації повертаємося в розділ My Applications. вибираємо тільки що створене додаток. Далі вибираємо операцію Download key і отримуємо собі тестовий ключ. Також при цьому запам'ятовуємо номер сервера (Site ID).

Реєстрація тестового ключа

При реєстрації ключів краще відразу створювати конфігурацію, яка дозволить розміщувати на сервері більше одного сайту, що підтримує паспорт.

Після того, як Ви завели нову конфігурацію для паспорта, можна встановити сам ключ. Для цього треба виконати два запуски програми-ключа з параметрами:
  • Partner_1.exe / addkey / s
  • Partner_1.exe / makecurrent / t 0 / s

Де - Ваш Site ID, а відповідає значенню, введеному в поле Web Site Name.

Після цього необхідно перезавантажити службу IISADMIN.

При підключенні паспорта найчастіше для введення імені і пароля користувач переходить на сервера паспорта і там вводить свої дані. Крім того, в паспорті реалізована можливість вставити форму входу на свої сторінки (Inline Sign-In). Однак я не рекомендую використовувати цю можливість. По-перше, для неї обов'язково використання SSL на сервері. По-друге, вже були прецеденти, що дана можливість блокувалася з міркувань безпеки. Тому краще використовувати перший варіант.

Ми розглянемо схему підключення паспорта, при якій сервер не має власної системи ідентифікації, а використовує тільки паспорт. При цьому сервер зазвичай веде додатково свою базу користувачів, де зберігає анкетні дані. Щоб отримати доступ до певних ресурсів, користувач повинен не тільки ідентифікуватися, але і залишити про себе додаткову інформацію. На кожній сторінці сервера знаходиться логотип паспорта, що дозволяє виконати вхід / вихід з системи.

Для цього необхідно реалізувати такі процедури:
  • загальні процедури перевірки стану паспорта
  • щоб відображати логотип входу / виходу з поточним станом
  • реєстрацію користувача у внутрішній системі з видачею частини даних з профайла паспорта
  • процедуру виходу

Реєстрація користувача у внутрішній системі

Після входу через паспорт, якщо ми не знайшли відповідності між паспортом і користувачами у внутрішній базі, ми відправляємо користувача на сторінку введення додаткової інформації про себе. Щоб спростити користувачеві процедуру введення даних, будемо частина інформації брати з паспорта.

Отримати дані можна за допомогою методу Profile. Перед тим, як викликати метод Profile. необхідно, щоб був викликаний хоча б один з методів HasProfile. HasTicket. IsAuthenticated і повернув значення True.

Зі словниками відразу починаються проблеми:
  1. Список значень словників виходить не з сервера, а зберігається локально. Це явний прорахунок в архітектурі паспорта. Словники на сервері можуть змінитися, а їх актуальність на клієнті ніким не гарантується.
  2. У словниках для російської мови (піддиректорія 1049) встановлена ​​кодування .1252 замість .1251.
  3. Частина словників для російської мови, наприклад, міста (city.dat) - просто порожні.
  4. Планується, що значення за кодом ми отримуємо значення зі словника, використовуючи об'єкт LookupTable. Даний об'єкт дозволяє швидко завантажити текстовий файл і далі отримати значення по ключу. Але навіть цим скористатися не можна. Наприклад, Росія описана в довіднику країн рядком «181, Росія, 4,2, RU, 7». Об'єкт LookupTable може за кодом 181 повернути значення «Росія, 4,2, RU, 7». А паспорт нам повертає значення «RU».

В результаті користуватися значеннями на базі словників практично неможливо. Для тих полів, для яких словники все-таки є, потрібно писати самостійну процедуру обробки. А для тих, що ні - на жаль, доведеться користувачеві вводити інформацію заново вручну.

Далі нам залишається тільки зберегти введені дані в свою систему.

Відображення логотипу для входу / виходу

Для відображення логотипу досить здійснити один виклик методу LogoTag2. Результатом буде рядок, що містить необхідний HTML-код.

Вихід з системи

Успішний вихід з системи буде здійснено тільки в разі коректної роботи файлу, який Ви вказали в полі Expire Cookie URL в .NET My Services Manager. Як цього файлу можна взяти файл expire.asp. який є в тестовому сервері в складі SDK. Додатково в нього можна додати виклик Session.Abandon для завершення сесії на своєму сайті.

На цьому підключення паспорта в режимі PreProduction завершено. Тепер, щоб активізувати сайт, необхідно:
  • Укласти договір з паспортом.
  • Здійснити оплату за використання.
  • Через .NET My Services Manager здійснити запит на переклад сайту в режим Production.
  • Дочекатися отримання поштою дискети з ключем. З міркувань безпеки, інших способів доставки немає.
  • Через Passport Administration Utility перевести паспорт в режим Production і встановити новий отриманий ключ.

Налаштування зовнішнього вигляду

Базова настройка зовнішнього вигляду дозволяє розміщувати логотипи і текст на формах. Але в паспорті передбачено механізм і більш тонкої настройки зовнішнього вигляду.

Додатково Ви маєте можливість налаштовувати зовнішній вигляд не статично, а в залежності від місця виклику. Для цього методи LogoTag2. LoginUser. AuthURL2 мають додаткові параметр coBrandArgs. Значення цього параметра буде передано Вашому скрипту і може бути потрібним чином оброблено.

Використання паспорта в ASP.NET

На закінчення додам кілька слів про використання паспорта в ASP.NET.
  • Зазначаємо, що будемо використовувати ідентифікацію через паспорт. Для цього в web.config вказуємо.
  • Підключаємо System.Web.Security.
  • Оголошуємо змінну private PassportIdentity myPassport;
  • У Page_Load инициализируем змінну myPassport. myPassport = (PassportIdentity) (Page.User.Identity);
  • Далі виконуємо всі виклики (FromNetworkServer, IsAuthenticated і т.д.), згідно із описаних вище.

Схожі статті