Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何为我的移动应用程序REST API调用授予角度授权_C#_Ionic Framework_Api Authorization - Fatal编程技术网

C# 如何为我的移动应用程序REST API调用授予角度授权

C# 如何为我的移动应用程序REST API调用授予角度授权,c#,ionic-framework,api-authorization,C#,Ionic Framework,Api Authorization,我有一个C#Azure Web API后端,数据从前端的Ionic移动应用程序(基本上是一个Angular应用程序)检索 用户的授权是通过爱奥尼亚的云服务完成的,因此他们通过FB、Twitter、basic(用户名/密码)来处理注册用户的繁重任务 我的问题是,当我从后端API调用服务时,如何确保没有人读取内部javascript代码中的硬编码用户名/密码来访问后端数据 我知道这很牵强,但API是否知道请求实际上来自应用程序(Android和iOS),而不仅仅是来自试图从未经授权的web浏览器插入

我有一个C#Azure Web API后端,数据从前端的Ionic移动应用程序(基本上是一个Angular应用程序)检索

用户的授权是通过爱奥尼亚的云服务完成的,因此他们通过FB、Twitter、basic(用户名/密码)来处理注册用户的繁重任务

我的问题是,当我从后端API调用服务时,如何确保没有人读取内部javascript代码中的硬编码用户名/密码来访问后端数据


我知道这很牵强,但API是否知道请求实际上来自应用程序(Android和iOS),而不仅仅是来自试图从未经授权的web浏览器插入数据和注释的人?

因为您是从最终用户可用的JavaScript调用API,您可以假设您的JavaScript和其中包含的所有逻辑/凭证都是所有人都可以访问的

在这方面有相当安全的方法,FB/Twitter和他们的同类已经实现了(使用)。本质上,在向API传递凭据时,会生成一个令牌,然后将其用于对API的后续调用,而不是凭据

您可以避免人们使用在呈现表单时生成的“未经授权”请求随机发出请求,并且只能使用一次来提交有问题的表单。然后可以在API端对nonce的有效性进行时间限制。不幸的是,这不是万无一失的,但这将限制你可能受到的任何形式的“暴力”攻击的伤害


同样,对于任何共享的“秘密”(这将保证请求的来源),你必须假设任何有足够意志力的人都能够从应用程序中提取它,因此你在这里实现的任何方法都是100%万无一失的。您最好能为每个设备上的每个用户生成一个共享秘密。

因为您是从可供最终用户使用的JavaScript调用API,所以您可以假设您的JavaScript和其中包含的所有逻辑/凭据都可供所有用户访问

在这方面有相当安全的方法,FB/Twitter和他们的同类已经实现了(使用)。本质上,在向API传递凭据时,会生成一个令牌,然后将其用于对API的后续调用,而不是凭据

您可以避免人们使用在呈现表单时生成的“未经授权”请求随机发出请求,并且只能使用一次来提交有问题的表单。然后可以在API端对nonce的有效性进行时间限制。不幸的是,这不是万无一失的,但这将限制你可能受到的任何形式的“暴力”攻击的伤害


同样,对于任何共享的“秘密”(这将保证请求的来源),你必须假设任何有足够意志力的人都能够从应用程序中提取它,因此你在这里实现的任何方法都是100%万无一失的。您最好能为每个设备上的每个用户生成一个共享秘密。

简短回答:您不能。
详细回答:您可以(而且必须)验证客户的行为,但不能验证客户本身。
例如,我们可以看看口袋妖怪围棋:几个小时后,机器人就可以玩了,几周后,Niantic开始担任机器学习软件工程师,并使用停止机器人的
未知6
算法加密其API,但经过几天的努力,机器人又重新上线了。

你可以使用这个世界上所有安全的方法(花费很高),但是如果有人(对软件工程有很好的了解)最终想要模仿你的客户,我会达到他的目标。

简单回答:你不能。
详细回答:您可以(而且必须)验证客户的行为,但不能验证客户本身。
例如,我们可以看看口袋妖怪围棋:几个小时后,机器人就可以玩了,几周后,Niantic开始担任机器学习软件工程师,并使用停止机器人的
未知6
算法加密其API,但经过几天的努力,机器人又重新上线了。

你可以使用这个世界上所有安全的方法(花费很高),但是如果有人(对软件工程有很好的了解)希望最终模仿你的客户,我会达到他的目标

这是一个多么好的答案。说到这一点,我也经常这么想,只要有足够的需求和技能,任何人都会得到它……而你所包含的这些小宝石至少会让它变得更难,但对于这些类型的应用程序,没有什么是100%安全的。幸运的是,该应用程序没有商业机密或任何关键信息,因此这应该会有很大帮助!再次感谢!多好的回答啊。说到这一点,我也经常这么想,只要有足够的需求和技能,任何人都会得到它……而你所包含的这些小宝石至少会让它变得更难,但对于这些类型的应用程序,没有什么是100%安全的。幸运的是,该应用程序没有商业机密或任何关键信息,因此这应该会有很大帮助!再次感谢!