Request.IsAuthenticated всегда ложно после входа в Microsoft AD - PullRequest
0 голосов
/ 18 октября 2018

У меня есть проект ASP.NET 4.5.1 MVC / WebAPI.Он аутентифицируется против Microsoft, используя SSO.После успешного входа в Microsoft у меня все еще есть Request.IsAuthenticated на моем HomeController.URL-адрес, который я зарегистрировал в файле веб-конфигурации: http://localhost:58686/

Теперь у меня есть пример приложения только для MVC, которое успешно аутентифицируется после входа в систему.Я дважды, трижды проверил код, и мой проект mvc / Web Api использует тот же файл startup.cs, ту же структуру веб-конфигурации и ту же регистрацию в рекламном портале Azure.Но в этом конкретном проекте, после входа в Microsoft, request.isauthentciated всегда ложно.Тем не менее, я получаю все правильные утверждения из параметра контекста SecurityTokenValidated.У вас есть идеи о том, почему это происходит?Потому что я настроил проект как MVC / WebAPI?Домашний контроллер:

  public ActionResult Index()
        {
            //var y = HttpContext.User.Identity.IsAuthenticated;


           if (!Request.IsAuthenticated)
           {
                HttpContext.GetOwinContext().Authentication.Challenge(
                    new AuthenticationProperties { RedirectUri = System.Configuration.ConfigurationManager.AppSettings["redirectUrl"] },
                    OpenIdConnectAuthenticationDefaults.AuthenticationType);
            }

Startup.cs

public void Configuration(IAppBuilder app)
        {
            app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

            app.UseOpenIdConnectAuthentication(
                new OpenIdConnectAuthenticationOptions
                {

                    ClientId = clientId,
                    Authority = authority,
                    RedirectUri = redirectUrl,
                    PostLogoutRedirectUri = redirectUrl,
                    Scope = OpenIdConnectScopes.OpenIdProfile, 
                    ResponseType = OpenIdConnectResponseTypes.IdToken,

                    TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters() { ValidateIssuer = false },


                    Notifications = new OpenIdConnectAuthenticationNotifications
                    {
                        AuthenticationFailed = OnAuthenticationFailed,

                        RedirectToIdentityProvider = (context) =>
                        {
                            string appBaseUrl = context.Request.Scheme + "://" + context.Request.Host + context.Request.PathBase;
                            context.ProtocolMessage.RedirectUri = appBaseUrl + "/";
                            context.ProtocolMessage.PostLogoutRedirectUri = appBaseUrl;

                            return Task.FromResult(0);
                        },
                        SecurityTokenValidated = (context) =>
                        {

                            var identity = context.AuthenticationTicket.Identity;
                            return Task.FromResult(0);
                        }
                    }
                }
            );

Спасибо и всего наилучшего!

...