2010-06-10 43 views
5

ASP.NET Web App'te barındırılan bir Silverlight uygulaması yapıyorum./IIS7/SSL etkin web sitesi. Güvenlik için
, ben ASP.NET Web uygulaması bir üye klasörünün içinde benim Silverlight sayfasını koymak ve anonim kullanıcıların erişimini kısıtlı. (aşağıdaki web.config bakınız)ASP.NET Giriş Sayfası Yönlendirme Sorunu

kullanıcıları Üyeleri klasörü altındaki sayfalara erişmek için deneyin https://www.ssldemo.com/authenticationtest/login.aspx'a yönlendirilirler. (aşağıdaki web.config dosyasına bakınız) (www.ssldemo.com ile 127.0.0.1 arasındaki eşleştirmeyi yaptım). Güvenlik için , login.aspx'te HTTPS'ye geçiyorum ve doğrulamadan sonra HTTP'ye dönüyorum. , login.aspx.cs kodudur. Ben http://www.ssldemo.com/authenticationtest/members/AnotherApplication/ ve açık http://www.ssldemo.com/authenticationtest/members/AnotherApplication/default.aspx için başka uygulama dağıtırken

protected void Page_Load(object sender, EventArgs e) 
    { 
     LoginControl.LoggedIn += new EventHandler(LoginControl_LoggedIn); 
    } 

    void LoginControl_LoggedIn(object sender, EventArgs e) 
    { 
     //for going to ReturnURL & switching back to HTTP 
     string serverName = HttpUtility.UrlEncode(Request.ServerVariables["SERVER_NAME"]); 
     string returnURL = Request["ReturnURL"]; 
     Response.Redirect(ResolveClientUrl("http://" + serverName + returnURL)); 
    } 

problem, Kullanıcılar https://www.ssldemo.com/authenticationtest/login.aspx?ReturnUrl=%2fauthenticationtest%2fmembers%2fanotherapplication%2fdefault.aspx yönlendirilirler. ama giriş sayfasında doğru kimlik bilgilerini girdiğimde bile, aynı giriş sayfasına yeniden, ReturnUrl için değil, yeniden yönlendirilir. kemancıya baktığımda '302 nesnesi buraya taşındı' dedi.

Okuduğunuz için teşekkür ederiz! Herhangi bir girdi çok takdir edilecektir.

<configuration> 
<connectionStrings> 
    <add name="CompanyDatabase" connectionString="Data Source=192.168.0.2;Initial Catalog=SomeTable;User ID=Username;[email protected]" /> 
</connectionStrings> 

<system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    <authentication mode="Forms"> 
     <forms slidingExpiration="true" timeout="15" 
       loginUrl="https://www.ssldemo.com/authenticationtest/login.aspx" 
       defaultUrl="~/Members/Default.aspx" 
       > 
     </forms> 
    </authentication> 
    <!--Custom Membership Provider--> 
    <membership defaultProvider="MyMembershipProvider" userIsOnlineTimeWindow="15"> 
     <providers> 
      <clear /> 
      <add name="MyMembershipProvider" 
       type="AuthenticationTest.Web.MyMembershipProvider" 
       connectionStringName="CompanyDatabase" 
       applicationName="AuthenticationTest.Web"/> 
     </providers> 
    </membership> 
</system.web> 
<!--securing folders--> 
<location path="Members"> 
    <system.web> 
     <authorization> 
      <deny users="?"/> 
     </authorization> 
    </system.web> 
</location>  
</configuration> 

cevap

3

üyeden aşağıdaki başvuru (alt uygulaması) Yukarıdaki birinin ayarlarını devralır, bu yüzden o giriş sayfasına gider, bu yüzden de sizin auth ayarlarını alır.

Bunun asla işe yaramamasının nedeni, biletin nasıl şifrelenmiş olduğudur. Ekstra yapılandırma yapmazsanız, başvurular arasında biletler yeniden kullanılamaz. Bu, bir uygulamada kimliği doğrulayan ve ardından sunucudaki diğer tüm uygulamalara erişen bir kullanıcıyı durdurur. Asp.Net, her uygulama için yeni bir rastgele anahtar oluşturarak bunu yapar.

Önce, form öğesine enableCrossAppRedirects = true değerini eklemeniz gerekir. Daha sonra, her iki uygulamada da, her iki uygulamanın da auth biletlerinin kodunu çözebilmesi için MachineKey'i aynı şekilde ayarlamanız gerekir.

Bu sayfa yardımcı olabilir http://msdn.microsoft.com/en-us/library/eb0zx8fc.aspx