【问题标题】:Silverlight Design QuestionSilverlight 设计问题
【发布时间】:2011-03-21 16:39:05
【问题描述】:

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

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

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

另外,这会是一种冒险的做法吗?感谢您的任何建议和指导。

【问题讨论】:

    标签: silverlight authentication


    【解决方案1】:

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

    传递凭据总是有风险的,尤其是在客户端计算机上运行时。也就是说,Silverlight 为您带来了很多好处,所以不要让身份验证的挑战阻碍您。

    【讨论】:

    • 是的,InitParams 是不可能的。经理将其视为安全风险。所以有可能得到经过身份验证的cookie???我试图从会员角色中获取用户名和密码,但如果不关闭加密就无法检索密码。即使我能够在服务器端获取它,我如何在没有 initparams 的情况下将它传递给客户端。
    • 看看这两个链接 - bit.ly/bjmRUsbit.ly/aAS91F。他们可能会有所帮助。我的方法是在用户登录时创建一个令牌。然后通过 initparams 将令牌传递到 Silverlight(这与在 cookie 中具有身份验证令牌应该没有什么不同)。当从 Silverlight 发出服务调用时,我会获取该令牌并将其与调用一起传递。
    【解决方案2】:

    您可以采取几种方法。虽然我知道您不想在 init 参数中公开凭证,但您可以为凭证生成“票证”(基于声明的身份验证),并在 init 参数中包含票证(例如,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

    【讨论】:

    • 这是一个可靠的想法。我过去做过类似的事情,在 ASP.NET 页面和操作数据库数据的 ActiveX 控件之间共享身份验证方案。唯一的区别:我倾向于将这个想法称为安全令牌(我在 COM 文档中也看到它被称为 cookie)
    • 我相信我确实完成了 RiaServices 身份验证教程,并且真的很喜欢它。不幸的是,我只能使用他们为数据访问而构建的组件。就个人而言,我很想使用 Microsoft 技术,但我也同样喜欢获得薪水。我会调查您的“基于声明的身份验证”。感谢您的想法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多