我使用Oauth2实现了端点,我对此并不满意。我从Storm8看一些随机游戏,他们不需要用户登录,并且几乎没有任何权限。然后我看看我的游戏,我看到了很多潜在危险的权限,even that is not enough:在游戏中它要求我“知道你是谁在Google上”。我不是一家大公司,只是一个小型开发商,所以人们会怀疑我是不是想要破解他们。 我所需要的只是知道用户ID,并知道这确实是来自请求的用户。我认为这是不可接受的。
我决定不使用Google提供的身份验证,而是使用我自己的身份验证:我会为用户提供唯一ID,随机密码,并允许更改它们(如果他们不登录,则不允许不同的设备)。我将存储登录/传递共享首选项并在每个请求中发送它们。 所以我有以下对我非常重要的问题,我将非常感谢答案或提示:
1)有没有强烈的理由不这样做?我将能够大大减少权限数量,并改善用户体验。
2)我相信android应用程序和端点之间的所有通信默认都是通过HTTPS进行的,我是对的吗?
答案 0 :(得分:2)
Google专门创建了OAuth verification only service,可让您保护对Google App Engine Cloud Endpoints的调用,而无需向用户请求对其帐户的任何特殊权限。这允许您自动保护与服务器的连接,然后您可以继续使用您可能需要的任何登录设置(尽管请注意共享首选项不一定是敏感登录信息的最佳位置)。
答案 1 :(得分:0)
1)如果你能避免,你永远不应该“自己动手”。问题很多,很多,很微妙。您应该使用Google(或其他可信方)为您提供的安全机制 - 他们的工程师在这一领域的教育和经验远远超过我们凡人。
https://security.stackexchange.com/questions/18197/why-shouldnt-we-roll-our-own
Google使用 OAuth2 (强调 2 )是有原因的 - 在原始版本中发现了漏洞。如果最好的专家一起工作(这是一个开放的标准)无法创建一个完美的认证机制,那么期望你(或者我,就此而言)可以做得更好是不合理的。
使用Google身份验证的一个小好处是您不必存储用户的凭据。这使您不会被黑客窃取用户凭据,甚至可以简化您的个人“隐私政策”。
2)是的,我相信所有App-Engine端点呼叫都是通过SSL进行的,但我无法找到正式的确认信息。实际上,在搜索确切的问题时,我偶然发现了你的问题。