微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么Liferay在密码前面加上算法名称?

如何解决为什么Liferay在密码前面加上算法名称?

我在liferay中查看了User_表,每个新密码都有一个前缀:

{SHA-256}

我正在尝试设置Shibboleth IDP以使用User_表进行身份验证,如下所示:

ShibUserPassAuth { RelationalLogin.DBLogin必需debug = true dbDriver =“ com.MysqL.jdbc.Driver” userTable =“ User_” userColumn =“ emailAddress” passColumn =“ password_” dbURL =“ jdbc:MysqL:// MysqL:3306 / lportal” dbUser =“ root” dbPassword =“密码” hashAlgorithm =“ SHA-256”; };

但是我的身份验证失败,因为密码不匹配。如果我进入数据库手动更新密码,那么它将起作用。

有什么想法让Liferay不设置该前缀或让Shibboleth查找该前缀吗?

解决方法

标题中您的问题的答案可能是“因为Liferay的历史和升级兼容性”。我想他们不想更改User_表的架构,但是需要一种标记哈希算法的方法。

对于您的实际问题,我没有答案,但是有两个想法:

我发现an old discussion使我相信您可以为Shibboleth DB连接编写一个查询模板(示例是从链接的讨论中复制的,以延长寿命):

<resolver:DataConnector id="mySIS" xsi:type="RelationalDatabase"
xmlns="urn:mace:shibboleth:2.0:resolver:dc">
<ApplicationManagedConnection jdbcDriver="com.mysql.jdbc.Driver"
jdbcURL="jdbc:mysql://localhost:3306/userDB" jdbcUserName="root"
jdbcPassword="root" />
<QueryTemplate>
<![CDATA[
SELECT * FROM user WHERE usr_login =
'$requestContext.principalName'
]]>
</QueryTemplate>

<Column columnName="usr_login" attributeID="uid" />
<Column columnName="first_name" attributeID="displayname" />
</resolver:DataConnector> 

此示例看起来您可能能够在查询中使用SQL字符串操作函数来切断前面的哈希算法字符串。

另一个想法是在包含这些SQL字符串操作方法的DB表上创建一个View,然后将Shibboleth连接到该View而不是User_表。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。