2

Google OpenId 인증을 위해 DotNetOpenAuth를 사용하는 기존 asp.net mvc5 애플리케이션이 있습니다. Asp.Net Identity로 이전하고 OAuth2.0과 Google+ Auth를 사용 중입니다.Asp.net ID 오픈 아이디에서 oauth 로의 Google 계정 id 마이그레이션

그러나 나는 OAuth2.0에 이드 오픈 ID 계정 ID를 기존 매핑 할 수 없습니다 탄트 보았다 : - 올드 ID는 다음과 같습니다 https://www.google.com/accounts/o8/id?id=blablabla - 새 이드입니다 : 내가 사용하고 싶습니다 때문에 긴 수

새 ID, ID 이동에 대한 도움을 찾고 있습니다. 아직 간단한 샘플을 찾지 못했습니다.

새로운 asp.net mvc5 응용 프로그램 (새로 scaffolded)을 사용하고 Microsoft Identity (내 데이터에 대한 사용자 정의 구현 포함)를 추가하고 GoogleOAuth2 공급자를 구성했습니다.

로그인하려고하면 깜짝! :) 계정 ID가 변경되었습니다 ...

인증 요청에 "openid.realm"을 추가하라는 내용의 게시물을 읽었지 만 인증 요청 URL을 어떻게 바꿀 수 있으며 제출할 값을 어떻게 알 수 있습니까? 그 안에?

감사합니다.

답변

2

openid.real 매개 변수를 포함하도록 인증 요청을 변경하려면 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의 값은 오픈 ID 2.0

google migration doc는 사용자로부터 매핑하는 방법에 대한 정보가를 사용 realm 할 필요가 openid.realm 추가 새

+0

로 된 ID 작동합니다 (잘못된 값을 넣을 때 오류가 있음). 그러나 문서를 읽으면 "openid_id"필드를 어디에서 찾을 수 있는지 알 수 없습니다. 잘 이해하면 액세스 토큰을 쿼리 할 때 값을 검색 할 수 있습니다. 그러나이 작업을 수행하는 코드에는 진입 점이 없거나 처리 할 수있는 이벤트가 있습니다. – Dede

+0

설명서에서 3 단계는 토큰 요청의 응답에 나를 위해 필요한 "openid_id"필드가 있음을 나타냅니다. 그렇지 않다. 아이 아이디어? – Dede

+0

아마도 도움이됩니다. http://stackoverflow.com/a/22512053/1722433 – brocknz