【问题标题】:ASP.NET Core 2 AuthenticationSchemesASP.NET Core 2 身份验证方案
【发布时间】:2018-02-23 16:36:24
【问题描述】:

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

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

【问题讨论】:

  • 你读过this article吗?
  • 我在那里找不到关于主题的任何信息。

标签: c# authentication asp.net-core .net-core identityserver4


【解决方案1】:

来自here

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

所以,您指定authentication scheme 用于IAuthenticationService 中的相应方法

【讨论】:

  • 天哪,这帮助我解决了我几个月来遇到的问题。我现在觉得有点傻。我在内部 API 上设置了 API 密钥身份验证,我也确实需要 kerberos。只需将 DefaultScheme 设置为 kerberos 就像一个魅力 - 现在它首先查找 API 密钥,但如果失败则回退到 kerberos。今天,你就是我引用文档的英雄。
猜你喜欢
  • 2018-05-13
  • 1970-01-01
  • 2019-08-31
  • 1970-01-01
  • 2020-10-29
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 2020-07-27
相关资源
最近更新 更多