Wac*_*urn 18 asp.net-mvc asp.net-identity asp.net-core
ControllerBaseclass has Challenge方法,返回ChallengeResult类的对象.
CookieAuthenticationOptions班AutomaticChallenge有财产.
我认为ChallengeResult与外部登录有关.但它是如何实际工作的?"挑战"一词来自哪里?这里面有什么.
juu*_*nas 21
A ChallengeResult是一个ActionResult执行时,挑战给定的身份验证方案的处理程序.或者,如果未指定,则为默认质询方案的处理程序.ChallengeResult的源代码
例如,您可以这样做:
return Challenge(JwtBearerDefaults.AuthenticationScheme); //Can specify multiple schemes + parameters
Run Code Online (Sandbox Code Playgroud)
这将挑战JWT承载认证处理程序.在此处理程序的情况下,它将响应状态代码设置为401,以告诉调用者他们需要身份验证才能执行该操作.
AutomaticChallenge(在ASP.NET Core 1.x中)是设置,表示这是默认的质询处理程序.这意味着如果没有专门命名认证方案,它将被调用.
在2.x中,对此进行了更改,以便您现在指定默认质询方案或更高级别的默认方案.
services.AddAuthentication(o =>
{
o.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; //Default for everything
// o.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; //Default specifically for challenges
})
Run Code Online (Sandbox Code Playgroud)
挑战基本上是一种说法"我不知道这个用户是谁,请验证他们的身份".因此,如果触发的身份验证处理程序是例如Facebook身份验证处理程序,它将通过向Facebook身份验证页面发出重定向来对挑战做出反应.本地帐户身份验证处理程序可能会向本地登录页面发出重定向.
在JWT承载认证的情况下,除了响应401状态代码之外,处理程序不能执行任何操作,并将其留给调用者以正确地进行身份验证.
您可以在Facebook auth使用的OAuthHandler(HandleChallengeAsync)(以及Microsoft和Google身份验证)中看到这一点.
您通常在不知道用户是谁时返回挑战,如果您知道他们是谁,则通常会返回,但是不允许他们执行他们尝试的操作.
| 归档时间: |
|
| 查看次数: |
4915 次 |
| 最近记录: |