(我在 .Net 中遇到了类似的情况,因此在这个背景下)
不,如果你正在使用 OAuth,你不需要编写新的验证令牌方法。
因为 OAuthBearerAuthenticationProvider 在幕后完成了这个过程。
app.UseJwtBearerAuthentication(
new JwtBearerAuthenticationOptions
{
AuthenticationMode = AuthenticationMode.Active,
AllowedAudiences = new[] { audience },
IssuerSecurityTokenProviders = new IIssuerSecurityTokenProvider[]
{
new SymmetricKeyIssuerSecurityTokenProvider(issuer, secret)
},
Provider = new OAuthBearerAuthenticationProvider
{
OnValidateIdentity = context =>
{
context.Ticket.Identity.AddClaim(new System.Security.Claims.Claim("newCustomClaim", "newValue"));
return Task.FromResult<object>(null);
}
}
});
(根据我的经验)但是如果你想的话,可以在你的“启动”文件中配置提供程序选项:
app.UseJwtBearerAuthentication(
new JwtBearerAuthenticationOptions
{
AuthenticationMode = AuthenticationMode.Active,
AllowedAudiences = new[] { audience },
IssuerSecurityTokenProviders = new IIssuerSecurityTokenProvider[]
{
new SymmetricKeyIssuerSecurityTokenProvider(issuer, secret)
},
Provider = new CustomOAuthBearerProvider()
});
"CustomOAuthBearerProvider" 继承了 "IOAuthBearerAuthenticationProvider" 接口,该接口具有 RequestToken() 方法的预定义签名,并且在任何令牌验证之前调用此方法。因此,我认为您可以使用它来进行自定义验证操作并将令牌发送到 OAuth 验证。