【问题标题】:Azure Mobile App Service APIkeyAzure 移动应用服务 APIkey
【发布时间】:2018-06-29 02:34:42
【问题描述】:

我创建了一个当前可以“匿名”访问的 Azure 移动应用服务

Anonymous access is enabled on the App Service app. Users will not be prompted for login.

为了确保安全,我可以启用App Service Authentication,它会要求用户登录

但这不是我想要的 - 这个应用程序中的数据只能由应用程序访问,而不需要每个用户在使用它之前登录到我的应用程序。

所以你可能会说,在这种情况下,Anonymous access 很好,但我想用至少像 API Key 这样的东西来限制它,这样我就可以访问我的应用程序可以用来访问数据的 API防止随机请求,因为任何人都可以直接使用 Postman 并开始获取数据而无需任何身份验证。

简而言之,我不想要个人用户身份验证,但至少需要一个 API 密钥来确保仅对来自我的应用程序发出的请求进行身份验证,而不需要其他任何内容。

我在我的移动应用程序中使用以下内容来创建连接并进行离线同步等

MobileServiceClient client = new MobileServiceClient(applicationURL);

知道我该怎么做吗?

仅供参考。我的服务器端后端是 C#

【问题讨论】:

    标签: azure azure-mobile-services


    【解决方案1】:

    由于您使用的是 Azure 移动应用程序,因此根据您的要求,您可以利用 Custom Authentication 构建您的 CustomAuthController 来登录并为特定用户生成 JWT 令牌,而无需用户交互。日志的核心代码 sn-p 如下所示:

    MobileServiceClient client = new MobileServiceClient("https://{your-mobileapp-name}.azurewebsites.net/");
    client.LoginAsync("custom", JObject.FromObject(new{Username="***",Password="***"}));
    

    注意:如上教程所述:

    您必须在应用服务中打开身份验证/授权。将请求未通过身份验证时采取的操作设置为允许请求(无操作),并且不配置任何受支持的身份验证提供程序。

    并且您必须为需要授权访问的控制器/操作显式添加[Authorize] 属性。您可以关注Authentication in the Backend的详细信息。

    【讨论】:

    • 嗨布鲁斯,感谢您的回复,我对此做了很多研究,最后实现了CustomAuth controller,并通过修改TableContollers限制了数据per-user-based,以确保数据为正确的用户已更新,用户就是他们声称的用户。在 Postman 等中完美运行和测试 - 我被困在移动端,client.LoginAsync("custom", JObject.FromObject(user)); 给了我 JSON.NET 错误 - 我应该为此打开一个新问题吗?
    • 如果你通过邮递员测试过自定义认证,说明你的后端是正确的。对于JSON.NET Error 错误,可能是您的客户端问题。您在发送自定义登录请求时是否使用 fiddler 捕获网络跟踪?您的移动客户端 SDK 版本是多少?
    • 是的,刚才我修改了我的 Web 应用程序,通过发送正确的用户 ID 的 authToken 可以正常工作,这不是那么愉快的体验,但我会说服务器实现是正确的。我没有使用提琴手,但在 Logcat 中我收到此错误 cannot access child value on newtonsoft.json.linq.jvalue 其中 JObject 是我使用用户 ID/密码发送的对象
    猜你喜欢
    • 2016-04-10
    • 2018-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    相关资源
    最近更新 更多