Когда не использовать СКУД?

Я изучал службу управления доступом Azure (ACS), и похоже, что она особенно хорошо справляется с проверкой подлинности от разнородных (настраиваемых) поставщиков удостоверений. Кроме того, существует ряд дополнительных сценариев, которые он поддерживает (например, см. -Кому).

Вопрос у меня противоположный: это действительно помогло бы мне понять, для того чтобы использовать его правильно, для чего ACS не подходит. Каковы ограничения ACS и/или в каких сценариях ACS не подходит?

(Предположим, в качестве аргумента, что я планирую создать — прибыльный :) — общедоступный веб-API и соответствующий интерфейс веб-сайта, размещенный в Azure, — т. е. что меня волнует идентификация пользователя. Если хотите, можете предположить, что моя система будет построена с использованием .NET.)

Спасибо!


person Lars Kemmann    schedule 06.06.2012    source источник
comment
Вау, открытый вопрос, я использовал ACS в производственной среде, и мне это нравится, одно ограничение не в ACS, а в Windows Live заключается в том, что вы не можете получить тип утверждения для адреса электронной почты человека «AZURE ACS — Windows Live ID — как мне получить адрес электронной почты и имя аутентифицированного пользователя?': stackoverflow.com/questions/7871960/ Вы можете обойти это, но Я чувствовал, что это раздражает. Интересно узнать мнение других!!   -  person user728584    schedule 06.06.2012
comment
@ user728584: Спасибо за ссылку. Тот факт, что мне все еще приходится управлять своими собственными регистрациями пользователей, также поднимается в этом вопросе. Да, я уже некоторое время копаюсь в документации ACS, видео Витторио Берточчи и т. д. :), и, надеюсь, спрашивая наоборот, я проясню ситуацию.   -  person Lars Kemmann    schedule 06.06.2012
comment
Что ж, вы на правильном пути с Витторио (личность адмирала). ADFSV2 также превосходен, мои клиенты используют его вместе с аутентификацией на основе форм (существующая функциональность), чтобы предложить широкой публике вход в социальные сети, например. Facebook, переносящий все проблемы безопасности на ACS, работает на славу!   -  person user728584    schedule 06.06.2012


Ответы (2)


Не следует использовать ACS в качестве поставщика удостоверений.

Иногда я вижу некоторую путаницу в отношении того, какую роль выполняет ACS. ACS в своей основе является поставщиком федерации, но существует допустимый сценарий, в котором вы хотите, чтобы ваша серверная служба (доверенная подсистема) выполняла аутентификацию непосредственно в ACS с использованием общего секрета или сертификата. Это можно сделать с помощью сервисных идентификаторов. Однако я неоднократно видел предложенные сценарии ACS, в которых должны быть предоставлены несколько учетных записей, и это должно было быть достигнуто путем создания удостоверения службы для каждого пользователя.

На самом деле ACS устроен не так. Если у вас вдруг появятся тысячи пользователей, использование ACS в качестве авторитетного исходного пользовательского каталога не будет масштабироваться. ACS предлагает хороший механизм правил, который был разработан для нормализации входящих типов утверждений от различных поставщиков удостоверений или для простой политики авторизации, такой как создание утверждений ролей.

Но здесь возможности ACS не следует путать с полнофункциональными решениями для каталогов, аутентификации и авторизации, такими как AD и ADFS. Короче говоря, ACS — это не упрощенная версия AD/ADFS.

person Andrew Lavers    schedule 07.06.2012
comment
Спасибо, это то, что я хочу понять. (На самом деле я собирался сделать именно это. У меня есть большое количество клиентских устройств, которым необходимо пройти аутентификацию с помощью отдельных сертификатов X.509. Я изо всех сил пытался концептуально связать это с ACS. Однако тема для другого вопроса.) - person Lars Kemmann; 08.06.2012

Несмотря на то, что вы можете использовать Windows Live в качестве поставщика удостоверений в ACS, в некоторых случаях вы не захотите его использовать. Полученный идентификатор пользователя зависит от пространства имен ACS. Это означает, что если ваше приложение использует несколько пространств имен ACS (скажем, одно для Европы и одно для США), это может вызвать некоторые проблемы.

Представьте себе сценарий, в котором ваш пользователь входит в систему через ваше пространство имен USA. Ваше приложение получит идентификатор (хэш) для этого пользователя, и вы, возможно, создадите профиль для этого пользователя в своем приложении. Через неделю ваш пользователь отправится в Европу и может войти в систему через ваше пространство имен europe. Несмотря на то, что это тот же пользователь, вы получите другой идентификатор (хэш) для этого пользователя, что создаст впечатление, что это новый пользователь, хотя это не так. Это связано с тем, что идентификатор (хэш) зависит от пространства имен ACS.

Цитируя сотрудника MSFT:

Идентификатор пользователя, который вы получаете от ACS для идентификатора Windows Live ID, будет специфичным для этого пользователя в вашем пространстве имен службы. Если вы используете другое пространство имен службы, вы получите другое значение для того же пользователя. Итак, чтобы ответить на ваши вопросы: * Labs ACS и Prod ACS [Разные идентификаторы]

  • Разные проверяющие стороны в разных подписках (в prod) [Разные идентификаторы]

  • Разные RP в одной подписке [один и тот же идентификатор, если пространство имен службы одно и то же, разные для двух пространств имен в одной подписке]

  • Если я удалю и пересоберу RP в тот же мир, тот же аккаунт [Same ID]

Обновление:

Чтобы ответить на один из комментариев, вы действительно не получите адрес электронной почты от поставщика удостоверений Windows Live. Но вы должны исходить из того, что вы не можете контролировать информацию, которую получаете от общедоступных поставщиков удостоверений. Хорошей практикой было бы просто зависеть от идентификатора пользователя и создать профиль для пользователя (вы будете управлять профилем в своем приложении). Когда вы получаете некоторую информацию от поставщика удостоверений, вы уже можете обновить профиль, но если эта информация недоступна, вы должны просто попросить пользователя обновить свой профиль. Обязательно просмотрите пример BlobShare для получения дополнительной информации.

person Sandrino Di Mattia    schedule 06.06.2012
comment
+1 за подробный ответ. Но то, о чем вы говорите, — это техническое (ну, конструктивное) ограничение ACS в конкретном сценарии. Меня больше интересуют сценарии, в которых ACS не подходит. - person Lars Kemmann; 07.06.2012