2

我有一个使用DotNetOpenAuth进行Google OpenId身份验证的现有asp.net mvc5应用程序。 我正在迁移到Asp.Net Identity,并使用Google+ Auth和OAuth2.0。Asp.net身份Google帐户ID从openId迁移到oauth

但是我看到的吴丹我不能映射现有的OpenID帐户ID来OAuth2.0的编号: - 旧的标识是:https://www.google.com/accounts/o8/id?id=blablabla - 新ID为:长数

因为我想用新的身份证,我正在寻求帮助迁移身份。 我还没有找到一个简单的例子来实现这一点。

我正在使用新的asp.net mvc5应用程序(新建脚手架),添加了Microsoft Identity(为我的数据定制实现),配置了Google OAuth2提供程序。

当我尝试登录时,惊喜! :)帐户ID已更改...

我已阅读一些帖子,告诉将“openid.realm”添加到身份验证请求,但是,如何更改身份验证请求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的值需要您使用了OpenID 2.0

google migration doc对如何从用户的地图信息的realm老ID到新

+0

添加openid.realm作品(当我把一个不好的价值,我得到一个错误),但通过阅读文档,我不知道我在哪里可以找到“openid_id”字段。 如果我理解的很好,可以在查询访问令牌时检索该值。但是,这样做的代码没有入口点或可处理的事件...... – Dede 2014-09-01 11:25:44

+0

在文档中,步骤3表明令牌请求的响应包含我需要的“openid_id”字段。不是这种情况。 艾想法? – Dede 2014-09-02 08:57:48

+0

也许这将有助于http://stackoverflow.com/a/22512053/1722433 – brocknz 2014-09-10 23:44:00