通俗易懂了解 NJet LDAP 统一认证
NGINX 向云原生演进,All in OpenNJet
一.OpenNJet 认证功能介绍
该功能基于njet 的auth_request 指令,来支持第三方认证,该指令指定一个 uri , 在获取用户请求时,开启 subrequest 子请求,发送认证信息到该指定uri 进行鉴权认证,认证方式有:
1.本地认证
2.调用proxy_pass 调用第三方的认证接口。
3.直接访问认证服务器进行认证。ldap,radius,redis
如果返回2XX 则可以继续后需的资源访问。其他值则访问中断拒绝。返回值如下: 2XX 允许请求操作。 401 不正确授权
403 禁止访问
其他值,500错误
本文使用第二种方式, 使用lua 脚本,直接连接到ldap 服务器进行验证。
二.LDAP服务器搭建(ubuntu)
1.设置hostname
sudo hostnamectl set-hostname http://ldap.example.com sudo vim /etc/hosts 192.168.18.50 http://ldap.example.com
2.安装ldap
sudo apt install slapd ldap-utils
按照提示输入管理密码如Aa-111111
3.add nodes
add_nodes.ldif
dn: ou=people,dc=example,dc=com objectClass: organizationalUnit ou: People dn: ou=groups,dc=example,dc=com objectClass: organizationalUnit ou: Groups
ldapadd -x -D cn=admin,dc=example,dc=com -W -f add_nodes.ldif
4.加载memberof模块
cat memberof_config.ldif
dn: cn=module,cn=config cn: module objectClass: olcModuleList olcModuleLoad: memberof.la olcModulePath: /usr/lib/ldap dn: olcOverlay={0}memberof,olcDatabase={1}mdb,cn=config objectClass: olcConfig objectClass: olcMemberOf objectClass: olcOverlayConfig objectClass: top olcOverlay: memberof olcMemberOfDangling: ignore olcMemberOfRefInt: TRUE olcMemberOfGroupOC: groupOfNames olcMemberOfMemberAD: member olcMemberOfMemberOfAD: memberOf
ldapadd -Q -Y EXTERNAL -H ldapi:/// -f memberof_config.ldif
5.加载refint模块
refint1.ldif
dn: cn=module{1},cn=config add: olcmoduleload olcmoduleload: refint
refint2.ldif
dn: olcOverlay={1}refint,olcDatabase={1}mdb,cn=config objectClass: olcConfig objectClass: olcOverlayConfig objectClass: olcRefintConfig objectClass: top olcOverlay: {1}refint olcRefintAttribute: memberof member manager owner
sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f /tmp/refint1.ldif sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /tmp/refint2.ldif
6.增加用户,组
slappasswd -h {SHA} -s Aa-111111
root@garlic:/home/garlic# cat add_user.ldif dn: uid=john,ou=people,dc=example,dc=com cn: John Doe givenName: John sn: Doe uid: john uidNumber: 5000 gidNumber: 10000 homeDirectory: /home/john mail: john.doe@example.com objectClass: top objectClass: posixAccount objectClass: shadowAccount objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person loginShell: /bin/bash userPassword: {SHA}BS15yozmNosbVHvPv3YDXbZ0IuI= ldapadd -x -D cn=admin,dc=example,dc=com -W -f add_user.ldif
root@garlic:/home/garlic# cat add_group.ldif dn: cn=mygroup,ou=groups,dc=example,dc=com objectClass: groupofnames cn: mygroup description: All users member: uid=john,ou=people,dc=example,dc=com ldapadd -x -D cn=admin,dc=example,dc=com -W -f add_group.ldif
7.验证
root@garlic:/home/garlic# ldapsearch -x -LLL -H ldap:/// -b uid=john,ou=people,dc=example,dc=com dn memberof dn: uid=john,ou=people,dc=example,dc=com memberOf: cn=mygroup,ou=groups,dc=example,dc=com
三.部署njet
1.配置文件 conf/njet.conf
2.Lua 文件:scripts/http_ldap.lua
四.测试
认证成功: [root@k8s-139 ldap]# curl 'http://192.168.40.139:8080/resource?name=john&pass=Aa-111111' ok
认证失败: [root@k8s-139 ldap]# curl 'http://192.168.40.139:8080/resource?name=john&pass=Aa-111112' <html> <head><title>401 Authorization Required</title></head> <body> <center><h1>401 Authorization Required</h1></center> <hr><center>njet/2.0.1</center> </body> </html>
OpenNJet 最早是基于 NGINX1.19 基础 fork 并独立演进,具有高性能、稳定、易扩展的特点,同时也解决了 NGINX 长期存在的难于动态配置、管理功能影响业务等问题。 邮件组 官网

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
从内核的视角观测容器 — SysOM 容器监控
01 背景 容器化现阶段已经是构建企业 IT 架构的最佳实践。云原生容器化的部署架构,相较于传统 IDC 部署架构的 IT 架构方案,已经成为兼具高效运维及成本控制的业界事实标准。 但容器化带来的都是好处么?容器化屏蔽了 IDC 基础设施和云资源的同时,也带来了容器引擎层的不透明,现有的云原生可观测体系还无法覆盖。 据我们统计,大量超过千节点规模的生产级 JAVA on K8s 的用户都遇到过内存“黑洞”导致的 OOM 问题,以及大规模集群使用上的容器引擎层 CGroup 问题也会使得用户对容器化望而却步。 阿里云容器服务 ACK 团队与阿里云操作系统团队进行合作,通过对多个头部行业客户的千万核规模的 Kubernetes 集群沉淀了丰富的容器化迁移专业经验,以及结合 Alinux 对操作系统 kernel 层的专业增强,通过与云原生容器服务结合,使容器引擎层不再“黑盒”,让用户放心容器化。 02 常见容器化内存“黑洞问题” 容器内存组成剖析 Kubernetes 采用内存工作集(workingset)来监控和管理容器的内存使用,当容器内存使用量超过了设置的内存限制或者节点出现内存压力...
- 下一篇
🎉 声明式 HTTP JAVA 客户端 | CoApi 1.0.0 发布
CoApi - 同时支持响应式编程和同步编程模型的 HTTP 客户端 更新内容 特性: 新增WebClientBuilderCustomizerAPI,以支持自定义CoApiWebClient.Builder 特性: 新增RestClientBuilderCustomizerAPI,以支持自定义CoApiRestClient.Builder 简介 在 Spring Framework 6 中,引入了全新的 HTTP 客户端 -Spring6 HTTP Interface。 该接口允许开发者通过使用@HttpExchange注解将 HTTP 服务定义为 Java 接口。 然而,当前版本尚未提供自动配置的支持,需要开发者自己实现配置。 虽然Spring生态中已经存在Spring Cloud OpenFeign,但它并未支持响应式编程模型。 为解决这个问题,Spring Cloud OpenFeign推荐了替代方案feign-reactive。然而,这个替代方案目前已处于不积极维护状态,并且不支持 Spring Boot 3.2.x。 CoApi应运而生,它提供了类似于Spring Clou...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路