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



我已经启动了ASP.Net MVC的示例项目,该项目提供了针对Active Directory的单点登录,并且正在使用此Microsoft教程作为参考。

一旦用户点击登录并重定向到其组织的登录页面,在返回到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>
}

究竟什么构成了Request.IsAuthenticated的真正价值
是否存在索赔本身的性质,或者在阅读索赔之前是否有一个特定的值用于提供结果?

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

有关更多详细信息,您当然可以深入到源代码中。例如,OWIN的cookie身份验证中间件就存在于此:https://github.com/aspnet/AspNetKatana/tree/dev/src/Microsoft.Owin.Security.Cookies

最新更新