当前位置: 首页 > 软件库 > 管理和监控 > 安全相关 >

OkLdap

基于 LDAP 账号进行内网整合的简便客户端
授权协议 Apache
开发语言 Java
所属分类 管理和监控、 安全相关
软件类型 开源软件
地区 国产
投 递 者 云默
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

OkLdap

  • 如果想在你的业务系统快速使用 LDAP 进行登录?
  • 如果你的内网系统想使用接口快速创建员工的 LDAP 账号?

你可以试试 OkLdap。

OkLdap 是专门为基于 LDAP 账号做内网整合的简便客户端。

主要功能:

  1. 快速的登录接口及示例
  2. 修改密码的接口
  3. 基于员工的管理接口(添人、减人、修改)

演示:

配置:

#必要选项
ldap:
  url: "ldap://127.0.0.1:389"
  baseDn: "DC=company,DC=com"
  bindDn: "cn=admin,dc=company,dc=com"
  paasword: "123456"
  userFilter: "cn=%s"
  groupFilter: "cn=%s"

#Demo选项
demo:
  limit:
    groupCn: "manager"

代码:(更多应用代码,可参考源码里的单元测试)


//应用入口
public class App {
    public static void main(String[] args) {
        Solon.start(App.class, args);
    }
}

//Bean配置器
@Configuration
public class Config {
    @Bean
    public LdapClient ldapClient(@Inject("${ldap}") LdapClient ldapClient) {
        return ldapClient;
    }
}

//控制器示例
@Mapping("demo")
@Controller
public class DemoController {
    @Inject
    LdapClient ldapClient;

    @Inject("${demo.limit.groupCn}")
    String limitGroupCn;

    /**
     * 登录::
     * */
    @Post
    @Mapping("login")
    public Result login(String userName, String userPassword) {
        try (LdapSession session = ldapClient.open()) {
            LdapPerson person = session.findPersonOne(userName);

            if (person == null) {
                return Result.failure("用户不存在");
            }

            if (person.verifyPassword(userPassword) == false) {
                return Result.failure("用户密码不对");
            }

            if (Utils.isNotEmpty(limitGroupCn)) {
                if (person.inGroup(session.findGroupOne(limitGroupCn)) == false) {
                    return Result.failure("权限不够");
                }
            }

            //可同步到本地用户库...

            return Result.succeed();
        }
    }

    /**
     * 创建用户::
     * */
    @Post
    @Mapping("create")
    public Result create(String userName, String userPassword, String stageName, String realName) {
        try (LdapSession session = ldapClient.open()) {
            LdapPerson person = new LdapPerson();
            person.setCn(userName);
            person.setUserPassword(userPassword);
            person.setDisplayName(stageName);
            person.setGivenName(realName);

            session.createPerson("employee", person);
        }

        return Result.succeed();
    }

    /**
     *  修改用户::
     * */
    @Post
    @Mapping("update")
    public Result update(String userName, String stageName, String realName) {
        try (LdapSession session = ldapClient.open()) {
            LdapPerson person = session.findPersonOne(userName);
            person.setDisplayName(stageName);
            person.setGivenName(realName);

            session.updatePerson(person);
        }

        return Result.succeed();
    }
}
 相关资料
  • 返回IBAN实例的客户。 调用: web3.eth.Iban.client() 参数: 无 返回值: String: IBAN的客户 示例代码: var iban = new web3.eth.Iban("XE81ETHXREGGAVOFYORK"); iban.client(); > 'GAVOFYORK'

  • 新建账号(账户)     若想跟其他 Skype 用户免费通话、利用 Skype 提供的各种需付费服务,首先必须新建账号(Skype 昵称)。若已透过个人计算机等使用 Skype 并已取得账号,则可在PSP™版的 Skype 使用相同账号享受同等服务。 1. 开启PSP™的电源,选择(网络) > (Skype™)。 2. 选择[建立一个新的 Skype 账号]。 与网络联机,并新建账号(账户)。

  • 问题内容: 我有一个基本的Elasticsearch查询,看起来像这样 我得到了结果,从合理的角度来看,这没有问题。 所以我尝试在elasticsearch.net中做到这一点 而且我没有任何结果。如果我只有一个带有新{}的搜索正文,那么我会获得点击率,但不会被过滤。 我究竟做错了什么? 问题答案: 如果直接使用低级客户端(elasticsearch.net),它将不会进行任何规范化处理并逐字序列

  • 提纲ceph-fuse [ -m monaddr:port ] mountpoint [ fuse options ] 描述 ceph-fuse 是 Ceph 分布式文件系统的 FUSE (用户空间文件系统)客户端,它会把 Ceph 文件系统(用 -m 选项或 ceph.conf 指定)挂载到指定挂载点。 文件系统可这样卸载: fusermount -u mountpoint 或向 ceph-fu

  • 我使用Spring Boot开发了这个websocket服务器。服务器与基于js的客户机配合得很好。 控制器: 这是服务器端。现在,对于客户机,我已经创建了一个@ClientEndpoint,当我连接到URI“ws://localhost:8080/spring-mvc-java/chat”时,我能够建立一个连接,并且可以看到@ClientEndpoint的@OnOpen回调被触发。 但是,use

  • 在完成了 DaoCloud 账号的注册后,您大可不必着急使用 DaoCloud 所提供的服务,而是可以先对您的 DaoCloud 账号进行一些必要的了解和设置。 账号信息 在个人设置页面中,第一个标签页便是账号的基本信息设置页面。在这个页面中,您可以查看并更改账号当前使用的套餐。 一个新注册的账号默认使用的是免费套餐,DaoCloud 云资源的配额为 2x。 您也可以根据实际需要随时更改账号的套餐