2010-07-27 70 views
2

我正在开发一个工作应用程序,我正在尝试决定是使用Silverlight Business App还是Asp.Net Web App。如果我使用身份验证将整个应用程序创建为Silverlight应用程序,则我的经理会关注它的性能和下载时间。上周我一直在玩一些教程,试图了解我的情况,并提出了一个设计问题,我需要问那些比我更有经验的人。Silverlight设计问题

是否可以使用Asp.Net应用程序,并将Silverlight应用程序嵌入到将在使用角色授权配置的文件夹内使用的页面之一中?如果是这样,是否有可能从客户端Silverlight应用程序获取用户凭据,而无需通过initParams传递它们。

据我所知,我可以将身份验证设置为“useCookies”,所以我想我可以在客户端上获取cookie,并希望获得验证用户是否通过身份验证的属性。

此外,这是一个冒险的做法?感谢您的任何建议和指导。

回答

2

您可以采取几种方法。虽然我知道您不想在init参数中公开证书,但您可以为证书生成“票证”(基于声明的身份验证),并在init params中包含票证(例如,GUID)。当Silverlight应用程序启动时,它会使用票证,可能通过安全的Web服务调用来验证票证,并且票证将不再有效,因此即使有人伪造或查看了源,也无法使用票证。

很大程度上取决于您的架构。例如,如果您使用基于角色的身份验证,并且大多数业务逻辑和/或决策都基于Web服务调用,则Web服务可以使用HttpContext.Current.Identity来验证用户。即使有人打开Silverlight应用程序,任何服务调用都将失败,除非它们经过了适当的验证。否则,我要么通过传递一张票,让Silverlight信任用户是有效的(您可以创建一个接受Guid并返回角色信息的服务),或让用户从Silverlight登录(您的服务面向前认证机制,然后返回票据和/或角色信息)。

,如果你决定使用WCF RIA,看看这些例子中的烤入验证它会变得更加有趣: http://code.msdn.microsoft.com/RiaServices/Release/ProjectReleases.aspx?ReleaseId=2661

+0

这是一个坚实的想法。我过去曾经做过类似的事情来共享ASP.NET页面和操作db数据的ActiveX控件之间的身份验证方案。只有差异:我倾向于将这个想法称为安全令牌(我在COM文档中看到它也称为cookie) – 2010-07-27 16:47:19

+0

我相信我确实经历了RiaServices认证教程,并且诚实地喜欢它。不幸的是,我不得不使用他们为数据访问构建的组件。就我个人而言,我很乐意使用微软技术,但我也很喜欢获得薪水。我会研究你的“基于声明的认证”。感谢您的想法。 – jhorton 2010-07-27 18:44:08

0

1.)在ASP.NET页面上嵌入Silverlight xap是完全可能的。 2.)就证书而言,使用cookie可能会起作用,或者您可以通过initparams传递令牌并通过Web服务验证该令牌以查看用户是否有效

这总是一种风险,特别是当它在客户端计算机上运行时。也就是说,Silverlight会给你带来很多收入,所以不要让身份验证的挑战阻碍你。

+0

呀,initParams在都出了问题。经理认为这是一种安全风险。所以有可能得到认证的cookie?我试图从成员身份角色获取用户名和密码,但无法在不关闭加密的情况下检索密码。即使我能够获得它的服务器端,我怎么会没有initparams传递给客户端。 – jhorton 2010-07-27 16:24:12

+0

看看这两个链接 - http://bit.ly/bjmRUs和http://bit.ly/aAS91F。他们可能会帮助。我的方法是在用户登录时创建一个令牌。然后通过initparams将令牌传递给Silverlight(这不应该与cookie中的auth令牌有所不同)。当从Silverlight进行服务调用时,我会接收该令牌并将其与该调用一起传递。 – 2010-07-28 03:42:54