File: AuthenticationRefreshContext.cs
Web Access
Project: src\aspnetcore\src\SignalR\common\Http.Connections\src\Microsoft.AspNetCore.Http.Connections.csproj (Microsoft.AspNetCore.Http.Connections)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Security.Claims;
 
namespace Microsoft.AspNetCore.Http.Connections;
 
/// <summary>
/// Provides information about an in-flight authentication refresh to a
/// <see cref="HttpConnectionDispatcherOptions.OnAuthenticationRefresh"/> callback so the application
/// can accept or reject the refresh.
/// </summary>
public sealed class AuthenticationRefreshContext
{
    /// <summary>
    /// The <see cref="Http.HttpContext"/> for the refresh request.
    /// </summary>
    public required HttpContext HttpContext { get; init; }
 
    /// <summary>
    /// The id of the connection being refreshed.
    /// </summary>
    public required string ConnectionId { get; init; }
 
    /// <summary>
    /// The <see cref="ClaimsPrincipal"/> currently associated with the connection
    /// (before this refresh is applied).
    /// </summary>
    public required ClaimsPrincipal PreviousUser { get; init; }
 
    /// <summary>
    /// The <see cref="ClaimsPrincipal"/> produced by re-authenticating the refresh request.
    /// This is the principal that will replace <see cref="PreviousUser"/> on the connection
    /// if the callback returns <c>true</c>.
    /// </summary>
    public required ClaimsPrincipal NewUser { get; init; }
 
    /// <summary>
    /// The new authentication expiration time, or <see cref="DateTimeOffset.MaxValue"/>
    /// when the authentication ticket has no expiration.
    /// </summary>
    public required DateTimeOffset NewExpiration { get; init; }
 
}