【问题标题】:how to secure azure mobile service / html - javascript如何保护 azure 移动服务/html - javascript
【发布时间】:2014-04-10 08:16:06
【问题描述】:

当我调用像 gmail 这样的 oauth 提供商并取回令牌时,我如何确保我以后进行的所有调用都来自进行身份验证的同一个客户端?也就是说,是否有某种安全令牌我应该通过包?我每次都把那个令牌传回去吗?

例如,如果我有一个简单的数据表,用于包含 first、last、birthdate、id 的留言簿。我如何确保“拥有”该记录的用户是唯一可以更新它的用户。另外,我怎样才能确保唯一可以看到自己生日的人是经过身份验证的人。

很抱歉这个令人困惑的问题,我无法理解 azure 移动服务(形成一个 html 客户端)在任何方面都是安全的。

【问题讨论】:

    标签: azure azure-mobile-services


    【解决方案1】:

    我最近也试图弄清楚这一点,这就是我的理解方式(可能有点太多细节),使用canonical ToDoList applicationserver authentication enabled for Google

    在这种情况下,当您将身份验证外包给 Google 时,您执行的是标准 OAuth 2.0 授权代码授予流程。您向 Google 注册您的应用程序,获取客户端 ID 和密码,然后您在 AMS 中注册您的应用程序。快进到当您在 HTML ToDoList 应用上单击“登录”时:AMS 通过提供有关应用的信息(客户端 ID 和密码)代表您的应用请求授权代码,这最终会导致 Google 的帐户选择器/登录屏幕。在您选择帐户并成功登录后,Google 会重定向到您的 AMS 应用程序的 URL,其中授权代码作为查询字符串参数附加。然后,AMS 代表您的应用程序将该授权代码兑换为来自 Google 的访问令牌,创建一个新的用户对象(如下所示),并将其返回给您的应用程序:

    "userId":"Google:11223344556677889900"
    "authenticationToken":"eyJhbGciOiJb ... GjNzw"
    

    这些属性在Login function 被调用后返回,包裹在User object 中。 authenticationToken 可用于通过将其附加到请求的 X-ZUMO-AUTH 标头中来对 AMS 进行经过身份验证的调用,至少直到它过期为止。

    在安全性方面,以上都发生在HTTPS下,token只适用于当前登录的用户,并且token在预定的时间过期(不知道多长时间)。

    针对您的理论示例,如果您的表的权限已配置为仅允许经过身份验证的用户,您可以通过编写逻辑来进一步锁定内容,并在显示生日时检查 userId 属性。请参阅reference docs for the User object 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-22
      • 2020-12-01
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多