所以我根据我在公司内部制作的一些应用程序启动了一系列新应用程序。使用我公司的应用程序(我也使用Azure Web应用程序来托管API和SQL),我没有必要以任何特定方式限制查询结果,因为只有1个用户,所以没有风险任何用户都可以访问他们不应该拥有的数据。
但是现在我正在修改这些应用程序以供外部使用,我显然只希望每个用户查询每个表以查找他们应该有权访问的行。
我的第一个想法是根本不允许普通的EasyTable访问,而是通过精心构建的API公开所有内容,每个API都需要UserID作为参数才能工作。
此选项对我来说没问题,但我不确定这是否正确,或者是否还有允许正常EasyTable访问的方式,同时仍然允许每个用户只能在每个表上访问自己的行。
答案 0 :(得分:1)
如果您针对Azure Active Directory,Facebook,Google,Twitter,Microsoft帐户或其他OAuth登录提供程序设置了身份验证,则可以设置表的权限,以限制特定操作的访问权限,仅限以下经过身份验证的用户: / p>
有关详细信息,请查看How to: Use authentication claims with your tables。
关于如何限制数据以便登录用户只能看到他们的记录,请查看此really good tutorial。
答案 1 :(得分:0)
在我的情况下,我不想使用身份提供商,我希望我的应用程序针对电子邮件地址提供自己的身份验证。
我将拥有一个User表,我基本上只是通过普通的OData API禁用访问权限。我将提供一个API,用户可以在其中提供电子邮件地址和密码,如果匹配,我的API将反馈该行的ID(这是一个非常荒谬的字符串)。然后,用户应用程序将能够使用该ID访问其他表。
通过正常的OData API I can use the 'context' object to look at HTTP headers访问我的所有其他表。鉴于HTTPS标头是加密的,我觉得这是一个相对安全的选择。所有表方法都需要一个类似[${vendor-prefix}-UserID] = UserID
的HTTP标头。
在客户端,我经常使用MobileServiceClient库allows addition of custom headers,因此我可以在需要时添加标题。