将外部访问令牌换成本地令牌 - ASP.Net 身份

Trade external access token for local one - ASP.Net Identity

当使用 ASP.Net 身份并从外部提供商检索外部访问令牌时,我如何 trade-in/issue 使用外部访问令牌的本地访问令牌?

我已经看到 [HostAuthentication(DefaultAuthenticationTypes.ExternalBearer)] 但无法在我的操作方法中使用它。如果我发送 headers

 Authentication: Bearer external_access_token   

它不填充 User.Identity

Startup.Auth.cs:

app.UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions
    {
        TokenEndpointPath = new PathString("/Token"),
        Provider = new ApplicationOAuthProvider(),
        AuthorizeEndpointPath = new PathString("/AccountApi/ExternalLogin"),
        AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
        AllowInsecureHttp = true
    });
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());

OWIN中间件的工作流程涉及

外部认证
  • 重定向/查询外部 OAuth 提供商
  • 正在使用外部 Cookie 和所有声明信息ASP.NET 身份 注册新用户
  • 将不记名令牌返回到表示层

[HostAuthentication(DefaultAuthenticationTypes.ExternalBearer)] 不用于允许 外部不记名令牌 代替地方当局不记名令牌使用. 外部承载令牌仅用于验证用户的身份。

OWIN 中间件 身份验证应始终以 OWIN 中间件 承载令牌 return 结束。无论用户是使用本地 Login/Password 还是使用外部身份验证 Cookie/令牌进行身份验证,用户都必须获得本地权限令牌才能使用安全方法。

如果用户在外部身份验证后不存在于您的身份数据库中,请注册用户并return一个新的承载令牌。