Совпадение идентификатора имени Azure ACS из Live ID со списком известных пользователей? - PullRequest
2 голосов
/ 14 декабря 2011

Судя по вопросам, опубликованным здесь только по стековому потоку, Azure ACS разочаровывает многих разработчиков из-за невозможности предоставить адрес электронной почты для пользователя Windows Live ID.Это, безусловно, было бы полезно не только для регистрации новых членов, но и для аутентификации возвращающихся.Возможно, последняя цель все еще достижима без какого-либо явного процесса, посредством которого участник подключает учетные данные поставщика удостоверений к своей учетной записи?

Возможно ли, что утверждение "nameidentifier", которое ACS предоставляет пользователям Live ID, может быть сопоставлено справильно закодированный адрес электронной почты зарегистрированного пользователя?Я предполагаю, что это процесс:

  1. Посетитель регистрируется на веб-сайте проверяющей стороны без аутентификации через ACS.Запись участника сохраняется вместе с адресом электронной почты, который также зарегистрирован с Live ID.
  2. Веб-сайт хеширует предоставленный адрес электронной почты, используя хэш-функцию, специфичную для Live ID, и сохраняет его в дополнение к исходному адресу, если пользователь может пройти аутентификацию с Live ID.
  3. Участник возвращается сне идентифицирующий cookie и выбирает для аутентификации учетные данные Live ID через ACS.
  4. ACS возвращает утверждение nameidentifier для Live ID.
  5. Веб-сайт сопоставляет nameidentifier с хешированным адресом с шага 2.
  6. Сайт входит в систему.

Кто-нибудь знает, может ли такая хеш-функция быть общедоступной?

Cheers

BillVo

Ответы [ 3 ]

5 голосов
/ 14 декабря 2011

Я не думаю, что это возможно. Идентификатор имени зависит от пространства имен ACS. Это был намеренный выбор дизайна, чтобы не допустить сотрудничества (сговора) нескольких сайтов и отслеживания пользователей. У вас нет возможности создать хеш-код LiveID, который будет соответствовать заявке на определение имени (если я понимаю, что вы предлагаете). Если бы я мог предсказать, что это будет, это сделало бы имя-идентификатор довольно бесполезным. В частности, я мог бы затем «отменить» хеш, предсказав все потенциальные веб-сайты, с которыми я хотел бы вступить в сговор, и мы могли бы поделиться этой информацией, объясняя причину существования.

Для LiveID достаточно легко связать логин ACS с профилем пользователя: сначала вам нужно авторизоваться через ACS, а затем зарегистрироваться на своем сайте. В это время вы сохраняете либо в своем локальном профиле, либо в правиле в ACS адрес электронной почты пользователя. Я предпочитаю первое (то есть, если я вижу идентификатор имени X, я ищу профиль в своем источнике данных и знаю адрес электронной почты пользователя). Тем не менее, в ACS невозможно просто предоставить правило, которое принимает входящее утверждение идентификатора X-имени и создает исходящее утверждение адреса электронной почты, предоставленного пользователем. Недостатком этого является то, что вы предоставляете потенциально тонны правил в ACS для обеспечения этого.

2 голосов
/ 15 декабря 2011

Все, что сказал Даннри!

Серьезно, хотя - я думаю, что Live ID делает здесь правильные вещи - в то время, когда пользователь предоставлял данные для Live ID (регистрации), он не соглашался делиться этой информацией с кем-либо еще, и обмен этой информацией не должен предварительное условие для использования любого веб-сайта / приложения.

ACS и Live ID предоставляют вам механизм для неоднократной однозначной идентификации пользователя, затем вы должны запросить у пользователя любые другие необходимые вам данные и сохранить их самостоятельно.

Google, например, делает шаг к тому, чтобы делиться именем пользователя и адресом электронной почты, когда нет причин для этого. Я написал об этом здесь

0 голосов
/ 07 сентября 2012

Вам нужно использовать Windows Live SDK , чтобы получить профиль пользователя.

...