我想要完成以下场景:
我还没有完全确定我是否希望Facebook集成成为Spotify等“选择加入”选项,或者我想通过仅限Facebook身份验证来“锁定”我的服务。那是另一个讨论。
如何保护我在Silverlight应用中从Facebook收到的API密钥和密钥?对我来说很明显,这是不可能的,因为代码在客户端运行,但有没有办法让我更难,或者我应该忍受第三方可能“行动”作为我自己的应用程序的事实?
使用Facebook Developer Toolkit,Silverlight中有以下C#方法,当用户使用Facebook Connect API对Facebook进行完全身份验证时,该方法是从JavaScript执行的。
[ScriptableMember]
public void LoggedIn(string sessionKey, string secret, int expires, long userId)
{
this.SessionKey = sessionKey;
this.UserId = userId;
显然这里的问题是JavaScript注入了userId,这只是一个简单的数字。这意味着任何人都可能在JavaScript中注入不同的userId并让我的应用程序认为它是其他人。这意味着有人可能会劫持我网站上运行的服务中的数据。
我想到的另一种方法是对我网站上的用户进行身份验证,这样我就不会泄露任何秘密,我可以在初始身份验证后向用户返回auth-cookie。虽然这种情况在用户在本地而不是从我的网站运行Silverlight应用程序的浏览器外情况下效果不佳。
答案 0 :(得分:1)
我遇到了完全相同的问题,这是我的工作:
访问令牌不会泄露您的信息,但它确实为您提供了Silverlight中的UserID和API调用访问权限。最糟糕的情况是有人试图弄乱AccessToken,但FB可能追溯到最初分配给令牌的用户。
答案 1 :(得分:0)
我不会在您的Silverlight应用中添加API Secret。您需要通过调用服务器来找到一种方法。
我承认我不太了解Facebook Connect API,我很快就会关注它,因为我需要为我的Silverlight应用做类似的事情。