MyOpenID в ACS: добавление требуемых типов заявок - PullRequest
2 голосов
/ 04 августа 2011

Этот вопрос является продолжением Как передать требуемые претензии поставщику удостоверений OpenID с помощью Azure ACS?

Это немного другое решение проблемы, поэтому я публикую этокак новый вопрос.Примечание. Я также пересылаю это на форум безопасности Azure , но до сих пор не получил никакого полезного ввода.

Примеры Azure ACS показывают, чтоможно добавить произвольных поставщиков идентификаторов OpenID в ACS.Но для того, чтобы ACS действительно была полезна в нашем проекте как STS для различных популярных провайдеров, мы намеревались заставить ACS работать с MyOpenID.com (опять же, также используется в примерах).Проблема, как и , которую хорошо показывает Витторио , заключается в том, что MyOpenID не будет выдавать нам претензии, такие как имя и адрес электронной почты , если не будет запрошено .Витторио и другие утверждают, что это связано с тем, что MyOpenID не поддерживает обмен атрибутами.

Хотя я не уверен в этом.Углубившись немного глубже в URL-адрес запроса, который генерирует ACS, я вижу такие параметры, как openid.ns.ax=http://openid.net/srv/ax/1.0 и openid.ax.required=email,fullname,firstname,lastname.Кроме того, openid.ax.type.email набирается для типа axschema.org/contact/email.Вот где дела идут не так с MyOpenID.MyOpenID не понимает типы axschema.org и, следовательно, не возвращает значение электронной почты.

Что я знаю, так это то, что MyOpenID понимает тип schema.openid.net/contact/email.Основываясь на этом, я вручную изменил URL-адрес запроса ACS, чтобы использовать схему openid.net вместо axschema.И вот, MyOpenID реагирует и показывает, что мой адрес электронной почты фактически будет возвращен.

Вот список параметров, которые я пытаюсь передать конечной точке myopenid.com/server:

К сожалению, когда ответ возвращается в ACS, он недостаточно хорош, и в ACS происходит сбой со следующими кодами ошибок:

Код ошибки HTTP:400 Сообщение: ACS30000: при обработке ответа на вход OpenID произошла ошибка.Внутреннее сообщение: ACS90014: отсутствует обязательное поле «openid.ax.value.email».Идентификатор трассировки: f8e09e6f-0765-4370-9f03-f744cce6fa2a Метка времени: 2011-08-02 17: 12: 57Z

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

Вопрос: : параметры моего запроса выглядят вам правильно или я что-то упускаю здесь очевидное?

ПРИМЕЧАНИЕ: моя первоначальная настройка работает, если я оставляю запрос ACS без изменений и в ACS только настраиваетединое правило Passthrough для провайдера идентификации, я могу успешно аутентифицировать свой веб-сайт через ACS с помощью провайдера идентификации MyOpenID.Проблема остается, однако, что MyOpenID не будет передавать, например, FullName или Email в ACS, если запрос от ACS явно не запрашивает типы претензий http://schema.openid.net/namePerson или http://schema.openid.net/contact/email

1 Ответ

0 голосов
/ 10 апреля 2012

По соображениям безопасности ACS не может позволить вызывающим абонентам повторно вводить адрес электронной почты.Фактически, то, что вы делаете по незнанию, это вариант атаки 4.5 (путаница типов данных OpenID) из этой статьи .По соображениям безопасности ACS должен убедиться, что адрес электронной почты и другие поддерживаемые им утверждения AX точно соответствуют типам, о которых он знает, в противном случае злоумышленники могут обмануть ACS и заменить одно утверждение другим.Дело не в том, что ACS не поддерживает AX, а в том, что ACS поддерживает только один тип претензии в качестве претензии электронной почты, и это не то же самое, что MyOpenID использует.Короче говоря, это не сработает.

...