mantis的用户认证函数Authentication中相关有

$g_login_method
  • MD5
  • LDAP
  • PLAIN
  • CRYPT
  • CRYPT_FULL_SALT
  • BASIC_AUTH
  • Some systems (mostly non-unix) do not have crypt support in PHP. MD5 will accomplish almost the same thing. PLAIN is plain text and there is no attempt to secure the password in the database. You will not be able to easily convert between encryption methods so this needs to be chosen at install time. CRYPT was the default until 0.17.0; MD5 is now the default. Try CRYPT_FULL_SALT if CRYPT is not working.
$g_ldap_server The ldap server (eg: ldaps://ldap.example.com
$g_ldap_port LDAP port (default 636).
$g_ldap_root_dn “dc=example, dc=com”
$g_ldap_organisation “organizationname=*Example)”
$g_use_ldap_email Use email address in LDAP rather than the email stored in the database.
$g_ldap_bind_dn “cn=Manager, dc=example, dc=com”
$g_ldap_bind_passwd  

由于需要涉及到几个程序的统一认证,所以需要mantis到windows的AD进行认证,竟然发现互联网上又没有相关文档,高手们太坏了。诶诶,害的我再次自力更生艰苦奋斗。
相关配置方法:
首先介绍微软的一款Support Tools,ldp.exe,用来查看AD的详细信息。 
给出一个界面

在mantis的config_inc.php中配置以下信息, 
$g_login_method=LDAP; //设置认证方法为LDAP 
$g_ldap_server=’ldap://boofee.local’; //LDAP的访问路径 
$g_ldap_port = ’389′; //端口,微软的AD是389 
$g_ldap_organization = ”; 
$g_ldap_uid_field = ‘CN’; //这句最重要,其他文档配置未成功就是这里出了错 
$g_ldap_root_dn = ‘CN=Users,DC=boofee,DC=local’; //在AD中建立的相关用户在哪个组里面就将此配置到哪里,具体怎么写就是靠ldp.exe进行查询。 
$g_ldap_bind_dn=”CN=user,CN=Users,DC=boofee,DC=local”; //连接AD的用户名,user权限就可以了。 
$g_ldap_bind_passwd=”user”; //连接AD的密码
配置完成后基于AD的LDAP认证成功。
成功之后还是需要在mantis中建立用户名,在AD的相关组中也要有同样的用户名,认证的时候密码使用的是AD内存贮的密码。

转载自:http://www.boofee.net/flyingbamboo/archives/242

Mantis tweaks: logging in via Microsoft Active Directory LDAP

This is a short article on how to get the above Mantis version to work with Microsoft Windows Active Directory LDAP.
Used Mantis version: 1.1.1 and PHP Version 5

Mantis currently supports only login via LDAP directory by the following scheme:

Connect to LDAP server
Bind with anonymous DNS or with a user specified DN (but in a config file permanently)
If the bind succeeds then do an ldap_search
If the search succeeds then login is successful.
When using Microsoft AD LDAP the situation is a bit different, we want to:

Connect to LDAP server
Create a DN basing on the config file and username field that the user entered in the login form
Try Bind with the above DN and password that the user entered in the login form
If the bind succeeds then the login is successful (we don’t need to run the search)
To achieve that, there are some minor changes to do in the Mantis core API.

Step 1
Log in to a fresh mantis installation, and create a user with admin privileges with a username matching your LDAP username (in this example xy2093)

Step 2
First, add to your config_inc.php configuration file the following options:

/* we want to use LDAP auth */

$g_login_method = LDAP;
$g_ldap_server = 'ldap://ldap.myhost.com/';

/* the root DN that will be used to form the bind DN during authentication phase */
$g_ldap_root_dn = 'ou=staff,ou=company,dc=domain,dc=com';

/* we don't want the users to be able to sign-up via mantis */
$g_allow_signup=OFF;

/* we want to use Mantis email field instead of LDAP one */
$g_use_ldap_email = OFF;

/* we don't want false mantis lost password feature */
$g_lost_password_feature = OFF;
Step 3:
Next, you have to modify the core LDAP authentication ldap_authenticate function. Go to core/ldap_api.php, find the above function and replace it with:

