我正在使用ASP.Net Identity来实现外部登录.用户登录Google后,我会获得谷歌的外部访问令牌.然后我对ObtainLocalAccessToken()进行第二次api调用,该调用将外部访问令牌换成新的本地访问令牌.
ObtainLocalAccessToken()调用VerifyExternalAccessToken(),它通过手动进行http调用和解析user_id来验证提供者的外部访问令牌.
如何利用ASP.NET标识删除整个方法VerifyExternalAccessToken()?
我相信这[HostAuthentication(DefaultAuthenticationTypes.ExternalBearer)]是为了不是吗?我想ObtainLocalAccessToken()用该属性修饰端点并在header({'Authorization' : 'Bearer xxx' })中发送external_access_token ,它应该填充User.Identity而无需手动验证外部访问令牌?我相信这是目的,但我不能让它发挥作用.我从谷歌发送一个有效的外部访问令牌,它被401拒绝.
我在Startup.Auth btw中有这一行:
app.UseOAuthBearerTokens(new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
Provider = new ApplicationOAuthProvider(),
AuthorizeEndpointPath = new PathString("/AccountApi/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = true
});
Run Code Online (Sandbox Code Playgroud)
或者,可以使用"/ Token"端点来交换本地端口的外部访问令牌?哪种方法是正确的?