OpenID Connect с ASP. NET MVC 5 - PullRequest
       17

OpenID Connect с ASP. NET MVC 5

0 голосов
/ 11 февраля 2020

У меня запущено веб-приложение, разработанное с ASP. NET MVC 5 и реализованное для входа в систему с использованием OpenID Connect.

До недавнего времени эта функция работала нормально, но внезапно не работает .

После успешного входа в систему значение <strong>Request.IsAuthenticated</strong> равно false

После развертывания приложения на сервере оно отлично работает в течение нескольких минут. но через некоторое время я снова получаю ту же ошибку.

Приложение работает, мне крайне нужна помощь.

Код:

public void SignIn()
{
    if (!Request.IsAuthenticated)
    {
        HttpContext.GetOwinContext().Authentication.Challenge(
            new AuthenticationProperties{ RedirectUri = "/Auth/SignedIn" },
            OpenIdConnectAuthenticationDefaults.AuthenticationType);
    }
}

public void SignOut()
{
    this.RemoveSessionToken();

    HttpContext.GetOwinContext().Authentication.SignOut(
        OpenIdConnectAuthenticationDefaults.AuthenticationType,
        CookieAuthenticationDefaults.AuthenticationType);
}

public async Task<ActionResult> SignedIn()
{
    var IsLoggedIn = Request.IsAuthenticated;
    var claims = (System.Security.Claims.ClaimsIdentity) ClaimsPrincipal.Current.Identity;

    if (IsLoggedIn)
    {
        var userClaims = User.Identity as System.Security.Claims.ClaimsIdentity;
        //string sessionToken = Session.SessionID;
        string ipAddress = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

        if (String.IsNullOrEmpty(ipAddress))
            ipAddress = Request.ServerVariables["REMOTE_ADDR"]; 


        var dbContext = new GetOfficeEduUsersEntities();
        var token = new T_APIToken();
        string office365Id = userClaims?.FindFirst("preferred_username")?.Value;

        token.TokenID = office365Id;
        token.IssuerID = office365Id; 
        token.IssueDT = DateTime.Now;
        token.ExpireDT = DateTime.Now.AddMinutes(180);

        dbContext.T_APIToken.Add(token);
        dbContext.SaveChanges();

        return RedirectToAction("Index", "Home");
    }
    else
    {
        //Error
        return RedirectToAction("SignedIn"); 
    }
}
...