Вход в O365 не работает после выхода из системы MVC - PullRequest
1 голос
/ 28 января 2020

В моем коде есть какая-то проблема, я не уверен, где я ошибаюсь. Ранее тот же код раньше работал правильно. Теперь я пытаюсь войти в приложение обоими способами, то есть через ClaimPrincipal и Claim Identity. В обоих случаях данные иногда являются нулевыми. Не уверен, где проблема. Ниже приведен мой код

StartUp.cs

app.UseOpenIdConnectAuthentication(
                new OpenIdConnectAuthenticationOptions
                {
                    ClientId = appId,
                    Authority = authority,
                    RedirectUri = redirectUri,
                    //PostLogoutRedirectUri = redirectUri,
                    Scope = OpenIdConnectScope.OpenIdProfile,
                    ResponseType = OpenIdConnectResponseType.IdToken,
                    TokenValidationParameters = new TokenValidationParameters()
                    {
                        ValidateIssuer = false // This is a simplification
                    },
                    Notifications = new OpenIdConnectAuthenticationNotifications
                    {
                        AuthenticationFailed = OnAuthenticationFailed
                    }
                }
            );

Метод входа

[AllowAnonymous]
        public void SignIn(string ReturnUrl = "/", string loginType = "")
        {
            HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = "/Account/Office365LoginCallback" },
                    OpenIdConnectAuthenticationDefaults.AuthenticationType);
        }

RedirectURL Code

    [AllowAnonymous]
    [ExceptionHandler]
    public async Task<ActionResult> Office365LoginCallback(string code)
    {
        var userClaims = User.Identity as System.Security.Claims.ClaimsIdentity;
        string userName = userClaims?.FindFirst("name")?.Value;
        string userEmail = userClaims?.FindFirst("preferred_username")?.Value;
        string userId = userClaims?.FindFirst(System.Security.Claims.ClaimTypes.NameIdentifier)?.Value;
        ViewBag.TenantId = userClaims?.FindFirst("http://schemas.microsoft.com/identity/claims/tenantid")?.Value;
  return Redirect("~/");
 }
 catch (Exception ex)
 {
      throw ex;
 }
}

Метод подписи

public ActionResult LogOff()
        {
            //AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
            //HttpContext.GetOwinContext().Authentication.SignOut();
            FormsAuthentication.SignOut();
            //HttpContext.GetOwinContext().Authentication.SignOut(CookieAuthenticationDefaults.AuthenticationType);
            //HttpContext.Session[AppConstants.UserEmail] = null;
            //HttpContext.Session[AppConstants.UserUpload] = null;
            //HttpContext.Session[AppConstants.UserImage] = null;
            //HttpContext.Session[AppConstants.CurrentRole] = null;
            //HttpContext.Session[AppConstants.Users] = null;
            //Session.Clear();
            //Session.Abandon();
            return RedirectToAction("Login", "Account");
        }

Любая помощь будет оценена. К вашему сведению, я пробовал тот же код в новом проекте, который работает нормально, но здесь, в моем старом приложении, он не работает, как только нажал «Выйти»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...