При успешном входе в OpenID с помощью DotNetOpenAuth ASP.NET MVC пример входа в систему не возвращается. - PullRequest
1 голос
/ 12 августа 2011

Я расширил образец DotNetOpenAuth ASP.NET MVC Login, пытаясь получить хотя бы электронное письмо от поставщика OpenID. Независимо от того, какого провайдера я использую для входа, я получаю null для ClaimsResponse. Вот код.

var request = openid.CreateRequest(Request.Form["OpenID"]);
// Require some additional data
request.AddExtension(new ClaimsRequest
                            {
                                Email = DemandLevel.Require,
                            });
return request.RedirectingResponse.AsActionResult();

И это фрагмент, чтобы получить ClaimsResponse:

switch (response.Status)
{
    case AuthenticationStatus.Authenticated:
        var claimsResponse = response.GetExtension<ClaimsResponse>();
        // This is null!
        break;
}

Прежде чем попробовать это на примере MVC, я сделал тот же на примере WebForms и получил запрошенное письмо! Но это действительно трудно ошибиться, так как код, связанный с OpenID, практически одинаков.

Я заметил, что сгенерированные URL-адреса OpenID отличаются следующим: openid.ns.alias3=http://openid.net/srv/ax/1.0&openid.alias3.required=alias1,alias2,alias3,alias4&openid.alias3.mode=fetch_request&openid.alias3.type.alias1=http://axschema.org/contact/email&openid.alias3.count.alias1=1&openid.alias3.type.alias2=http://axschema.org/namePerson&openid.alias3.count.alias2=1&openid.alias3.type.alias3=http://schema.openid.net/contact/email&openid.alias3.count.alias3=1&openid.alias3.type.alias4=http://schema.openid.net/namePerson&openid.alias3.count.alias4=1. По сути, версия WebForms генерирует URL со всем добавленным, в то время как в MVC URL этого нет. В итоге электронная почта представляется в WebForms, а для приложения MVC ее нет.

Последнее, что я заметил, это, например, Google показывает, что запрос поступил от localhost для приложения WebForms и 127.0.0.1 для приложения MVC. Может быть, это имеет все значение. Тем не менее, я не уверен, контролирую ли я здесь.

Меня беспокоит то, что код одинаков для обоих проектов. Тем не менее, сгенерированные URL-адреса отличаются, и MVC не получает электронную почту.

1 Ответ

2 голосов
/ 15 августа 2011

Похоже, что на вашем веб-сайте активировано поведение AXFetchAsSreg, а на вашем MVC - нет. Активируйте его для своего сайта MVC , и вам должно быть хорошо.

...