2013-06-17 5 views
0

У меня возникла проблема с входом в OpenId с помощью ASP.Net (MVC) и библиотеки DotNetOpenAuth. Поставщик OpenId, с которым я должен подключиться, предоставляет тот же (статический) ответ для OP-обнаружения и запросов на поиск пользователей. Из-за этого библиотека DotNetOpenAuth всегда говорит мне, что аутентификация не удалась. Поставщик сказал мне отключить запрос на обнаружение пользователя.Запрос DotNetOpenAuth без открытия пользователя

Может ли кто-нибудь помочь мне, как это сделать с помощью DotNetOpenAuth? Я пока не нашел решения.

Это, как я подключиться к провайдеру OpenId:

var providerUrl= ConfigurationManager.AppSettings["OpenIdUrl"]; 
IAuthenticationRequest request = openId.CreateRequest(Identifier.Parse(providerUrl)); 
return request.RedirectingResponse.AsActionResult(); 

ответ

0

Спасибо за исследование причин отказа и связи с OP уже. Это должно сделать намного быстрее. Оператор OP имеет неправильно настроенный OP. В разделе 11.2 спецификации OpenID 2.0, мы читаем:

Если Заявленный идентификатор включен в утверждении, он должен быть был обнаружен полагающаяся сторона и информацией в утверждении должен присутствовать в обнаруженном Информация. Идентифицированный идентификатор НЕ ДОЛЖЕН быть идентификатором OP.

Из последнего предложения, мы получаем, что «статические» XRDS, возвращаемый идентификатор пользователя не должен быть идентификатор OP, но она есть, и из других мест в спецификации мы узнаем, что OP Идентификаторы имеют приоритет по идентификаторам пользователей (что является причиной того, что идентификатор OP здесь запрещен). OP должен исправить документ XRDS, который они возвращают из пользовательских идентификаторов, чтобы опустить конечную точку службы идентификатора OP.

Просим выслать вышеуказанное на любой неисправный ОП и попросить их исправить их ошибку.


Ниже не поддерживается, и не рекомендуется, поскольку это приводит к вашей полагающейся стороне отклониться от спецификации OpenID 2.0, нарушенным «НЕ ДОЛЖНО» положение, и это может ввести дыры в безопасности в вашем приложении:

: Способ настройки доверенной стороны DotNetOpenAuth для работы даже для этих ошибочных OP, вышеупомянутый отказ от ответственности применяется к этому методу. Добавьте этот фрагмент в файл web.config:

<dotNetOpenAuth> 
    <openid> 
     <relyingParty> 
      <security allowDualPurposeIdentifiers="true" /> 
     </relyingParty> 
    </openid> 
</dotNetOpenAuth> 

Если вы использовали NuGet установить DotNetOpenAuth в вашем веб-приложение, которое должно быть достаточно. Но если вы получаете ошибки о любом из этих тегов не признаваемые, возможно, потребуется объединить это в верхней части файла web.config:

<configuration> 
    <configSections> 
     <section name="dotNetOpenAuth" type="DotNetOpenAuth.Configuration.DotNetOpenAuthSection" requirePermission="false" allowLocation="true"/> 
    </configSections> 
</configuration> 
+0

Для тестирования этой настройки помогли решить эту проблему. Теперь аутентификация преуспевает. Но я свяжусь с провайдером и рекомендую исправить обнаружение пользователя. – bestfansdynamo

Смежные вопросы