如何为 Mantis - LDAP 和数据库用户设置双重身份验证?
How to set up dual authentication for Mantis - LDAP and database users?
我们有一个 MantisBT 实例,我们设法设置了 LDAP 身份验证,但我们还需要启用基于 Mantis 用户的身份验证(对于某些用户,与 LDAP 分开)非常类似于 this question Ruby.
不幸的是,您似乎可以轻松地将 Mantis 设置为通过 LDAP 或通过其用户进行身份验证,但是同时启用这两种身份验证协议是有问题的。你有什么建议吗?
查看 source code,在实际执行身份验证的函数 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 身份验证成功,它要求 ldap_authenticate()
的 return 值被 returned 仅 ,否则则不然该代码可以继续尝试使用其他身份验证方法。第一个条件看起来像这样:
if (LDAP == $t_configured_login_method && ldap_authenticate($p_user_id, $p_test_password)) {
return TRUE;
}
为了使事情正常进行,您可以为 t_configured_login_method
创建自己的常量,这样您就可以添加自己的逻辑并且不会干扰其他身份验证方法。
我们有一个 MantisBT 实例,我们设法设置了 LDAP 身份验证,但我们还需要启用基于 Mantis 用户的身份验证(对于某些用户,与 LDAP 分开)非常类似于 this question Ruby.
不幸的是,您似乎可以轻松地将 Mantis 设置为通过 LDAP 或通过其用户进行身份验证,但是同时启用这两种身份验证协议是有问题的。你有什么建议吗?
查看 source code,在实际执行身份验证的函数 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 身份验证成功,它要求 ldap_authenticate()
的 return 值被 returned 仅 ,否则则不然该代码可以继续尝试使用其他身份验证方法。第一个条件看起来像这样:
if (LDAP == $t_configured_login_method && ldap_authenticate($p_user_id, $p_test_password)) {
return TRUE;
}
为了使事情正常进行,您可以为 t_configured_login_method
创建自己的常量,这样您就可以添加自己的逻辑并且不会干扰其他身份验证方法。