function ldap_authenticate( $p_user_id, $p_password ){
if (is_blank($p_password))
return false;
$t_ldap_host = config_get('ldap_server');
$t_ldap_port = config_get('ldap_port');
$t_ldap_rdn = config_get('ldap_root_dn');
$t_ds = ldap_connect($t_ldap_host, $t_ldap_port) or die('Unable to connect to LDAP server<br />');
$t_user = user_get_field($p_user_id, 'realname'); //This checks the users Real Name instead of username
$t_uname = user_get_field($p_user_id, 'username');
$binddn = "CN=$t_user ($t_uname),$t_ldap_rdn";
$t_authenticated = false;
if(@ldap_bind($t_ds,$binddn,$p_password))
$t_authenticated = true;

return $t_authenticated;
}
In the function notice the $bind_dn variable. This is the variable being used to prepare the bind DN for LDAP connection. Feel free to modify it to suit your authentication scheme, however you should not have to. It defaults to:

CN=Firstname Lastname (username),ou=staff,ou=company,dc=domain,dc=com

i.e.

CN=John Doe (xy2093),ou=staff,ou=company,dc=domain,dc=com.

You won’t believe it but that’s it! Now you can try to log in to Mantis with your LDAP password and it should work like a charm.

The next issue to solve here is that you have to have the users from LDAP in your $mantis_user_table, for instance to manage Mantis privileges. There are many ways to achieve that, you can import them every night. Or you can use Mantis SOAP API to check if the user exists in LDAP when they try to log in as I did. But how to do that is another article ;)

转载自:http://www.warden.pl/2008/07/08/mantis-tweaks-getting-it-to-work-with-microsoft-ad-ldap/

 
 

Active directory settings

Active directory settings

Introduction

The page aims at describing how to configure mantis to connect to Active Directory.

General principles

Active Directory can currently be used by mantis for the following usage:

Check user password.
Retrieve user mail address (optional).
Users must be created manually in mantis using the same login as in Active Directory.

The way it proceeds is the following:

Connect to Active Directory using LDAP protocol to search user by its login - A generic account is used for that purpose.
If an entry was found, bind to Active Directory using dn entry found and the password provided by user. If several entries are found, each of them is tried until one successes.
If the connection is a success, and if the option is activated, the user mail address is retrieved from Active Directory.
General LDAP configuration

The following parameters must be set in the config_inc.php file:

$g_login_method = LDAP;
$g_ldap_server = ‘ldap://yourservername’; # or $g_ldap_server = ‘ldaps://yourservername’;
$g_ldap_port = 389; # Default is 389
$g_ldap_root_dn = “OU=your_organization_RDN,DC=your_organization_RDN,DC=your_organization_RDN”; # The root DN where to search users e.g. ‘ou=people,dc=example,dc=com’
$g_ldap_bind_dn = ‘full_DN_entry_for_generic_user’; # A system account to login to LDAP e.g. ‘cn=Robert Smith,ou=people,dc=example,dc=com’
$g_ldap_bind_passwd = ‘**’; # System account password
$g_ldap_organization = ‘‘; # This is additional filter that may be added to search query - you should first leave it empty and may add a filter later for optimization. e.g. ‘(objectClass=person)’
If you want to use user e-mail address defined in Active Directory instead of the one defined when creating mantis account you must add the following parameter:

$g_use_ldap_email = ON;
Specific Active Directory configuration

You must add the following parameters in the config_inc.php file:

$g_ldap_protocol_version = 3;
$g_ldap_uid_field= ‘sAMAccountName’; # Use ‘sAMAccountName’ for Active Directory - this is the name of the attribute used to search a user
Additionally, make sure not to use the root of your domain for $g_ldap_root_dn parameter. If you bind to the root of your domain, i.e. just dc=company,dc=com, then Active Directory, in addition to the search results you expected, will also return referrals to the other directory partitions which would confuse current implementation and cause an error.

http://www.mantisbt.org/wiki/doku.php/mantisbt:active_directory

