OkLdap 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
OkLdap 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
OkLdap 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache
开发语言 Java 查看源码 »
操作系统 跨平台
软件类型 开源软件
所属分类 管理和监控安全相关
开源组织
地区 国产
投 递 者 梅子酒好吃
适用人群 未知
收录时间 2021-08-26

软件简介

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();
    }
}
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣 发布并加入讨论🔥
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
0 评论
6 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部