Распределённая база пользователей и регистрация.
От: adontz Грузия http://adontz.wordpress.com/
Дата: 07.04.06 00:45
Оценка:
Вот возникла интересная задача. Скорее даже теоретическая.

Пусть у нас есть некоторая сетевая система с несколькими равноправными серверами. Клиентское ПО может подключится к любому и конкретный выбор не отражается на поведении. Клиентское ПО пишет и читает данные с сервера. Время от времени сервера обмениваются данными полученными от клиентов. Пожалуй наиболее похожая система это Active Directory для Windows 2000 и выше.

Проблема: регистрация пользователя.
Пусть пользователь Вася Пупкин зашёл на сервер A и зарегистровал логин vasja, а пользователь Вася Тяпкин зашёл на сервер B и тоже зарегистрировал логин vasja. Очевидна проблема — что делать с двумя одинаковыми логинами (пользователи идентифицируются по GUIDам, но для аутенфикации используются логины)? Тем более что до того как ситуация будет обнаружена оба пользователя могут записать некоторые данные, связанные с ними.
Я не хочу
  • Заставлять регистрироваться одновременно на всех серверах
  • Нарушать равноправие серверов и помечать какой-либо сервер как главный.
  • Удалять какие-либо учётные записи и связанные с ними данные.
  • A journey of a thousand miles must begin with a single step © Lau Tsu
    Re: Распределённая база пользователей и регистрация.
    От: Andir Россия
    Дата: 07.04.06 02:04
    Оценка:
    Здравствуйте, adontz, Вы писали:

    A>Вот возникла интересная задача. Скорее даже теоретическая.


    [skipped]

    Смотрел такую штуку как Microsoft Enterprise Single Sign-On ?

    С Уважением, Andir!
    using( RSDN@Home 1.2.0 alpha rev. 635 ) { /* Работаемс ... */ }
    Re: Распределённая база пользователей и регистрация.
    От: Mikhail Polykovsky Россия http://glader.ru
    Дата: 07.04.06 02:46
    Оценка:
    A>Проблема: регистрация пользователя.
    A>Пусть пользователь Вася Пупкин зашёл на сервер A и зарегистровал логин vasja, а пользователь Вася Тяпкин зашёл на сервер B и тоже зарегистрировал логин vasja. Очевидна проблема — что делать с двумя одинаковыми логинами (пользователи идентифицируются по GUIDам, но для аутенфикации используются логины)? Тем более что до того как ситуация будет обнаружена оба пользователя могут записать некоторые данные, связанные с ними.
    A>Я не хочу
    A>
  • Заставлять регистрироваться одновременно на всех серверах
    A>
  • Нарушать равноправие серверов и помечать какой-либо сервер как главный.
    A>
  • Удалять какие-либо учётные записи и связанные с ними данные.

    Так это вроде стандартно
    1. Сервер, получивший запрос на регистрацию, отсылает всем остальным серверам сообщение о блокировке логина
    2. Регистрирует пользователя
    3. Отсылает всем серверам, что логин зарегистрирован.

    Единственный вопрос — как сервера будут узнавать друг о друге. Без этого никак.
  • Re: Распределённая база пользователей и регистрация.
    От: _INDY_ Россия  
    Дата: 07.04.06 03:03
    Оценка:
    Здравствуйте, adontz, Вы писали:

    A>Вот возникла интересная задача. Скорее даже теоретическая.


    A>Пусть у нас есть некоторая сетевая система с несколькими равноправными серверами. Клиентское ПО может подключится к любому и конкретный выбор не отражается на поведении. Клиентское ПО пишет и читает данные с сервера. Время от времени сервера обмениваются данными полученными от клиентов. Пожалуй наиболее похожая система это Active Directory для Windows 2000 и выше.


    A>Проблема: регистрация пользователя.

    A>Пусть пользователь Вася Пупкин зашёл на сервер A и зарегистровал логин vasja, а пользователь Вася Тяпкин зашёл на сервер B и тоже зарегистрировал логин vasja. Очевидна проблема — что делать с двумя одинаковыми логинами (пользователи идентифицируются по GUIDам, но для аутенфикации используются логины)? Тем более что до того как ситуация будет обнаружена оба пользователя могут записать некоторые данные, связанные с ними.
    A>Я не хочу
    A>
  • Заставлять регистрироваться одновременно на всех серверах
    A>
  • Нарушать равноправие серверов и помечать какой-либо сервер как главный.
    A>
  • Удалять какие-либо учётные записи и связанные с ними данные.

    Ок. А почему бы не классифицировать сервера по выполняемым задачам? Получается, если четыре сервера могут раздавать данные, а бсолютно равноправно, то регистрироваться действительно нельзя, а кроме того нужно ещё считать например деньги за проспотренный контент и проводить прочее административное журналирование, т.о. ИМХО всплывает пятый сервер — сервер регистрации и у правления, а так же он же мршрутизатор и редиректор .... но сам контент он не предоставляет, такая модель помоему имеет право на жизнь ...
  • Per Aspera Ad Astra
    Re[2]: Распределённая база пользователей и регистрация.
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 07.04.06 10:33
    Оценка:
    Здравствуйте, _INDY_, Вы писали:

    _IN>Ок. А почему бы не классифицировать сервера по выполняемым задачам? Получается, если четыре сервера могут раздавать данные, а бсолютно равноправно, то регистрироваться действительно нельзя, а кроме того нужно ещё считать например деньги за проспотренный контент и проводить прочее административное журналирование, т.о. ИМХО всплывает пятый сервер — сервер регистрации и у правления, а так же он же мршрутизатор и редиректор .... но сам контент он не предоставляет, такая модель помоему имеет право на жизнь ...


    А если главный сервер будет недоступен?
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[2]: Распределённая база пользователей и регистрация.
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 07.04.06 10:34
    Оценка:
    Здравствуйте, Andir, Вы писали:

    A>Смотрел такую штуку как Microsoft Enterprise Single Sign-On ?


    Нет. Погуглил нашёл только статьи, она во что-то входит? Вообще мне бы алгоритм
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[2]: Распределённая база пользователей и регистрация.
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 07.04.06 10:39
    Оценка:
    Здравствуйте, Mikhail Polykovsky, Вы писали:

    MP>1. Сервер, получивший запрос на регистрацию, отсылает всем остальным серверам сообщение о блокировке логина

    MP>2. Регистрирует пользователя
    MP>3. Отсылает всем серверам, что логин зарегистрирован.

    MP>Единственный вопрос — как сервера будут узнавать друг о друге. Без этого никак.


    Сервера друг о друге знают, но это не спасает. Представим себе такой сценарий.
    Есть пользователи P и Q и сервера X и Y
    Связи P-X, Q-Y работают, а вот связи P-Y, P-Q, Q-X, X-Y не работают. Скажем сетевой сбой. Это вполне вероятно если P и X в одной подсети, а Q-Y в другой.
    P послал запрос на регистрацию логина vasja серверу X, а Q послал аналогичный запрос серверу Y.
    X разослал всем оповещения, но до Y они не дошли, потому что сетевой сбой. И наоборот от Y к X тоже ничего не попало.
    И чё мне делать?
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[3]: Распределённая база пользователей и регистрация.
    От: Mikhail Polykovsky Россия http://glader.ru
    Дата: 07.04.06 10:47
    Оценка: +1
    A> Скажем сетевой сбой.

    Если сетевой сбой, или более общо, сервера не знают друг о друге, то задача не решаема.
    Re: Распределённая база пользователей и регистрация.
    От: GlebZ Россия  
    Дата: 07.04.06 11:02
    Оценка:
    Здравствуйте, adontz, Вы писали:

    А зачем аутентифицировать на всех серваках, а не отдельном сервере.
    В случае с Kerberos, при аутентификации к любому серваку, он прокидывает аутентифицирующую информацию на сервер Kerberos. Тот генерит некоторый уникальный тикет. И далее пользователь работает равноправно со всеми сервисами пользуясь данным тикетом. И сервер в любой момент может подтвердить данный тикет с помощью выделеного сервера Kerberos. Active Directory содержит в себе как раз Kerberos.
    Re[2]: Распределённая база пользователей и регистрация.
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 07.04.06 11:05
    Оценка:
    Здравствуйте, GlebZ, Вы писали:

    GZ>А зачем аутентифицировать на всех серваках, а не отдельном сервере.

    GZ>В случае с Kerberos, при аутентификации к любому серваку, он прокидывает аутентифицирующую информацию на сервер Kerberos. Тот генерит некоторый уникальный тикет. И далее пользователь работает равноправно со всеми сервисами пользуясь данным тикетом. И сервер в любой момент может подтвердить данный тикет с помощью выделеного сервера Kerberos. Active Directory содержит в себе как раз Kerberos.

    А если самый главный сервер станет недоступен?
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re: Распределённая база пользователей и регистрация.
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 07.04.06 11:06
    Оценка: 36 (1) +1
    Здравствуйте, adontz, Вы писали:

    A>что делать с двумя одинаковыми логинами (пользователи идентифицируются по GUIDам, но для аутенфикации используются логины)?


    кроме логина использовать дополнительно "имя" сервера. Например: vasia.pupkin@google.com vs. vasia.pupkin@microsoft.com.

    Так же почитать:
    http://www-128.ibm.com/developerworks/java/library/j-gss-sso/
    http://openid.net/
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Re[2]: Распределённая база пользователей и регистрация.
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 07.04.06 11:07
    Оценка:
    Здравствуйте, Andrei N.Sobchuck, Вы писали:

    ANS>кроме логина использовать дополнительно "имя" сервера. Например: vasia.pupkin@google.com vs. vasia.pupkin@microsoft.com.


    Хмм.... это идея. Надо подумать, спасибо!
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re: Распределённая база пользователей и регистрация.
    От: prVovik Россия  
    Дата: 07.04.06 11:10
    Оценка: 36 (1)
    Здравствуйте, adontz, Вы писали:

    A>Вот возникла интересная задача. Скорее даже теоретическая.


    А если к логину явно, или неявно добавлять имя сервера? Тогда достаточно будет обеспечить уникальность логина в пределах одного сервера.
    лэт ми спик фром май харт
    Re[3]: Распределённая база пользователей и регистрация.
    От: GlebZ Россия  
    Дата: 07.04.06 11:13
    Оценка:
    Здравствуйте, adontz, Вы писали:

    GZ>>А зачем аутентифицировать на всех серваках, а не отдельном сервере.

    GZ>>В случае с Kerberos, при аутентификации к любому серваку, он прокидывает аутентифицирующую информацию на сервер Kerberos. Тот генерит некоторый уникальный тикет. И далее пользователь работает равноправно со всеми сервисами пользуясь данным тикетом. И сервер в любой момент может подтвердить данный тикет с помощью выделеного сервера Kerberos. Active Directory содержит в себе как раз Kerberos.

    A>А если самый главный сервер станет недоступен?

    А причем тут главный сервер. Доступен должен быть сервер с Kerberos для всех остальных серваков. Есть также в WSE3 какая-то фигня, которая делает распределенную аутентификация с разными web сервисами. Но что именно такое — не смотрел за ненадобностью. Возможно что-то похожее на то, что нужно тебе.
    Re[3]: Распределённая база пользователей и регистрация.
    От: GlebZ Россия  
    Дата: 07.04.06 11:13
    Оценка:
    Здравствуйте, adontz, Вы писали:

    GZ>>А зачем аутентифицировать на всех серваках, а не отдельном сервере.

    GZ>>В случае с Kerberos, при аутентификации к любому серваку, он прокидывает аутентифицирующую информацию на сервер Kerberos. Тот генерит некоторый уникальный тикет. И далее пользователь работает равноправно со всеми сервисами пользуясь данным тикетом. И сервер в любой момент может подтвердить данный тикет с помощью выделеного сервера Kerberos. Active Directory содержит в себе как раз Kerberos.

    A>А если самый главный сервер станет недоступен?

    А причем тут главный сервер. Доступен должен быть сервер с Kerberos для всех остальных серваков. Есть также в WSE3 какая-то фигня, которая делает распределенную аутентификация с разными web сервисами. Но что именно такое — не смотрел за ненадобностью. Возможно что-то похожее на то, что нужно тебе.
    Re[3]: Распределённая база пользователей и регистрация.
    От: GlebZ Россия  
    Дата: 07.04.06 11:28
    Оценка:
    Здравствуйте, adontz, Вы писали:

    GZ>>А зачем аутентифицировать на всех серваках, а не отдельном сервере.

    GZ>>В случае с Kerberos, при аутентификации к любому серваку, он прокидывает аутентифицирующую информацию на сервер Kerberos. Тот генерит некоторый уникальный тикет. И далее пользователь работает равноправно со всеми сервисами пользуясь данным тикетом. И сервер в любой момент может подтвердить данный тикет с помощью выделеного сервера Kerberos. Active Directory содержит в себе как раз Kerberos.

    A>А если самый главный сервер станет недоступен?

    А причем тут главный сервер. Доступен должен быть сервер с Kerberos для всех остальных серваков. Есть также в WSE3 какая-то фигня, которая делает распределенную аутентификация с разными web сервисами. Но что именно такое — не смотрел за ненадобностью. Возможно что-то похожее на то, что нужно тебе.
    Re[3]: Распределённая база пользователей и регистрация.
    От: _INDY_ Россия  
    Дата: 07.04.06 11:38
    Оценка:
    Здравствуйте, adontz, Вы писали:
    A>А если главный сервер будет недоступен?
    Не разрешать регистрироваться, вот и всё ... а услуги предоставлять можно, он же не на всегда недоступен ...
    Per Aspera Ad Astra
    Re[3]: Распределённая база пользователей и регистрация.
    От: kan_izh Великобритания  
    Дата: 07.04.06 12:56
    Оценка:
    adontz wrote:

    > ANS>кроме логина использовать дополнительно "имя" сервера. Например:

    > vasia.pupkin@google.com vs. vasia.pupkin@microsoft.com.
    >
    > Хмм.... это идея. Надо подумать, спасибо!
    Ну с этого и надо было начинать. Просто я подумал, что требуется возможность зарегистрироваться на
    vasia.pupkin@microsoft.com, а потом, когда Майкрософт упадёт, дать возможность пользователю залогиниться на
    vasia.pupkin@google.com и использовать все данные, которые были на майкрософтовском серваке. Это и означает
    распределённость. А так — просто несколько разных серверов, в чём распределённость?

    Хотя действительно, так ли часто регятся юзеры по сравнению с частотой логинов? Пусть всё же будет один выделенный
    сервак для регистрации.
    Posted via RSDN NNTP Server 2.0
    но это не зря, хотя, может быть, невзначай
    гÅрмония мира не знает границ — сейчас мы будем пить чай
    Re[4]: Распределённая база пользователей и регистрация.
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 07.04.06 13:42
    Оценка:
    Здравствуйте, kan_izh, Вы писали:


    _>Ну с этого и надо было начинать. Просто я подумал, что требуется возможность зарегистрироваться на

    _>vasia.pupkin@microsoft.com, а потом, когда Майкрософт упадёт, дать возможность пользователю залогиниться на
    _>vasia.pupkin@google.com и использовать все данные, которые были на майкрософтовском серваке.

    Да, но тут какое дело. Если я регистрируюсь на microsoft.com то к логину добавляется microsoft.com Если microsoft.com не доступен, то я не могу зарегистрироватся с логином оканчивающимся на microsoft.com. Это всё же меньшее зло, чем два одинаковых логина или невозможность регистрации.
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[5]: Распределённая база пользователей и регистрация.
    От: Andrei N.Sobchuck Украина www.smalltalk.ru
    Дата: 07.04.06 14:07
    Оценка:
    Здравствуйте, adontz, Вы писали:

    A>Да, но тут какое дело. Если я регистрируюсь на microsoft.com то к логину добавляется microsoft.com Если microsoft.com не доступен, то я не могу зарегистрироватся с логином оканчивающимся на microsoft.com. Это всё же меньшее зло, чем два одинаковых логина или невозможность регистрации.


    Кстати, я всегда думал, что именно так работает винда. Типа "по мне лазит Вася авторизованый машиной Ф, и Вася с машины З".
    http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Я ненавижу Hibernate
    Автор: Andrei N.Sobchuck
    Дата: 08.01.08
    !
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.