使用ASP.Net Identity并从外部提供程序检索外部访问令牌时,如何使用外部访问令牌交换/颁发本地访问令牌?
我看过[HostAuthentication(DefaultAuthenticationTypes.ExternalBearer)]
,但没能让它在我的动作方法中发挥作用。如果我发送带有标题的
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 Identity注册新用户
- 将承载令牌返回到表示层
[HostAuthentication(DefaultAuthenticationTypes.ExternalBearer)]
不用于允许使用外部承载令牌代替地方当局承载令牌外部承载令牌仅用于验证用户的身份。
OWIN中间件身份验证应始终以返回给用户的OWIN中间件承载令牌结束。无论用户使用本地登录/密码还是外部身份验证Cookie/Token进行身份验证,用户都必须获得本地授权令牌才能使用安全方法。
如果用户在外部身份验证后不存在于身份数据库中,请注册该用户并返回新的承载令牌。