我们有一个MANTISBT实例,我们设法设置了LDAP身份验证,但是我们还需要根据MANTIS的用户(与某些用户的LDAP分开(启用身份验证非常相似(Ruby的问题。
不幸的是,似乎您可以轻松地设置螳螂以通过LDAP或通过其用户进行身份验证,但是启用两个身份验证协议是有问题的。您有任何建议吗?
查看源代码,在实际执行身份验证的函数auth_does_password_match()
中:
function auth_does_password_match( $p_user_id, $p_test_password ) {
$t_configured_login_method = config_get_global( 'login_method' );
if ( LDAP == $t_configured_login_method ) {
return ldap_authenticate( $p_user_id, $p_test_password );
}
# code continues with a try for each of the other authentication methods
# ...
}
第一个条件测试登录方法$t_configured_login_method
,如果是" ldap"试图进行相应的身份验证。好的,这里没什么疯狂的,但是语句return ldap_authenticate(...);
不允许其他身份验证方法。
幸运的是,修补件没什么大不了的,因此,如果LDAP身份验证失败,它可能会退回到其他身份验证方法中。
基本上,如果LDAP身份验证成功,但不能以其他方式尝试使用其他auth方法,则要求仅返回 ldap_authenticate()
的返回值。第一个条件看起来像这样:
if (LDAP == $t_configured_login_method && ldap_authenticate($p_user_id, $p_test_password)) {
return TRUE;
}
要使事情正确,您可以为t_configured_login_method
创建自己的常数,以便您可以添加自己的逻辑并不要干扰其他AUTH方法。