Oll*_*rds 8 heroku spring-security
我有一个像这样定义的Spring TextEncryptor
<bean id="textEncryptor" class="org.springframework.security.crypto.encrypt.Encryptors"
factory-method="text">
<constructor-arg value="${security.encryptPassword}" />
<constructor-arg value="${security.encryptSalt}" />
</bean>
Run Code Online (Sandbox Code Playgroud)
哪些是这些属性
security.encryptPassword=47582920264f212c566d5e5a6d
security.encryptSalt=39783e315e6a207e733d6f4141
Run Code Online (Sandbox Code Playgroud)
哪个在我的本地环境中工作正常.当我部署到Heroku时,我得到了
java.lang.IllegalArgumentException: Unable to initialize due to invalid secret key
at org.springframework.security.crypto.encrypt.CipherUtils.initCipher(CipherUtils.java:110)
at org.springframework.security.crypto.encrypt.AesBytesEncryptor.encrypt(AesBytesEncryptor.java:65)
at org.springframework.security.crypto.encrypt.HexEncodingTextEncryptor.encrypt(HexEncodingTextEncryptor.java:36)
...
Caused by: java.security.InvalidKeyException: Illegal key size
at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:972)
at javax.crypto.Cipher.implInit(Cipher.java:738)
at javax.crypto.Cipher.chooseProvider(Cipher.java:797)
at javax.crypto.Cipher.init(Cipher.java:1276)
at javax.crypto.Cipher.init(Cipher.java:1215)
at org.springframework.security.crypto.encrypt.CipherUtils.initCipher(CipherUtils.java:105)
... 53 more
Run Code Online (Sandbox Code Playgroud)
所以我尝试了一些较小的键,但我总是遇到同样的问题.在Heroku上使用的密钥大小是多少?
Aym*_*man 12
我的回答有点晚,但我写的是为了帮助任何有需要的人.默认情况下,spring security使用256位密钥进行加密.默认情况下,JDK不允许这样做,它仅支持最多128位密钥.
要解决此问题,您需要从oracle(Java Cryptography Extension(JCE)Unlimited Strength Jurisdiction Policy Files 7 Download)下载local_policy.jar和US_export_policy.jar jar 并在jdk_path/jre/lib/security /中替换它们.确保重新启动应用程序服务器以使更改生效.
另外,我不会将密钥放在属性文件中.相反,我建议你把它放在一个密钥库中.如果您需要帮助,请告诉我.
所以我认为我已经得出结论Heroku只是普通的不支持256位AEP,这是Spring-security使用的库存TextEncoders.
相反,我使用Java Simplified Encryption库中的BasicTextEncryptor作为备用后端并实现了TextEncryptor接口.
它不太安全,但它的工作原理.它没有提供腌制机制,但我认为图书馆的其他部分也有规定.
如果有人有任何想法如何让股票加密器在heroku工作,那么我认为这仍然是可取的.
| 归档时间: |
|
| 查看次数: |
10090 次 |
| 最近记录: |