ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Active Directory for Application Mode
         

     

    Інформатика, програмування

    Active Directory for Application Mode

    Сергій Зернюков

    Вступ

    Що таке ADAM і для чого він потрібен?

    Active Directory for Application Mode (ADAM) являє собою локальну версію Active Directory (далі по тексту - AD), що встановлюється у вигляді служби NT. ADAM призначений для зберігання даних, що мають ієрархічну структуру. Типовими прикладами цього можуть служити: глобальні адресні книги і системи роботи з клієнтами або персоналом. Звичайно, ієрархічно організовані дані можна зберігати і в XML-файлі. Але це сумнівно з точки зору безпеки, тим більше, якщо зберігається інформація є конфіденційною. ADAM ж використовує вбудовані механізми безпеки Windows, що в більшості випадків забезпечує надійний захист і прозорий контроль доступу до інформації. Найбільш вдалим варіантом застосування ADAM може бути зберігання в Active Directory додаткової інформації про об'єкти.

    Установка і початкова настройка

    ADAM може бути встановлений на операційній системі Microsoft Windows 2003 Server або Microsoft XP. Докладно процес установки описаний в керівництві, що поставляється разом з установочного пакетом. Тут хотілося б зупинитися тільки на двох моментах. Перший стосується розділів (partitions). Розділ в ADAM-е є контейнером верхнього рівня, в якому може зберігатися ієрархія об'єктів. У процесі встановлення створюються два системних розділу: одна для зберігання схеми, інший для зберігання конфігурації. Крім того, користувачеві пропонується створити розділ, який буде використовуватися додатком. Якщо ви точно знаєте, як буде називатися розділ даних додатки, введіть ім'я розділу, і він буде створений під час встановлення. Повний ім'я, або, в термінах AD - distinguished name, має такий вигляд: 'OU = MyApp, O = MyCompany, C = RU'. Подробнее розділи будуть розглянуті далі в статті.

    Так само користувачеві пропонується імпортувати LDF-скрипти, що розширюють схему такими об'єктами як User і User-Proxy. Якщо ви збираєтеся використовувати об'єкти цих типів, ви можете створити ці класи в процесі установки. Якщо ж від самого початку використання таких об'єктів не планується, то імпортувати нічого не потрібно. У будь-якому випадку, це можна буде зробити і після установки.

    Засоби адміністрування

    Засоби адміністрування є, на мій погляд, одним з найбільш слабких місць ADAM - вони являють собою великий набір різних, часом не дуже зручних у використанні утиліт (див. таблицю 1).        

    Утиліта         

    Призначення             

    ADAM ADSI Edit         

    MMC-додаток, що дозволяє   редагувати ієрархію об'єктів і проводити загальну настройку роботи ADAM.             

    ADAM Schema         

    MMC-додаток для роботи   зі схемою.             

    Csvde.exe         

    Утиліта командного рядка   для імпорту та експорту даних і оновлення схеми за допомогою текстових   comma-separated файлів.             

    Dsmgmt.exe         

    Утиліта командного рядка   для загального адміністрування.             

    Dsacls.exe         

    Утиліта командного рядка   для перегляду та призначення прав доступу до об'єктів ієрархії.             

    Dsdbutil.exe         

    Утиліта командного рядка   для управління файлами бази даних (. dit) ADAM.             

    Dssiag.exe         

    Утиліта командного рядка   для моніторингу ADAM.             

    Ldifde.exe         

    Утиліта командного рядка   для імпорту та експорту даних і оновлення схеми з допомогою файлів у форматі   LDAP Data Interchange Format (LDIF).             

    Ldp.exe         

    Утиліта для   адміністрування ADAM.             

    Repadmin.exe         

    Утиліта командного рядка   для управління реплікацією.     

    Таблиця 1. Адміністративні ADAM.

    З цього списку видно, що для адміністрування в основному застосовуються утиліти командного рядка, що ніяк не можна назвати зручним. Крім того, оскільки, в більшості випадків, супроводом додатків займаються люди, далекі від адміністрування операційної системи -- було б не погано мати більш зручні способи роботи з ADAM.

    Майже всі представлені утиліти знаходяться в каталозі, в який був встановлений ADAM, найчастіше це C: WINDOWSADAM. Виключення складає ADAM Schema. Для підключення цієї утиліти необхідно запустити Microsoft Management Console (MMC), в меню File додати snap-in "ADAM Schema", а потім і збереження файлу. MMC.

    Робота з ADAM

    Поняття розділу

    Важливим поняттям в ADAM є розділ (partition). Розділ є контейнером верхнього рівня, в якому може зберігатися ієрархія об'єктів. Звичайно, додаток може використовувати і кілька розділів для зберігання даних, однак здійснювати пошук та встановлювати зв'язки між об'єктами можна тільки усередині одного розділу.

    Протягом інсталяції створюються два системних розділу, використовуваних для зберігання конфігурації та схеми. Створити новий розділ можна з допомогою утиліти LDP.EXE. Для цього треба запустити програму, підключитися до необхідної службі ADAM, встановити з'єднання (bind) і виконати кілька маніпуляцій, а саме:

    У меню Browse вибрати пункт Add child.

    У полі Dn ввести повне ім'я (distinguished name) нового розділу.

    У полі Attribute ввести ObjectClass, в полі Values - container і натиснути Enter.

    Потім у полі Attribute ввести InstanceType, в полі Values - 5 і натиснути Enter.

    Натиснути Run.

    Малюнок 1. Утиліта LDP.EXE - створення нового розділу.

    Новий розділ буде створений, а ви отримаєте повідомлення про успішно виконану операцію.

    Робота з даними в ADAM

    Після того як розділ створено, можна приступати до заповнення його даними, необхідними для роботи програми. Одиницею даних у ADAM є об'єкт. Кожен об'єкт має набір атрибутів, що визначаються класом об'єкта. Деякі з атрибутів є загальними для всіх класів - атрибути, успадковані від класу top. Найважливіші з них:

    name - коротку назву об'єкта (MyObject1);

    distinguishedName - повне ім'я об'єкта, унікальне в межах сервера значення, ідентифікує об'єкт (CN = MyObject1, OU = MyApp, O = MyCompany, C = RU, див. нижче);

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

    objectClass - клас об'єкта, визначає набір атрибутів і поведінку об'єкта.

    distinguishedName містить ім'я об'єкта, а також імена всіх "контейнерних" об'єктів - каталогів, які його містять. Частиною distinguishedName є повне ім'я розділу. Назва кожного об'єкта в повному імені передує префіксом, що вказує на тип об'єкту. Ось розшифровка деяких з цих абревіатур:

    CN - common name,

    OU - organization unit,

    O - organization,

    DC - domain component,

    C - country/region.

    Основним засобом створення, модифікації і видалення об'єктів в ADAM є "ADAM ADSI Edit".

    Малюнок 2. Зовнішній вигляд утиліти "ADAM ADSI Edit ".

    Після підключення до певного розділу потрібного сервера можна додавати власні об'єкти в ієрархію. У діалоговому вікні створення нового об'єкта вам буде запропоновано вибрати клас, від якого буде успадкований об'єкт. Об'єкт певного класу може містити вкладені об'єкти класів, для яких він (клас) прописаний в схемі як можливий "Батько".

    Розширення схеми

    Описане вище було б абсолютно марно, якщо б не можна було розширювати схему ADAM, тобто додавати власні класи і атрибути. На щастя, Microsoft подбав про це, і в нашому розпорядженні є утиліта "ADAM Schema".

    Малюнок 3. Зовнішній вигляд утиліти "ADAM Schema ".

    Схема - формальний опис вмісту та структури служби каталогів - являє собою набір пов'язаних між собою класів, які у свою чергу, складаються з набору атрибутів.

    Нижче наведені деякі терміни, необхідні для розуміння суті схеми і принципів її оновлення.

    1. Атрибут - поле даних, що характеризує будь-яке властивість об'єкта. Об'єкт може містити тільки атрибути, прописані в схемі для його класу.

    2. Клас - формальний опис типу об'єкта в службі каталогів.

    3. Об'єкт - одиниця даних у службі каталогів.

    4. Ідентифікатор об'єкта (OID) - унікальне чисельну значення, однозначно ідентифікує елемент даних, синтаксису та інші частини розподілених додатків. Подібні ідентифікатори можна виявити в різних додатках і системах, для яких важлива глобальна унікальність елемента системи. Приклади таких програм: програми OSI, служба каталогів X.500 і SNMP. Ідентифікатори мають деревоподібну структуру, в якій головне джерело, такий як ISO, виділяє інтервал/піддерево для використання молодшими джерелами ідентифікаторів, які, у свою чергу, виділяють піддерев для дочірніх джерел. Розглянемо приклад з MSDN. OID = "1.2.840.113556.1.5.4". Тут:

    1 - ISO, кореневої джерело, виділив "1.2" для ANSI;

    2 - ANSI, виділив "1.2.840" для США;

    840 - США, виділив "1.2.840.113556" для Microsoft;

    113556 - Microsoft;

    1 - Microsoft DS;

    5 - класи NTDS;

    4 - клас Builtin-Domain.

    5. X.500 - система стандартів, розроблена спільно ISO і ITU (відома як CCITT), яка визначає способи іменування, подання даних і протоколи зв'язку для служб каталогів.

    6. Підклас - клас, який успадковується від іншого класу.

    7. Суперклас - клас, від якого успадкований один або більше підкласів.

    Схема описує всі атрибути і класи. Для кожного класу повинні бути визначені наступні атрибути:

    Poss-superiors - описує структуру дерева каталогів, визначаючи можливих "батьків" даного класу, тобто класи, в об'єкти яких може бути вкладений об'єкт даного класу.

    Must-Contain - список атрибутів, обов'язкових для заповнення.

    May-Contain - список атрибутів, доступних для заповнення.

    Всі класи безпосередньо або опосередковано через свої суперкласу успадковуються від абстрактного класу top.        

    ПОПЕРЕДЖЕННЯ   

    Зауважте, що одного разу створений клас   або атрибут неможливо видалити зі схеми надалі! Microsoft пояснює   таку поведінку тим, що не може гарантувати відсутність колізій, якщо   віддалений начебто клас чи атрибут все ще буде використовуватися в інших   частинах розподіленої системи. З тієї ж причини неможливо видалити з класу   обов'язковий атрибут. Набір само необов'язкових атрибутів можна змінювати в   будь-який час. Пам'ятайте про це під час проектування схеми.     

    Додавання нового класу в схему зводиться до вибору суперкласу, вводу імені нового класу, його OID-а X.500 та заповнення всіх описаних вище обов'язкових атрибутів. Створити клас можна за допомогою майстра створення нового класу утиліти "ADAM Schema".

    При додаванні атрибуту необхідно ввести назву нового атрибуту, OID X.500, вибрати синтаксис або тип атрибуту, задати інтервал можливих значень і вказати - чи є атрибут набором (списком) значень. Створити атрибут, як і клас, можна за допомогою передбаченого майстра створення нового атрибуту в утиліті "ADAM Schema".

    Малюнок 4. Діалогове вікно створення нового класу.

    Управління користувачами і групами користувачів

    Щоб мати можливість створення облікових записів власних користувачів ADAM, необхідно або на етапі установки, або пізніше за допомогою утиліти Ldifde.exe, імпортувати клас User, що визначений у LDF-скрипті MS-User.LDF.

    Для створення користувача достатньо в "ADAM ADSI Edit "додати новий об'єкт класу User. Після того, як новий користувач доданий, необхідно задати для нього пароль. Утиліта "ADAM ADSI Edit" дозволяє зробити це з контекстного меню користувача (пункт "Reset Password"). Поведінка об'єкта класу User налаштовується за допомогою набору атрибутів. Деякі з них:

    msDS-UserAccountDisabled - якщо TRUE, обліковий запис користувача не активована. Відразу після створення значення цього атрибута встановлюється в TRUE. Відповідно, для активації облікового запису нового користувача необхідно вручну змінити значення на FALSE.

    msDS-UserDontExpirePassword - якщо TRUE, вказує системі, що пароль даного користувача має необмежений строк дії.

    msDS-UserPasswordExpired - значення TRUE даного атрибута говорить про те, що час дії поточного пароля закінчилося, і потрібно його зміна.

    Для управління правами доступу Кращий час призначати права не безпосередньо користувачам, а групам користувачів. Такий алгоритм забезпечує найбільш гнучке адміністрування доступу до об'єктів служби каталогів. Тут групи виступають як ролей, які визначають доступ до тих чи інших частинах дерева каталогів. Відповідно користувач успадковує права доступу у групи або кількох груп, членом яких він є.

    Щоб створити групу користувачів, створюється новий об'єкт класу group. При створенні треба не забути встановити значення атрибуту groupType рівним 2147483650 (0x80000002 в шістнадцятковому поданні). Це значення вказує, що створена група є групою користувачів. За зв'язування користувачів з групою відповідає атрибут member класу group. "ADAM ADSI Edit "дозволяє додавати в групу як доменних користувачів, так і власних користувачів ADAM.

    Авторизація і керування правами доступу. Утиліта DSACLS.EXE

    Авторизація - це процес визначення, прав користувача на доступ до об'єкта служби каталогів. Визначення прав здійснюється на основі так званих списків контролю доступу - Access Control List (ACLs). Утиліта командного рядка DSACLS.EXE дозволяє переглядати і змінювати права доступу користувачів та груп користувачів.

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

    Перегляд списку контролю доступу до об'єкта з повним ім'ям 'CN = MyObject1, OU = MyApp, O = MyCompany, C = RU':        

    dsacls.exe   "localhost: 389 CN = MyObject1, OU = MyApp, O = MyCompany, C = RU"     

    Установка прав на читання об'єкту 'CN = MyObject1, OU = MyApp, O = MyCompany, C = RU' і об'єктів його піддереві групі користувачів 'CN = USER_GROUP, OU = MyApp, O = MyCompany, C = RU':        

    dsacls.exe   "localhost: 389 CN = MyObject1, OU = MyApp, O = MyCompany, C = RU"/I: T/G   "CN = USER_GROUP, OU = MyApp, O = MyCompany, C = RU": GR     

    Способи ідентифікації користувачів.

    під'єднатися до ADAM можна трьома різними способами: як користувач Windows, як користувач ADAM (клас User) або за допомогою об'єкта класу UserProxy.

    Під час встановлення ADAM запитує ім'я користувача, який надалі буде адміністратором ADAM. За замовчуванням це особа, встановлює ADAM. Всі адміністратори ADAM входять до групи користувачів Administrators, яка знаходиться у розділі конфігурації; повне ім'я цієї групи -- CN = Administrators, CN = Roles, CN = Configuration, CN = (ідентифікатор розділу конфігурації). Таким чином, ви можете призначити свого профілю Windows адміністратором ADAM і підключатися в подальшому до ADAM як користувач Windows. Точно так само можна створити свою групу в розділі програми і додати користувачів Windows до цієї групи.

    Якщо ви створили користувача ADAM і призначили йому права доступу до об'єктів розділу програми, ви можете підключатися до ADAM-у від імені цього користувача. Ім'ям користувача в цьому випадку буде повне ім'я (Distinguished Name) користувача.

    Крім описаних вище двох способів, ADAM дозволяє підключатися, використовуючи так зване перенаправлення підключення, що реалізується класом UserProxy. Об'єкт класу UserProxy зберігає в собі посилання на користувача Windows в AD. Такий режим може бути зручний, коли з додатком необхідна додаткова інформація (та, якої немає в Active Directory), пов'язана з користувачем Windows.

    Пакетна обробка. Утиліта LDIFDE.EXE

    Всі вищеописані інструменти забезпечують досить засобів для адміністрування ADAM. Проте всі зміни, такі як додавання нових класів, об'єктів і користувачів, повинні виконуватися вручну. Це не дуже зручно, особливо якщо є необхідність повторювати точно ті ж дії на іншому сервері. Типовий приклад - розробка ведеться на комп'ютері розробника, тестування на спеціальному сервері тестування, а працює додаток на робочому сервері. У цьому випадку було б зручно мати можливість виконувати всі зміни в пакетному режимі. Таку можливість надає утиліта LDIFDE.EXE, яка дозволяє експортувати дані з ADAM в LDF-скрипти та імпортувати LDF-скрипти в ADAM. Розглянемо типові випадки застосування цієї утиліти, що виникають при розробці програмного забезпечення.

    Експорт всього піддереві CN = Personnel, OU = MyApp, O = MyCompany, C = RU у вигляді, зручному для подальшого імпорту на інший сервер:        

    C: WINDOWSADAMldifde.exe   -f data.ldf-s localhost: 389-d "CN = Personnel, OU = MyApp, O = MyCompany, C = RU   "-J.-P subtree-o   "cn, distinguishedName, instanceType, whenCreated, whenChanged, uSNCreated, uSNChanged, objectGUID, objectCategory, dSCorePropagationData "     

    Імпорт даних у ADAM:        

    ldifde   -i-f data.ldf-s localhost: 389-j. -K     

    Приклади команд LDF-скриптів.

    Додавання групи користувачів:        

    dn:   CN = USER_GROUP, OU = MyApp, O = MyCompany, C = RU   

    changetype:   add   

    objectClass:   top   

    objectClass:   group   

    cn: Administrators   

    instanceType: 4   

    groupType: 2147483650     

    Видалення об'єкта:        

    dn:   CN = USER_GROUP, OU = MyApp, O = MyCompany, C = RU   

    changetype: remove     

    Зміна об'єкту:        

    dn:   CN = Object1, OU = MyApp, O = MyCompany, C = RU   

    changetype:   modify   

    replace: Color   

    Color:   RED   

    -     

    Перейменування об'єкта:        

    dn:   CN = Object1, OU = MyApp, O = MyCompany, C = RU   

    changetype:   modrdn   

    newrdn:   CN = RenamedObject1   

    deleteoldrdn:   1     

    Для розширення схеми ADAM-а потрібно використовувати командний рядок із зазначенням простору імен схеми:        

    C: WINDOWSADAMLDIFDE.EXE   -i-f SchemaExt.ldf-s localhost: 389-j. -c   "CN = Schema, CN = Configuration, DC = X" # schemaNamingContext-k             

    ПОПЕРЕДЖЕННЯ   

    Зауважте, що якщо для оновлення   даних розділу, можна використовувати утиліту LDIFDE.EXE, що йде в поставці   WINDOWS, то при зміні схеми ADAM необхідно використовувати утиліту,   встановлену разом з ADAM, інакше команда поверне помилку.       

    Вміст файлу SchemaExt.ldf, що використовується в прикладі:        

    # Додавання в схему нового   атрибута:   

    dn: CN = MyAttribute1, CN = Schema, CN = Configuration, DC = X   

    changetype: ntdsschemaadd   

    objectClass: top   

    objectClass: attributeSchema   

    attributeID: 1.3.444.656565.1.1   

    attributeSyntax: 2.5.5.12   

    isSingleValued: TRUE   

    showInAdvancedViewOnly: TRUE   

    adminDisplayName: MyAttribute1   

    oMSyntax: 64   

    lDAPDisplayName: MyAttribute1   

      

    # Додавання в схему нового класу:   

    dn: CN = MyClass1, CN = Schema, CN = Configuration, DC = X   

    changetype: ntdsschemaadd   

    objectClass: top   

    objectClass: classSchema   

    possSuperiors: container   

    subClassOf: top   

    governsID: 1.3.444.656565.2.1   

    mayContain: MyAttribute1   

    showInAdvancedViewOnly: TRUE   

    adminDisplayName: MyClass1   

    adminDescription: New class   

    lDAPDisplayName: MyClass1   

      

    dn:   

    changetype: modify   

    add: schemaUpdateNow   

    schemaUpdateNow: 1   

    -     

    У цьому прикладі перша команда створює новий атрибут MyAttribute1, а другий - новий клас MyClass1, що використовує цей атрибут. Остання команда фіксує зміни в схемі. Така команда повинна викликатися кожен раз після створення нового класу.

    Способи взаємодії програми з ADAM

    Для роботи з ADAM використовуються ті ж засоби, що й для роботи з AD. Це - Active Directory Services Interfaces (ADSI), Lightweight Directory Access Protocol (LDAP), простір імен System.DirectoryServices Microsoft. NET Framework, а також провайдер доступу до даних OLEDB ADsDSOObject.

    ADSI надає набір COM-інтерфейсів для роботи з ADAM і забезпечує найбільш широкий набір інструментів.

    LDAP - "полегшений" протокол доступу, що дозволяє змінювати вміст служби каталогів і здійснювати пошук по дереву об'єктів. LDAP може бути використаний в додатках, для яких робота з ADAM-му не є основною функціональністю.

    Простір імен System.DirectoryServices (SDS) розроблене на базі ADSI і надає можливості, схожі з тими, що надає протокол LDAP. SDS можна використовувати у програмах на базі технології Microsoft.NET.

    Провайдер доступу до даних ADsDSOObject надає SQL-подібний інтерфейс читання, зміни і пошуку даних у AD. З усіх описаних засобів це має саму низькою продуктивністю, але воно може бути використане в додатках, що виконують пошук в ADAM, якщо швидкість роботи не є критичною.

    Робота з об'єктами: читання, зміна і пошук даних

    Розглянемо роботу з ADAM на прикладі, що використовує простір імен System.DirectoryServices.

    У прикладі проводиться пошук, і в знайдених об'єктах змінюється значення властивості MyAttribute1. Перевірка існування значення атрибута не виконується - передбачається, що воно існує. Також не виконується обробка виключень. Зроблено це для того, щоб не захаращувати код прикладу.        

    using System;   

    using System.DirectoryServices;      

    namespace SDSExample   

    (   

    class SDSExample   

    (   

    [STAThread]   

    static void Main (string [] args)   

    (   

    // Підключитися до ADAM-у   

    DirectoryEntry deRoot =   

    new DirectoryEntry (   

    "LDAP:// LOCALHOST: 389/CN = Personnel, OU = MyApp, O = MyCompany, C = RU ");   

      

    // Створення об'єкту класу DirectorySearcher, що виконує пошук   

    DirectorySearcher dSeacher =   

    new DirectorySearcher (deRoot,   "(objectClass = MyClass1 )");   

    // Вказівка шукати по всьому піддереві кореневого об'єкта   

    dSeacher.SearchScope = SearchScope.Subtree;   

    // Пошук всіх об'єктів, що задовольняють   умові   

    SearchResultCollection srEntries =   dSeacher.FindAll ();   

    for (int index = 0;   index   

    (   

    // Висновок значень атірбутов об'єкта   

    SearchResult srEnrty =   srEntries [index];   

    Console.WriteLine (index);   

    Console.WriteLine ( "distinguishedName   = "   

    +   srEnrty.Properties [ "distinguishedName "]);   

    Console.WriteLine ( "MyAttribute1   = "   

    +   srEnrty.Properties [ "MyAttribute1"] [0 ]);   

    Console.WriteLine ();      

    // Зміна значення атрибута MyAttribute1   

    DirectoryEntry deEntry =   srEnrty.GetDirectoryEntry ();   

    deEntry.Properties [ "MyAttribute1"]. Value   =   

    "new_value_of_Object"   + Index.ToString ();   

    // Фіксування змін   

    deEntry.CommitChanges ();   

    deEntry.Close ();   

    )   

    deRoot.Close ();   

    )// Main ()   

    )// class SDSExample   

    )// namespace SDSExample     

    Робота з користувачами

    Для деяких програм може знадобитися можливість управління користувачами ADAM (не Windows). Роботу з користувачами з програми демонструє наступний приклад. У ньому створюється новий користувач з ім'ям 'CN = Vasiliy_Pupkin, CN = Users, OU = MyApp, O = MyCompany, C = RU' і додається до групи 'CN = USER_GROUP, OU = MyApp, O = MyCompany, C = RU'.        

    using System;   

    using System.DirectoryServices;      

    namespace ADAMUserExample   

    (   

    class ADAMUser   

    (   

    [STAThread]   

    static void Main (string [] args)   

    (   

    DirectoryEntry deUserRoot =   

    new DirectoryEntry (   

    "LDAP:// LOCALHOST: 389/CN = Users, OU = MyApp, O = MyCompany, C = RU ");   

    // Створення користувача   

    DirectoryEntry deNewUser =   deUserRoot.Children.Add (   

    "CN = Vasiliy_Pupkin",   "User ");   

    deNewUser.Properties [ "displayName"]. Value   = "Vasiliy Pupkin";   

    deNewUser.CommitChanges ();   

    // призначення пароль   

    deNewUser.Properties [ "userpassword"]. Value   = "Vasiliy_Password_1";   

    deNewUser.CommitChanges ();   

    // активацію користувача   

    deNewUser.Properties [ "msds-useraccountdisabled"]. Value   = False;   

    // скасувати терміну дії пароля   

    deNewUser.Properties [ "msds-userdontexpirepassword"]. Value   = True;   

    deNewUser.CommitChanges ();   

    DirectoryEntry deUserGroup =   

    new DirectoryEntry (   

    "LDAP://   LOCALHOST: 389/CN = USER_GROUP, OU = MyApp, O = MyCompany, C = RU ");   

    deUserGroup.Properties [ "member"]. Add (   

    deNewUser.Properties [ "distinguishedName"]. Value);   

    deUserGroup.CommitChanges ();   

    deUserGroup.Close ();   

    deNewUser.Close ();   

    deUserRoot.Close ();   

    )// Main   

    )// class ADAMUser   

    )     

    Проте якщо спробувати виконати даний приклад, використовуючи конфігурацію ADAM за замовчуванням, виникне помилка в момент застосування пароля користувача. Це відбудеться тому, що конфігурація за замовчуванням забороняє зміну паролю з використанням незахищеного каналу (у прикладі використовується порт 389 - порт незахищеного каналу, пропонований при установці ADAM). Можливі два варіанти вирішення проблеми. Перший - налаштувати захищений канал (порт захищеного каналу, пропонований при установці, 636, використовує SSL для шифрування каналу) і підключатися до ADAM через нього. Другий - налаштувати ADAM так, щоб зміна пароля через незахищене з'єднання було дозволено. Для цього необхідно встановити тринадцятий символ атрибуту dSHeuristics об'єкту конфігурації з повним ім'ям 'CN = Directory Service, CN = Windows NT, CN = Services, CN = Configuration, CN = (ідентифікатор розділу конфігурації ADAM-а) ' в '1 '. За замовчуванням значення цього атрибута в ADAM-е не встановлено.

    LDF-скрипт змінює відповідним чином конфігурацію ADAM:        

    dn:   CN = Directory Service, CN = Windows NT, CN = Services, CN = Configuration, DC = X   

    changetype:   modify   

    replace:   dSHeuristics   

    dSHeuristics   : 0000000001001   

    -     

    Виконати цей скрипт можна за допомогою утиліти LDIFDE.EXE, як показано нижче.        

    c: windowsadamldifde.exe   -i-f config.ldf-s localhost.ldf-j. -c "CN = Configuration, DC = X"   # configurationNamingContext-k     

    Особливості використання ADAM в багатокористувацьких розподілених додатках

    Робота з ADAM з розрахованих на багато додатків має один нюанс, який необхідно враховувати на етапі проектування системи. Нюанс цей стосується можливості ідентифікації (authentication) користувача ADAM. З якоїсь причини підключення до ADAM, як і до AD, можливо тільки при наявність первинного контексту безпеки (primary security token) в процесі, звертається до ADAM. Розглянемо два випадки: перший - коли програма працює від імені користувача, інформація про який зберігається в ADAM, і другий - коли додаток працює від імені поточного користувача Windows. У першому випадку код користувача і пароль вводяться під час запуску програми. Володіючи цією інформацією, програма може підключитися до ADAM під первинним контекстом безпеки в будь-який свій частини (дуже важливо для розподілених додатків). Складності виникають у другому випадку. Полягають вони в тому, що отримати первинний контекст безпеки можна тільки на тому комп'ютері, де запущено клієнтський додаток, з яким працює користувач. Цим додатком може бути як Windows-клієнт, що працює із сервером додатків, так і Internet Explorer у випадку Web-додатків. В обох випадках додатком невідомий пароль користувача. Через це виникає необхідність у передачі контексту безпеки з клієнта на сервер. Зробити це можна за допомогою функцій WinAPI InitializeSecurityContext і AcceptSecurityContext, які дозволяють зашифрувати дані про контекст безпеки користувача, передати їх до процесу сервера (можливо, на іншому комп'ютері) і відновити контекст безпеки в процесі сервера. У цьому випадку для передачі контексту безпеки необхідно використовувати механізм ідентифікації Kerberos, що не завжди можливо через складності настройки і інших причин, таких, як з'єднання клієнта і сервера через Proxy-сервер. Використовувати саме Kerberos потрібно тому, що цей механізм, на відміну від NTLM і Digest, дозволяє передавати по мережі первинний ідентифікатор безпеки.

    Розглянемо для прикладу ASP.NET-додаток. Тут існує можливість використовувати інтегровану систему безпеки Windows для ідентифікації користувача на сайті. Після ідентифікації серверний код можна запустити під упізнаних користувачем - так зване імітування (impersonation) контексту безпеки користувача. Однак домогтися таким чином бажаного результату - підключення до ADAM під користувачем програми - Не вдасться. Підключення до ADAM з-під зімітувати контексту безпеки користувача не можливо - необхідний первинний контекст безпеки. У англомовній літературі дана проблема носить назву double-hop issue, що можна перекласти як проблема подвійного стрибка. Вона виникає кожного разу, коли необхідно передати контекст безпеки від одного процесу іншої через процес-посередник. У випадку з ASP.NET-додатком процесом-джерелом є Internet Explorer, процесом-приймачем - ADAM-а, а посередником є процес ASP.NET.

    Таким чином, при проектуванні архітектури додатки, в якому передбачається використовувати ADAM, необхідно на ранньому етапі подбати про способи підключення до ADAM і методи ідентифікації користувачів у випадку багато користувачів програми.

    Висновок

    З усього вище сказаного можна зробити висновок, що ADAM є потужним інструментом, що дозволяє використовувати в додатку можливості Active Directory. Частково це так - ADAM дозволяє розширювати схему, створювати об'єкти цих класів, організовувати їх в ієрархії, а також виконувати пошук цих об'єктів. Гнучка система управління користувачами і контролем доступу надає великі можливості для використання ADAM в додатках, оперують конфіденційною інформацією. Механізми архівування і реплікації дозволяють створювати надійні відмовостійкі системи.

    Слабка ергономічність засобів адміністрування та деякі труднощі застосування в багатокористувацьких додатках кілька псують картину. Однак при грамотному проектуванні використання ADAM може стати відмінним вибором для широкого спектру програмних систем.

    Список літератури

    Для підготовки даної роботи були використані матеріали з сайту http://www.rsdn.ru/

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status