Этот вопрос является продолжением Как передать требуемые претензии поставщику удостоверений 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