繁体   English   中英

Windows Azure中的Silverlight应用程序的表单身份验证

[英]Forms Authentication for a Silverlight application in Windows Azure

我正在将n层Silverlight应用程序迁移到Windows Azure,但遇到了麻烦。 登录后,Web服务将无法确定谁已通过身份验证。 我的云项目有两个角色:

  • Web UI:在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 / login.aspx提交用户名和密码。 使用FormsAuthentication.SetAuthCookie(username, myVar);方法创建一个cookie FormsAuthentication.SetAuthCookie(username, myVar); 然后,将用户重定向到包含Silverlight应用程序的Default.aspx

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

在本地云仿真器中一切都很好,但是当我在Windows Azure中部署项目(暂存)时,Web服务不知道我已连接。 我使用了Fiddler,然后看到页面111.222.33.44:8080/Login/login.aspx被查询(该页面不存在于Web服务角色中,这是一种了解用户是否已通过身份验证的方式)。

我怀疑Web服务无法检索用户名,因为它无法检索由Web UI角色创建的cookie。 实际上有可能使它起作用,还是必须将Web服务角色与Web UI角色合并?

这两个角色上的机器密钥相同。

AFAIK这两个角色不会共享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繁重的工作,而使Web角色可以更好,更快地服务于Web页面。

这有帮助吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM