使用DIrectMail SDK进行身份验证?

时间:2018-07-28 19:14:02

标签: alibaba-cloud

我想直接在分布于其间的客户端应用程序中使用Direct Mail SDK(Java)。在应用程序内验证用户身份的方法中,我需要提供以下访问密钥,

IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<your accessKey>", "<your accessSecret>");

如何防止用户知道访问密钥,又仍然不需要第三方API?有可能吗?

2 个答案:

答案 0 :(得分:1)

首先,对需要在客户端上运行的机密进行编码的应用程序进行编码是一种不好的做法。您应该管理服务器上的所有内容,并提供客户端软件与之交互的API。

第二,一旦传递给客户端,就无法隐藏这些凭据。您可以加密凭据,但有时客户端应用程序需要解密它们。甚至业余程序员也可以弄清楚您如何处理凭据。

忽略上述建议,阿里云支持提供临时访问密钥的STS。使用您的阿里巴巴凭据,您将调用AssumeRole,该方法将创建临时访问密钥,授予用户调用DirectMail的权限。您可以限制凭据有效的时间。范围是900到3600秒。在此期间之后,密钥将失效。

请记住900秒是很长的时间。恶意演员访问这些密钥可能会使用您的帐户发送数千封电子邮件。因此,应实现强大的用户身份验证,STS和临时访问密钥。

如果您认为只需要对接口保密,就可以了。 Internet上有数百万个脚本小子在每个IP地址戳戳。启动一个新的ECS实例,您将在数小时内看到攻击。

答案 1 :(得分:0)

正如您所说,由于它是Java Web应用程序(假设),目前我想到的是使用类似于JBOSS Vault的方法来安全地存储访问密钥。

如果它是一些独立的客户端应用程序,您仍然可以使用某些加密方法来存储数据。但这只会阻止轻松访问数据/密钥。但这并非不可能。最好的选择是创建另一个第三方API