在IS启动时,WSO2 IS.会给出以下错误日志
TID: [-1234] [Framework Event Dispatcher: Equinox Container: d811a5a1-f0c4-4281-a1db-ce17d0928da4] ERROR {org.wso2.carbon.user.core.config.UserStoreConfigXMLProcessor} - [] encryption of Property=password failed
org.bouncycastle.jcajce.provider.util.BadBlockException: unable to decrypt block
at org.bouncycastle.jcajce.provider.asymmetric.rsa.CipherSpi.getOutput(Unknown Source) ~[bcprov-jdk15on-1.70.jar:1.70.0]
at org.bouncycastle.jcajce.provider.asymmetric.rsa.CipherSpi.engineDoFinal(Unknown Source) ~[bcprov-jdk15on-1.70.jar:1.70.0]
at javax.crypto.Cipher.doFinal(Cipher.java:2164) ~[?:1.8.0_191]
at org.wso2.carbon.user.core.config.UserStoreConfigXMLProcessor.decryptProperty(UserStoreConfigXMLProcessor.java:469) ~[org.wso2.carbon.user.core_4.6.0.87.jar:?]
at org.wso2.carbon.user.core.config.UserStoreConfigXMLProcessor.resolveEncryption(UserStoreConfigXMLProcessor.java:338) [org.wso2.carbon.user.core_4.6.0.87.jar:?]
...
错误日志显示密码未加密。那么,可以采取哪些步骤来解决这个问题呢?
要解决此问题,请执行以下步骤。
第一个场景(对于JDBC用户存储(
-
首先,尝试查找中是否提到了错误的用户存储CCD_ 1文件。
-
如果是,请转到
<IS_HOME>/repository/deployment/server/userstores
并打开用户存储CCD_ 3文件。 -
然后找到
<Property name="password">****</Property>
这可能甚至包含一个额外的属性,如encrypted="true"
-
在这里,您可以找到加密的密码。
-
然后将其更改为此并保存。
<Property name="password" encrypted="false">the non encrypted password</Property>
-
确保在加密的
<Property name="password">...</Property>
之间添加未加密的密码。如果设置为false。 -
并检查
wso2carbon.log
是否出现错误。如果不是,问题已经解决。
第二种情况
-
.xml
文件更改无效。 -
然后启动管理控制台,转到用户存储区,列出用户存储区并在那里更新密码(您应该键入未加密的密码(。
-
检查
wso2carbon.log
0是否出现错误。如果没有,问题就解决了。
第三种情况
-
即使
wso2carbon.log
中提到的用户存储在第一和第二种情况下消失,问题仍然存在。 -
然后打开管理控制台并列出用户存储,以检查是否存在所有用户存储。
-
如果缺少用户存储,则错误与此相关,而不是
wso2carbon.log
中提到的错误。wso2carbon.log
仅显示与最后一个用户存储相关的日志。 -
按照场景2中的步骤更新未列出的用户存储的密码。
第四种情况
-
场景1和2不起作用,所有用户存储都在管理控制台中列出。
-
然后列出用户和角色,并列出那里的用户存储。如果没有用户商店在那里列出,那么问题与此有关。
-
然后按照场景2中的步骤进行修复。
第五种情况
-
.xml
文件中没有<Property name="password">***</Property>
。 -
然后,与该用户存储相关的用户存储可以是LDAP或AD。
-
尝试在
.xml
文件中查找<Property name="ConnectionPassword">****</Property>
,然后按照1到4的步骤进行操作。
如果所有场景都不起作用,并且有一个自定义用户存储正在运行,请获取该用户存储的源代码并对其进行调试。
即使有一个自定义用户存储正在运行,上述步骤也应该有助于缩小问题范围。