【问题标题】:How to restrict web service to Windows Phone 7 device?如何将 Web 服务限制为 Windows Phone 7 设备?
【发布时间】:2011-04-11 04:01:27
【问题描述】:

您好,我想从我创建的 .NET Web 应用程序下的 Web 服务请求 api 密钥(客户端 ID、应用程序 ID 等)。问题是我需要使这个网络服务安全,换句话说,只有 wp7 上下载的应用程序应该能够请求这个网络服务。是否有某种设备特定的字符串可供我进行身份验证以确保 WP7 设备正在调用它?

我这样做的原因是万一密钥被泄露,我可以从我的网络应用程序中更改它,而无需在下载应用程序的每台设备上更新应用程序。

有没有人对如何解决这个问题有建议?

【问题讨论】:

    标签: c# .net wcf web-services windows-phone-7


    【解决方案1】:

    任何设备特定的字符串都可能被欺骗,而 WP7 目前还没有安全的存储方法。一种常见的方案是从 https 登录方法返回身份验证令牌,然后将其作为加密流存储在设备上。意识到解密密钥和字符串都在设备上,如果设备被入侵,可以解密。然后,您还可以根据需要在服务器端使身份验证令牌过期,并且令牌可以在一定时间后过期。

    【讨论】:

    • 我同意。只要客户有权访问代码,他们就可以破解它。但在这种情况下,拥有“足够好”的安全性可能就足够了。
    • 那么是否值得从 Web 服务调用它?还是将其存储在加密的应用程序中更好?
    • 如果需要定期“轮换”密钥,您不想将密钥存储在应用程序中。
    • 所以如果我理解正确的话,从 Web 服务返回的密钥是加密的。并且在应用程序内部包含一个用于解密从 Web 服务返回的加密密钥的密钥?
    • 认为从 Web 服务返回的密钥是一个“访问令牌”,每次后续调用服务时都需要传递该密钥 - 访问令牌与被授予访问服务的用户相关联。您应该将该访问令牌作为加密流存储在隔离存储中。您仍然需要在手机上本地拥有解密密钥 - 这是您的薄弱环节。目前没有办法解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多