2

У меня есть существующее приложение asp.net mvc5, использующее DotNetOpenAuth для проверки подлинности Google OpenId. Я перехожу к Identity Asp.Net и использую Google+ Auth с OAuth2.0.Идентификатор идентификатора учетной записи Asp.net с openId на oauth

Но я видел Тану я не могу карты существующего идентификатора OpenId счета для OAuth2.0 Id: - Старый идентификатора: https://www.google.com/accounts/o8/id?id=blablabla - Новый Идентификатор: длинный номер

Так как я хотел бы использовать новый идентификатор, я ищу помощь по переносу идентификаторов. Я еще не нашел простой пример для этого.

Я использую новое приложение asp.net mvc5 (свежее леса), добавленный Microsoft Identity (с пользовательской реализацией для моих данных), настроил поставщика GoogleOAuth2.

Когда я пытаюсь войти, удивите! :) Идентификатор учетной записи изменился ...

Я прочитал несколько сообщений, которые говорят, чтобы добавить «openid.realm» к запросу auth, но как я могу изменить URL-адрес запроса аутентификации и как узнать значение, которое нужно поставить в этом ?

Спасибо.

ответ

2

Чтобы изменить запрос аутентификации, чтобы включить параметр openid.real m, вы можете использовать делегат OnApplyRedirect, например.

app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions() 
{ 
    ClientId = "", 
    ClientSecret = "", 
    Provider = new GoogleOAuth2AuthenticationProvider 
    { 
     OnApplyRedirect = context => 
     { 
      Dictionary<string, string> dictionary = new Dictionary<string, string>() 
      { 
       { "openid.realm", "http://mywebsite.com/openid/realm" } 
      }; 
      var redirectUri = WebUtilities.AddQueryString(context.RedirectUri, dictionary); 
      context.Response.Redirect(redirectUri); 
     }, 
    } 
}); 

Значение openid.realm должно быть realm вы использовали для OpenID 2.0

google migration doc располагает информацией о том, как карту от пользователей старый идентификатор на новый

+0

Добавление openid.realm работает (когда я поставил плохое значение, я получил ошибку), но, читая документ, я не знаю, где я могу найти поле «openid_id». Если я хорошо понимаю, это значение можно получить при запросе токена доступа. Но код, который делает это, не имеет ни точки входа, ни событий, которые могут быть обработаны ... – Dede

+0

В документации шаг 3 сообщает, что ответ запроса маркера содержит поле «openid_id», необходимое для меня. Это не тот случай. Ай идея? – Dede

+0

Возможно, это поможет http://stackoverflow.com/a/22512053/1722433 – brocknz