Mantis集成 LDAP 认证的更多相关文章

  1. LDAP落地实战(四):Jenkins集成OpenLDAP认证

    前几篇分文章分别介绍了OpenLDAP的部署管理和维护以及svn.git的接入,今天我们再下一城接入jenkins. 前情提要:LDAP系列文章 LDAP落地实战(一):OpenLDAP部署及管理维护 ...

  2. LDAP落地实战(三):GitLab集成OpenLDAP认证

    上一篇文章介绍了svn集成OpenLDAP认证,版本控制除了svn外,git目前也被越来越多的开发者所喜爱,本文将介绍GitLab如何集成openldap实现账号认证 GitLab集成OpenLDAP ...

  3. Django集成OpenLDAP认证

    本文详细介绍了django-auth-ldap的使用方法,参数含义,并提供了示例代码 版本说明 Django==2.2 django-auth-ldap==1.7.0 集成过程 Django集成LDA ...

  4. 本地docker搭建gitlab, 并配置ldap认证

    基于Docker在Mac OS X系统中的部署和设置GitLab的具体过程如下:   1. 安装Docker for Mac (参见https://docs.docker.com/docker-for ...

  5. LDAP落地实战(二):SVN集成OpenLDAP认证

    上一篇文章我们介绍了LDAP的部署以及管理维护,那么如何接入LDAP实现账号统一认证呢?这篇文章将带你完成svn的接入验证 subversion集成OpenLDAP认证 系统环境:debian8.4 ...

  6. No.2 CAS之SPNEGO+LDAP认证配置

    1.概述 本文先配置了SPNEGO认证,就是如果用户操作系统如果登陆了公司的Windows域,用户浏览器访问应用服务即可免登录. 然后如果不在域里的员工,用LDAP认证方式,输账号密码登陆. 参考文档 ...

  7. ldap配置系列二:jenkins集成ldap

    ldap配置系列二:jenkins集成ldap jenkins简介 jenkins是一个独立的.开放源码的自动化服务器,它可以用于自动化与构建.测试.交付或部署软件相关的各种任务. jenkins官方 ...

  8. Jenkins-配置LDAP认证

    Jenkins-配置LDAP认证 参考文档: LDAP添加用户详见我的博文  Linux分类 中的< LDAP2-创建OU和用户>博文. 1.LDAP配置 1.准备一个adminDN账号用 ...

  9. hive、impala集成ldap

    1.概要 1.1 环境信息 hadoop:cdh5.10 os:centos6.7 user:root hive.impala已集成sentry 1.2 访问控制权限 这里通过使用openldap来控 ...

随机推荐

  1. 为django平台生成模拟用户,建立用户组,并将用户加入组

    书接上篇BLOG. 当我们可以用manage.py自定义命令来生成模拟数据时, 我们面对的就是如何操作ORM的问题了. 这两天,我为我们的内部系统的所有数据表,都生成了模拟数据. 有几个心得,记录于此 ...

  2. Django和Mysql合用时,显示时间问题

    这个以前没系统处理过,感觉前端页面显示正常,就OK. 但有的不重要的地方,显示有8小时错乱,也没有列入优先级处理. 昨天下细看了一些网上文档,找取了解决思路. 大致想法是:数据库里存+00:00时区的 ...

  3. ZooKeeper实践:(2)配置管理

    一. 前言     配置是每个程序不可或缺的一部分,配置有多重方式:xml.ini.property.database等等,从最初的单机环境到现在的分布式环境. 1. 以文件的格式存储配置,修改任何都 ...

  4. 【POJ】1067.取石子游戏

    题解 这道题让我对SG函数有了更深刻的理解,这是道打表找规律题 我们打出来SG函数似乎是 1 2必败 3 5必败 4 7必败 6 10必败 8 13必败 哇我找到规律了-- 然而,我显然不会通项 后来 ...

  5. BZOJ 1861: [Zjoi2006]Book 书架 (splay)

    1861: [Zjoi2006]Book 书架 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 1453  Solved: 822[Submit][Stat ...

  6. LoadRunner 参数化之 连接数据库进行参数化

    LoadRunner 参数化之 连接数据库进行参数化 Loadrunner(简称“LR”)对性能测试的脚本进行参数化时,由于数据量偏大,大家往往都会把数据录入到数据库表里,然后关联到LR,本文将详细介 ...

  7. linux下文件转码

    一.工具介绍 enca是一个很好用的文件转码工具,使用命令 sudo apt-get install enca 即可安装 二.基本用法 1.查看文件编码 $ enca filename 2.文件转码 ...

  8. Bootstrap进阶二:基本组件

    基本组件是Bootstrap的精华之一,其中都是开发者平时需要用到的交互组件.例如:网站导航.标签页.工具条.面包屑.分页栏.提示标签.产品展示.提示信息块和进度条等.这些组件都配有jQuery插件, ...

  9. 搭建 Android 集成开发环境

    在搭建 Android 集成开发环境之前,我想说的是,我们学习的目标是同时掌握移动开发三种方式:iOS开发.Android开发和Html5手机网页开发.由于iOS的开发工具是采用苹果官方的XCode, ...

  10. 32:从1到n整数中1出现的次数

    import java.util.Arrays; /** * 面试题32:从1到n整数中1出现的次数 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数? * 为此他特别数了 ...