窗体身份验证在Windows Azure Silverlight应用程序(Forms Authent

2019-10-17 03:28发布

我迁移n层Silverlight应用程序到Windows Azure和我撞南墙。 当我登录,网络服务无法知道是谁认证。 我的云项目有两个作用:

  • 网络用户界面:在Azure上,它的IP是111.222.33.44:80
  • Web服务:在Azure上,它的IP是111.222.33.44:8080

对Web UI配置:

<system.web>
    <compilation debug="true" targetFramework="4.0" />
    <authentication mode="Forms">
        <forms name="COOKIENAME" loginUrl="~/Login/login.aspx" timeout="2880" />
    </authentication>
    <authorization>
        <deny users="?" />
    </authorization>
    <machineKey validation="SHA1" decryption="AES" validationKey="VKEY" decryptionKey="DKEY"></machineKey>
    <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" />
</system.web>

配置Web服务

<system.web>
    <authentication mode="Forms">
        <forms name="COOKIENAME" loginUrl="~/Login/login.aspx" timeout="2880" />
    </authentication>
    <authorization>
    <deny users="?" />
    </authorization>
    <machineKey validation="SHA1" decryption="AES" validationKey="VKEY" decryptionKey="DKEY"></machineKey>
</system.web>

在Web UI角色,登录/ login.aspx的提交的用户名和密码。 一个cookie与方法创建FormsAuthentication.SetAuthCookie(username, myVar); 。 然后,用户被重定向到Default.aspx包含Silverlight应用程序。

当它启动时,Silverlight应用程序通过返回获取从Web服务角色的用户名HttpContext.Current.User.Identity.Name

所有在本地云模拟器很好,但是当我在Windows Azure中(分期)部署我的项目中,Web服务并不知道我已连接。 我用小提琴手,我看到111.222.33.44:8080/Login/login.aspx被查询的页面(页面不Web服务中的角色存在,它是要知道,如果一个用户进行身份验证的方式)。

我怀疑Web服务不能获得用户名,因为它不能获取由Web UI角色创建的cookie。 它实际上是有可能使它工作或做我必须合并使用Web UI角色Web服务的角色?

在这两种角色的计算机密钥是相同的。

Answer 1:

据我所知这两个角色将不能共享一个cookie。

在类似的情况我有一个托管的Silverlight客户端的Web项目,并已使用的Silverlight应用程序的Web服务。

用户将登录到该网站并访问silveright客户端。 客户一直在使用param属性提供Web服务的身份验证令牌

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2">                
   <param name="Token" value="<%=Token %>" />

令牌,一旦通过Web服务解密,包含了用户的ID的记录。

现在,Silverlight客户端可以访问一个无状态的Web服务和Web服务知道哪些登录用户的要求所涉及。

我一直在我的WebService和WebRole分离,使得CPU沉重的作业可以处理由服务,使网络的作用,提供网页服务好和快。

这是否帮助?



文章来源: Forms Authentication for a Silverlight application in Windows Azure