Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.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
Android 在移动应用程序中隐藏秘密_Android_Ios_Authentication_Mobile_Oauth 2.0 - Fatal编程技术网

Android 在移动应用程序中隐藏秘密

Android 在移动应用程序中隐藏秘密,android,ios,authentication,mobile,oauth-2.0,Android,Ios,Authentication,Mobile,Oauth 2.0,我拥有一个移动应用程序,希望它使用我的web api。我计划使用oauth2用户凭证流() 但是,我希望对应用程序以及用户凭据进行身份验证(我不希望任何其他应用程序或用户对我的API进行身份验证,以便在此应用程序之外使用) 我看到库指定了以下内容: $ curl -u TestClient:TestSecret https://api.mysite.com/token -d 'grant_type=password&username=bshaffer&password=brent

我拥有一个移动应用程序,希望它使用我的web api。我计划使用oauth2用户凭证流()

但是,我希望对应用程序以及用户凭据进行身份验证(我不希望任何其他应用程序或用户对我的API进行身份验证,以便在此应用程序之外使用)

我看到库指定了以下内容:

$ curl -u TestClient:TestSecret https://api.mysite.com/token -d 'grant_type=password&username=bshaffer&password=brent123'
这对我来说是可行的,但它假设下载的每个移动应用程序(它是公共的)都需要将TestClient:TestSecret预加载到应用程序中


我如何确保这些信息不是从应用程序中提取出来的,以允许人们从另一个应用程序/系统等使用其用户凭据调用我的API?

如果它是预加载的,则不能。你只能增加工作系数,增加难度,减少成功的攻击者

一种解决方案是让用户登录到您的服务器并在该点获取凭据,然后将其存储在密钥链中。Dropbox和类似的应用程序如何处理这个问题。但是,即使这样,对用户保留凭据也是一个困难的问题


下一个问题是中间人(MITM)攻击,您需要在应用程序中插入证书以避免这种情况。

< P>如果预加载,则不能。你只能增加工作系数,增加难度,减少成功的攻击者

一种解决方案是让用户登录到您的服务器并在该点获取凭据,然后将其存储在密钥链中。Dropbox和类似的应用程序如何处理这个问题。但是,即使这样,对用户保留凭据也是一个困难的问题


下一个问题是中间人(MITM)攻击,您需要在应用程序中插入证书以避免这种情况。

Hi-ZAPH,如果是这样的话,那么另一个选项是向密码凭据流中添加客户端密钥(不是密钥和秘密)。我想这是同样安全的,因为它也“烘焙”到应用程序中。是吗?是的,同样的问题。您需要做的是评估您和您的用户需要的安全级别。建立数据对用户、攻击者和您的声誉的价值,单位为美元。确定您要保护的攻击者:好奇的个人、对一个用户或您的所有数据感兴趣的有能力的攻击者或资金雄厚的政府。评估您将要支付的复杂度、用户面临的困难、加密安全领域专家的成本(美元)。然后是对服务器的保护,使用可由SN?Hi zaph跟踪的硬件进行双因素身份验证,如果是这种情况,则另一种选择是只向密码凭据流添加客户端密钥(而不是密钥和机密)。我想这是同样安全的,因为它也“烘焙”到应用程序中。是吗?是的,同样的问题。您需要做的是评估您和您的用户需要的安全级别。建立数据对用户、攻击者和您的声誉的价值,单位为美元。确定您要保护的攻击者:好奇的个人、对一个用户或您的所有数据感兴趣的有能力的攻击者或资金雄厚的政府。评估您将要支付的复杂度、用户面临的困难、加密安全领域专家的成本(美元)。然后是服务器的保护,使用可由SN跟踪的硬件进行双因素身份验证?