Распределённая база пользователей и регистрация.
От: 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
    !
    Re[5]: Распределённая база пользователей и регистрация.
    От: kan_izh Великобритания  
    Дата: 07.04.06 16:20
    Оценка:
    adontz wrote:

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

    > возможность зарегистрироваться на
    > _>vasia.pupkin@microsoft.com, а потом, когда Майкрософт упадёт, дать
    > возможность пользователю залогиниться на
    > _>vasia.pupkin@google.com и использовать все данные, которые были на
    > майкрософтовском серваке.
    >
    > Да, но тут какое дело. Если я регистрируюсь на microsoft.com то к логину
    > добавляется microsoft.com Если microsoft.com не доступен, то я не могу
    > зарегистрироватся с логином оканчивающимся на microsoft.com. Это всё же
    > меньшее зло, чем два одинаковых логина или невозможность регистрации.
    Тогда пользователь должен будет явно вводить
    vasia.pupkin@microsoft.com или vasia.pupkin@google.com.
    Т.е. юзер хочет зарегистрироваться как vasia.pupkin, а система ему говорит: "Ты на самом деле будешь не Вася, а Вася
    Майкрософов, запомни это и никогда не забывай!"
    Иначе как можно будет узнать, какой именно сервер авторизации (или данные какого сервера) в данный момент использовать
    (в распределённой системе)?
    Posted via RSDN NNTP Server 2.0
    но это не зря, хотя, может быть, невзначай
    гÅрмония мира не знает границ — сейчас мы будем пить чай
    Re: Распределённая база пользователей и регистрация.
    От: WolfHound  
    Дата: 07.04.06 16:22
    Оценка: 36 (1) +1
    Здравствуйте, adontz, Вы писали:

    А как на счет того чтобы в качестве логина использовать адрес электронной почты?
    ... << RSDN@Home 1.1.4 beta 6a rev. 436>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[6]: Распределённая база пользователей и регистрация.
    От: adontz Грузия http://adontz.wordpress.com/
    Дата: 07.04.06 16:48
    Оценка:
    Здравствуйте, kan_izh, Вы писали:

    _>Тогда пользователь должен будет явно вводить

    _>vasia.pupkin@microsoft.com или vasia.pupkin@google.com.

    Не, ну microsoft.com, google.com будет в комбобоксе.

    _>Т.е. юзер хочет зарегистрироваться как vasia.pupkin, а система ему говорит: "Ты на самом деле будешь не Вася, а Вася

    _>Майкрософов, запомни это и никогда не забывай!"

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

    WH>А как на счет того чтобы в качестве логина использовать адрес электронной почты?


    Идея с одной стороны здравая, а с другой я не вполне уверен что этот e-mail мне потом где-нибудь ещё понадобится.
    Но я подумаю.
    A journey of a thousand miles must begin with a single step © Lau Tsu
    Re[3]: Распределённая база пользователей и регистрация.
    От: WolfHound  
    Дата: 07.04.06 17:15
    Оценка:
    Здравствуйте, adontz, Вы писали:

    A>Идея с одной стороны здравая, а с другой я не вполне уверен что этот e-mail мне потом где-нибудь ещё понадобится.

    A>Но я подумаю.
    Например при активации аккаунта.
    ... << RSDN@Home 1.1.4 beta 6a rev. 436>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[7]: Распределённая база пользователей и регистрация.
    От: kan_izh Великобритания  
    Дата: 07.04.06 18:34
    Оценка:
    adontz wrote:

    > Не, ну microsoft.com, google.com будет в комбобоксе.

    Интересно, на основании чего юзер будет выбирать элемент в комбобоксе?

    > _>Т.е. юзер хочет зарегистрироваться как vasia.pupkin, а система ему

    > говорит: "Ты на самом деле будешь не Вася, а Вася
    > _>Майкрософов, запомни это и никогда не забывай!"
    >
    > Ну а с электронной почтой не так? И все живы
    Там не распределённая система. Если microsoft.com упадёт, то vasia.pupkin@microsoft.com потеряет всё, и если
    microsoft.com лежит, то никто не узнает, что vasia.pupkin@microsoft.com вообще существует. Хотя, может автору поста это
    и нужно... не знаю, может я не так его требования понял:

    Время от времени сервера обмениваются данными полученными от клиентов

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

    _>Интересно, на основании чего юзер будет выбирать элемент в комбобоксе?


    Личные предпочтения

    _>Там не распределённая система. Если microsoft.com упадёт, то vasia.pupkin@microsoft.com потеряет всё, и если

    _>microsoft.com лежит, то никто не узнает, что vasia.pupkin@microsoft.com вообще существует. Хотя, может автору поста это
    _>и нужно... не знаю, может я не так его требования понял:
    _>

    Время от времени сервера обмениваются данными полученными от клиентов

    _>почта это не делает.

    Нет нет, ничего он не потерят — "сервера обмениваются данными полученными от клиентов". Этот Вася и всё что он натворил со временем появится на всех серверах.
    A journey of a thousand miles must begin with a single step © Lau Tsu
     
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.