生产环境中的https问题

时间:2015-10-04 00:25:46

标签: asp.net https asp.net-mvc-5 azure-web-roles

我尝试了很多选项,这是我最后的选择,看看社区成员是否有任何想法。

我有.NET MVC 5应用程序,其中我使用过滤器强制在每个不安全的请求上使用HTTPS。

以下是该方案:

  1. 访问我的应用程序,例如http://portal.mywebsite.com
  2. 将其重定向到第三方(auth0)SSO提供程序以进行身份​​验证。如果用户尚未通过身份验证,则会将其重定向到SSO登录页面。
  3. 用户输入有效的凭据,经过身份验证。
  4. 以上情况完美无缺。但问题是如果我使用https说https://portal.mywebsite.com访问同一个应用程序,则会失败。确切地说,它无法在服务器上检索ExternalIdentity(ExternalCookie)。

    public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
        {
            AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
    
            var externalIdentity = await AuthenticationManager.GetExternalIdentityAsync(DefaultAuthenticationTypes.ExternalCookie);
    
            if (externalIdentity == null)
            {
                 throw(new Exception("Could not get the external identity. Please check your Auth0 configuration settings and ensure that " +
                                    "you configured UseCookieAuthentication and UseExternalSignInCookie in the OWIN Startup class. " +
                                    "Also make sure you are not calling setting the callbackOnLocationHash option on the JavaScript login widget."));
    
            }
    
            AuthenticationManager.SignIn(new AuthenticationProperties { IsPersistent = true }, CreateIdentity(externalIdentity));
            return RedirectToLocal(returnUrl);
        }
    

    此外,在我的测试环境中使用https访问应用程序仍然有效,而不是生产环境。

    我的所有Web应用程序都作为Azure WebRoles托管。

    我试过Fiddler观察工作和非工作之间的请求,看看我是否能找到任何有用的信息来识别问题但是没有成功。

    我可以尝试帮助我缩小原因的任何想法或想法吗?

    提前致谢!

1 个答案:

答案 0 :(得分:1)

Microsoft的System.Web Owin实现中存在一个错误。临时解决方案在github.com/KentorIT/owin-cookie-saver

处理

有人遇到同样的问题.AspNetApplicationCookie and ASP.NET_SessionId not created