2014-11-06 1 views
0

У меня серьезные проблемы с приложением, которое должно интегрироваться с поставщиком открытых идентификаторов Microsoft.Microsoft OpenId login

Я использую ASP.NET MVC 5 с библиотеками Microsoft.Owin. Мой файл Startup.Auth выглядит так:

app.UseMicrosoftAccountAuthentication(new MicrosoftAccountAuthenticationOptions() 
{ 
    ClientId = ConfigurationManager.AppSettings["msClientId"], 
    ClientSecret = ConfigurationManager.AppSettings["msClientSecret"] 
}); 
[HttpGet] 
public ActionResult ExternalLogin(string provider, string connectionId) 
{ 
    return new ChallengeResult(Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(provider), Request.Url.GetLeftPart(UriPartial.Authority) + "/Login/ExternalLoginCallback?connectionId=" + connectionId); 
} 

Мой класс вызов Результат выглядит следующим образом:

private class ChallengeResult : HttpUnauthorizedResult 
{ 
    public ChallengeResult(string provider, string redirectUri) 
      : this(provider, redirectUri, null) 
    { 
    } 

    public ChallengeResult(string provider, string redirectUri, string userId) 
    { 
     LoginProvider = provider; 
     RedirectUri = redirectUri; 
     UserId = userId; 
    } 

    public string LoginProvider { get; set; } 
    public string RedirectUri { get; set; } 
    public string UserId { get; set; } 

    public override void ExecuteResult(ControllerContext context) 
    { 
     var properties = new AuthenticationProperties() { RedirectUri = RedirectUri }; 
     if (UserId != null) 
     { 
      properties.Dictionary[XsrfKey] = UserId; 
     } 
     context.HttpContext.GetOwinContext().Authentication.Challenge(properties, LoginProvider); 
    } 
} 

я, к сожалению, сразу я перенаправлены на счет входа в систему Microsoft я просто получаю:

Предоставленное значение для входного параметра «redirect_uri ' не действует. Ожидаемое значение: «https://login.live.com/oauth20_desktop.srf» или URL, который соответствует URI редиректа, зарегистрированным для этого клиентского приложения. & состояние = 9Y9inDc4SVQTd_I4ZoLwuLPTZa5i-4NapEWzuspU9B_jz1t4aXfPY239FXx2xyI-v9xW-0fgU0kwsZVzYXOtiPhoGH9_h4aiS2Q7FlJGFNviREMLRNnfHfeYoG0m0wSgO7ZZcsJztIcgPEPdo70HkN4mCynng6bx7-nR6i7WN7DQ0SYRXrxmb2hhHDvxTWeTQAfpxKWAezJzDqdEfhoDx1VyRGC-5pCxVbhB5VF2Sb9x5TL0KWb4tXgjYSHbejDlzwMQfgcVf0SB0qRRIi2YNCEbWi6_KbGADRCN-DZ7rpVd_n695nRNQXwhQvYHTqAJr3L1dny3NvbCmYJ9SRIt6w

В качестве фактического URL. На странице только что написана техническая проблема. Я немного теряю.

Я проверил, что запрос, отправленный к фактическому MS поставщику и это выглядит следующим образом: (Примечание замены для очевидных соображений безопасности)

Но я проверил, что Id клиент прав и параметр redirect_uri соответствует параметру, установленному в настройке учетной записи MS.

/oauth20_authorize.srf?client_id= & Объем = wl.basic & response_type = & код redirect_uri = & состояние = zFGr4tzGDqMUpH7yVp0dB8JNoM_D6SFSiLa3NoKhF15O5mAkW7N51wB9vjzs1_PR7WQewUWYjLxfHY865EwN3EuEVIHp_S4m_q32s9DPG_dNsZ_wdEsOUe7FE3VY16jPS6WWeI-VnMu12RXvIqVnvH9tVXVc8QLUe8s1sZc5HFYWCtqiyejmw-MKO4MV1_DRoisn2lAO6rRhvyT-LvZBzZ20-CiFkxmVhq8DzdCnFn3Ya7sWyNzTzu1d1u_q71VBY_ot5sqUx-YEvLqcaNwDOHmFUVTpe5ynVKc8203pxqwlpNbfy8hrqxBuJWAGhiHuOIAMo5HuRv8kJJgmGOz4OQ

Заранее спасибо.

+0

Является ли это в среде разработки? какой URL-адрес вы используете для своего приложения, настроили ли вы его в файле хоста и используете локальный IIS? – DSR

+0

Привет, Да, попробовали как среду разработки, так и локальную среду. У нас есть правило в сети, которое перенаправляет определенный URL-адрес. localhost.xxx.com - 127.0.0.1. Я пробовал живой URL-адрес и, похоже, не работает. Оба отказались с той же проблемой :-( –

ответ

0

Фактически, локальный URL-адрес должен быть чем-то вроде somthing.something.com. Если вы используете его правильно, попробуйте использовать непосредственно UseMicrosoftAccountAuthentication, не создавая для этого новый объект.

app.UseMicrosoftAccountAuthentication(
       clientId: ConfigurationManager.AppSettings["msClientId"], 
       clientSecret: ConfigurationManager.AppSettings["msClientSecret"]); 

Дальше вам нужно правильно настроить URL перенаправления на ваше приложение, которое должно заканчиваться/signin-microsoft.

this товар должным образом.

Надеюсь, это поможет.

0

В моем случае, потому что я использовал Azure OpenID Active Directory, и я должен удалить эту строку

app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); 

Надеется, что это помогает С наилучших пожеланиями