2017-05-16 39 views
2

我正在使用JWT进行身份验证。我使用一个签名密钥来编码我的令牌。我想将这个签名密钥存储在客户端的安全地方(避免硬编码)。 我一直希望能够使用android key store;但到目前为止,我只设法使用JDK keytool创建一个密钥存储以签署我的应用程序。在Java KeyStore中存储JWT SigningKey

我的问题是:有什么方法可以将密钥存储在与我的应用程序关联的密钥存储区中,然后将其部署到设备上,以便我可以检索应用程序内的密钥并使用它来签署JWT ?

如果不是,我的其他选择是什么?

我在Xamarin上开发。我的后端是部署在Azure上的ASP .Net。

回答

2

我不知道如何使用应用程序内的密钥存储区。但是我通过将它存储在JAR/.SO文件中来完成它。这会在应用程序内部混淆,并且不能通过逆向工程获得。

虽然这种方法只解决了逆向工程的问题,最好的解决办法是用做服务器,以避免网络截获问题

+0

这是一个移动应用程序,我想,以防止从我所有的API端点访问在应用程序外部。即使服务器生成公钥/私钥加密密钥,任何客户端(例如邮递员)都可以向服务器请求密钥对并获得授权。我怎样才能防止呢? – AHA

+0

嗯......我知道它是一个Android应用程序,因此建议将令牌存储在您的某个库中。看起来我的回答是你的问题的答案,而你在这里的评论有不同的问题 –

+0

当然。我的评论是关于你的建议的跟进,在服务器上做的。你有什么建议吗? – AHA