Azure ACS с HTTPS и ошибкой нескольких экземпляров

Я просто выполнил следующие инструкции здесь.

И нашел пару записей в блоге здесь и здесь, чтобы быть довольно полезным.

Но я все еще получаю странные проблемы с моим приложением ASP.NET MVC3, работающим в Azure на конечной точке HTTPS. У меня загружен сертификат HTTPS, и он последовательно развернут в одном экземпляре роли в течение достаточно долгого времени без каких-либо проблем. Однако совсем недавно я начал развертывать несколько экземпляров и столкнулся с «Ключ недействителен для использования в указанном состоянии» и «Значение не может быть нулевым». Имя параметра: ошибки сертификата.

Но у меня есть новый:

«Невозможно прочитать дальше конца потока».

Выглядит довольно ванильным. Не становится очевидным, что проблема связана с переходом от DPAPI к преобразованию файлов cookie RSA, пока вы не посмотрите на трассировку стека.

[EndOfStreamException: невозможно прочитать за пределами конца потока.] System.IO.MemoryStream.InternalReadInt32() +12750266 Microsoft.IdentityModel.Web.RsaEncryptionCookieTransform.Decode(Byte[] encoded) +369 Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler. ApplyTransforms(Byte[] cookie, Boolean outbound) +189 Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken(XmlReader reader, SecurityTokenResolver tokenResolver) +862 Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken(Byte[] token, SecurityTokenResolver tokenResolver) +109 Microsoft.IdentityModel.Web.SessionAuthenticationModule.ReadSessionTokenFromCookie(Byte[] sessionCookie) +356 Microsoft.IdentityModel.Web.SessionAuthenticationModule.TryReadSessionTokenFromCookie(SessionSecurityToken& sessionToken) +123 Microsoft.IdentityModel.Web.SessionAuthenticationModule.OnAAuthenticationModule. System.Web.SyncEventExecut ionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80 System.Web.HttpApplication.ExecuteStep(шаг IExecutionStep, логическое значение и выполнено синхронно) +270

Я добавил следующий код в global.asax:

    void OnServiceConfigurationCreated(object sender, ServiceConfigurationCreatedEventArgs e) 
    {  
        // 
        // Use the <serviceCertificate> to protect the cookies that are sent to the client. 
        // 
        List<CookieTransform> sessionTransforms = new List<CookieTransform>(
            new CookieTransform[] { 
                new DeflateCookieTransform(), 
                new RsaEncryptionCookieTransform(e.ServiceConfiguration.ServiceCertificate) }); 
        SessionSecurityTokenHandler sessionHandler = new SessionSecurityTokenHandler(sessionTransforms.AsReadOnly());  
        e.ServiceConfiguration.SecurityTokenHandlers.AddOrReplace(sessionHandler); 
    } 

А также этот код:

    void WSFederationAuthenticationModule_RedirectingToIdentityProvider(object sender, RedirectingToIdentityProviderEventArgs e)  
    { 
        // In the Windows Azure environment, build a wreply parameter for the SignIn request 
        // that reflects the real address of the application. 
        HttpRequest request = HttpContext.Current.Request;  
        Uri requestUrl = request.Url; 
        StringBuilder wreply = new StringBuilder();  
        wreply.Append(requestUrl.Scheme); // e.g. "http" or "https" 
        wreply.Append("://"); 
        wreply.Append(request.Headers["Host"] ?? requestUrl.Authority); 
        wreply.Append(request.ApplicationPath);  
        if (!request.ApplicationPath.EndsWith("/")) wreply.Append("/"); e.SignInRequestMessage.Reply = wreply.ToString();   
    }

person markti    schedule 03.01.2012    source источник
comment
У меня тоже есть эта проблема. Это очень расстраивает - если вы нашли решение, пожалуйста, дайте мне знать!   -  person komma8.komma1    schedule 03.06.2012


Ответы (1)


Недавно я работал над аналогичной проблемой, и потенциальной причиной была комбинация более старого SDK и ACS. Если вы попытаетесь использовать SDK 1.6 и настройку ACSv2, я надеюсь, что эта проблема не возникнет, и если вы все еще видите проблему, я был бы рад поработать с вами над ее основной причиной.

person AvkashChauhan    schedule 27.05.2012