Asp.net OWIN使用什么机制来确定用户在读取其声明之前已通过身份验证?

Asp.net OWIN使用什么机制来确定用户在读取其声明之前已通过身份验证?,asp.net,asp.net-mvc,single-sign-on,owin,katana,Asp.net,Asp.net Mvc,Single Sign On,Owin,Katana,我已经启动了ASP.NETMVC的示例项目,该项目提供了针对Active Directory的单点登录,我正在使用它作为参考 一旦用户单击登录并重定向到其组织的登录页面,在返回web应用程序时,以下代码将验证他们是否经过身份验证,并成功读取他们的声明: using Microsoft.Owin.Security; using Microsoft.Owin.Security.Cookies; using Microsoft.Owin.Security.OpenIdConnect; using Ow

我已经启动了ASP.NETMVC的示例项目,该项目提供了针对Active Directory的单点登录,我正在使用它作为参考

一旦用户单击登录并重定向到其组织的登录页面,在返回web应用程序时,以下代码将验证他们是否经过身份验证,并成功读取他们的声明:

using Microsoft.Owin.Security;
using Microsoft.Owin.Security.Cookies;
using Microsoft.Owin.Security.OpenIdConnect;
using Owin;

@if (Request.IsAuthenticated)
{
    <dl>
        @foreach (var claim in System.Security.Claims.ClaimsPrincipal.Current.Claims)
        {
            <text>
                <dt>@claim.Type</dt>
                <dd>@claim.Value</dd>
            </text>
        }
    </dl>
}
使用Microsoft.Owin.Security;
使用Microsoft.Owin.Security.Cookies;
使用Microsoft.Owin.Security.OpenIdConnect;
使用Owin;
@如果(请求已验证)
{
@foreach(System.Security.Claims.ClaimsPrincipal.Current.Claims中的var声明)
{
@索赔.类型
@索赔价值
}
}
在引擎盖下,什么实际构成了
请求的真实值。已验证


声明的本质是存在的,还是在读取声明之前有一个特定的值用于提供结果?

教程要求您将身份验证中间件添加到请求管道中。在本例中,您将添加
UseCookieAuthentication
UseOpenIdConnectAuthentication
以注册身份验证中间件。这些以及您可能添加的任何其他(例如JWT承载令牌身份验证)使用它们自己的内部机制来解析请求并将声明标识分配给您的请求上下文。例如,cookie身份验证将查找表示持久会话的cookie,并将其详细信息解密和解析为声明标识<如果有一个或多个标识可用,code>IsAuthenticated
实际上只返回true

要了解更多细节,您当然可以深入了解源代码。例如,OWIN的cookie身份验证中间件位于此处: