ASP.NET 核心 2 身份验证方案

ASP.NET Core 2 AuthenticationSchemes

有几种身份验证方案,但我找不到关于它们的任何文档。它们有何不同?

options.DefaultScheme
options.DefaultChallengeScheme
options.DefaultForbidScheme
options.DefaultAuthenticateScheme
options.DefaultSignInScheme
options.DefaultSignOutScheme

来自here

  • DefaultScheme:如果指定,所有其他默认值将回退到 这个值
  • DefaultAuthenticateScheme:如果指定, AuthenticateAsync() 将使用此方案,还有 UseAuthentication() 添加的 AuthenticationMiddleware 将使用这个 自动设置 context.User 的方案。 (对应于 自动身份验证)
  • DefaultChallengeScheme 如果指定, ChallengeAsync() 将使用此方案,[Authorize] 策略 不指定方案也会使用这个
  • 使用
  • DefaultSignInScheme 通过 SignInAsync() 以及所有远程身份验证方案,例如 Google/Facebook/OIDC/OAuth,通常这将设置为 cookie。
  • DefaultSignOutScheme 由 SignOutAsync() 使用回退到 DefaultSignInScheme
  • DefaultForbidScheme 被 ForbidAsync() 使用, 退回到 DefaultChallengeScheme

所以,你指定,在IAuthenticationService

中相应的方法中使用了哪个authentication scheme