openldap programming

ldap server主配置文件: /usr/local/etc/openldap/slapd.conf

 

添加allow bind_v2 这样允许简单方式来验证ldap用户(不安全)

 

默认路径: /usr/local/libexec/slapd

 

scheme file格式

 

以下是一个创建数据库的示例

 

## DEFINE DIT ROOT/BASE/SUFFIX ####
## uses RFC 2377 format
## replace example and com as necessary below
## or for experimentation leave as is

## dcObject is an AUXILLIARY objectclass and MUST
## have a STRUCTURAL objectclass (organization in this case)
# this is an ENTRY sequence and is preceded by a BLANK line

dn: dc=example,dc=com
dc: example
description: My wonderful company as much text as you want to place
in this line up to 32K continuation data for the line above must
have <CR> or <CR><LF> i.e. ENTER works
on both Windows and *nix system - new line MUST begin with ONE SPACE
objectClass: dcObject
objectClass: organization
o: Example, Inc.

## FIRST Level hierarchy - people
## uses mixed upper and lower case for objectclass
# this is an ENTRY sequence and is preceded by a BLANK line

dn: ou=people, dc=example,dc=com
ou: people
description: All people in organisation
objectclass: organizationalunit

## SECOND Level hierarchy
## ADD a single entry under FIRST (people) level
# this is an ENTRY sequence and is preceded by a BLANK line
# the ou: Human Resources is the department name

dn: cn=Robert Smith,ou=people,dc=example,dc=com
objectclass: inetOrgPerson
cn: Robert Smith
cn: Robert J Smith
cn: bob  smith
sn: smith
uid: rjsmith
userpassword: rJsmitH
carlicense: HISCAR 123
homephone: 555-111-2222
mail: r.smith@example.com
mail: rsmith@example.com
mail: bob.smith@example.com
description: swell guy
ou: Human Resources

 

 

示例程序

#include <stdio.h>
#include <ldap.h>

main()
{
        LDAP            *ld;
        LDAPMessage     *res, *e;
        int             i, rc;
        char            *a, *dn;
        BerElement      *ptr;
        char            **vals;

  BerValue        credential;
  credential.bv_val = "secret";
  credential.bv_len = strlen(credential.bv_val);

        /* open an LDAP session */
        if ( (ld = ldap_init( "localhost", LDAP_PORT )) == NULL )
                return 1;

        /* authenticate as nobody */

  if (( rc = ldap_sasl_bind_s( ld, "cn=Manager,dc=my-domain,dc=com", NULL , &credential, NULL, NULL, NULL)) != LDAP_SUCCESS ) {
                fprintf( stderr, "ldap_sasl_bind_s: %s/n",
                    ldap_err2string( rc ));
                ldap_unbind( ld );
                return 1;
        }
  /*
        if (( rc = ldap_simple_bind_s( ld, "cn=Manager,dc=my-domain,dc=com", "secret" )) != LDAP_SUCCESS ) {
                fprintf( stderr, "ldap_simple_bind_s: %s/n",
                    ldap_err2string( rc ));
                ldap_unbind( ld );
                return 1;
        }
  */

        /* search for entries with cn of "Manager", return all attrs  */
        if (( rc = ldap_search_s( ld, "ou=people,dc=my-domain,dc=com",
            LDAP_SCOPE_SUBTREE, "(cn=linan)", NULL, 0, &res ))
            != LDAP_SUCCESS ) {
                fprintf( stderr, "ldap_search_s: %s/n",
                    ldap_err2string( rc ));
                if ( res == NULL ) {
                        ldap_unbind( ld );
                        return 1;
                }
        }

        /* step through each entry returned */

        for ( e = ldap_first_entry( ld, res ); e != NULL;
            e = ldap_next_entry( ld, e ) ) {
                /* print its name */
                dn = ldap_get_dn( ld, e );
                printf( "dn: %s/n", dn );
                ldap_memfree( dn );

                /* print each attribute */
                for ( a = ldap_first_attribute( ld, e, &ptr ); a != NULL;
                    a = ldap_next_attribute( ld, e, ptr ) ) {
                        printf( "/tattribute: %s/n", a );

                        /* print each value */
                        vals = ldap_get_values( ld, e, a );
                        for ( i = 0; vals[i] != NULL; i++ ) {
                                printf( "/t/tvalue: %s/n", vals[i] );
                        }
                        ldap_value_free( vals );
                        ldap_memfree( a );
                }
                if ( ptr != NULL ) {
                        ber_free( ptr, 0 );
                }
        }
        /* free the search results */
        ldap_msgfree( res );

        /* close and free connection resources */
        ldap_unbind( ld );

        return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值