一,搭建Nodebb社区

1,安装编译环境nodejs,npm安装后版本号如下(同时得安装redis, git常用开发软件):

2,下载nodebb代码

git clone git://github.com/NodeBB/NodeBB.git nodebb

3, 安装nodebb

进入工程目录,

./nodebb install (可能会报lodash,shrap缺失问题,npm install -g lodash解决)

如果执行成功,则会让你访问页面进行数据库配置。

配置完成后,则安装成功。

二,搭建企业CAS登录认证系统

1,下载CAS开源项目,并运行在idea上。

https://github.com/apereo/cas/tree/5.3.xhttps://github.com/apereo/cas/tree/5.3.x2,工程下新键src/min/java,src/main/resource目录结构,把工程目录overlays\org.apereo.cas.cas-server-webapp-tomcat-5.3.16\WEB-INF\classes\application.properties 拷贝到src/main/resource中,进行相关定制。

配置properties,去掉静态的登录信息,添加redis配置

# 取消静态配置
# cas.authn.accept.users=casuser::Mellon
配置redis存储session
cas.webflow.autoconfigure=true
cas.webflow.alwaysPauseRedirect=false
cas.webflow.refresh=true
cas.webflow.redirectSameState=falsecas.webflow.session.lockTimeout=30
cas.webflow.session.compress=false
cas.webflow.session.maxConversations=5
cas.webflow.session.storage=true
spring.session.store-type=redis
spring.redis.host=
spring.redis.password=
spring.redis.port=6379#配置redis存储ticket
cas.ticket.registry.redis.host=
cas.ticket.registry.redis.database=0
cas.ticket.registry.redis.port=6379
cas.ticket.registry.redis.password=
cas.ticket.registry.redis.timeout=2000
cas.ticket.registry.redis.useSsl=false
cas.ticket.registry.redis.usePool=true
cas.ticket.registry.redis.pool.max-active=20
cas.ticket.registry.redis.pool.maxIdle=8
cas.ticket.registry.redis.pool.minIdle=0
cas.ticket.registry.redis.pool.maxActive=8
cas.ticket.registry.redis.pool.maxWait=-1
cas.ticket.registry.redis.pool.numTestsPerEvictionRun=0
cas.ticket.registry.redis.pool.softMinEvictableIdleTimeMillis=0
cas.ticket.registry.redis.pool.minEvictableIdleTimeMillis=0
cas.ticket.registry.redis.pool.lifo=true
cas.ticket.registry.redis.pool.fairness=false
cas.ticket.registry.redis.pool.testOnCreate=false
cas.ticket.registry.redis.pool.testOnBorrow=false
cas.ticket.registry.redis.pool.testOnReturn=false
cas.ticket.registry.redis.pool.testWhileIdle=false

3,添加依赖,支持数据库连接,在pom.xml添加如下依赖

<dependency><groupId>org.apereo.cas</groupId><artifactId>cas-server-support-jdbc</artifactId><version>${cas.version}</version>
</dependency>
<dependency><groupId>org.apereo.cas</groupId><artifactId>cas-server-support-jdbc-drivers</artifactId><version>${cas.version}</version>
</dependency>
<dependency><groupId>org.apereo.cas</groupId><artifactId>cas-server-support-redis-ticket-registry</artifactId><version>${cas.version}</version>
</dependency>
<dependency><groupId>org.apereo.cas</groupId><artifactId>cas-server-webapp-session-redis</artifactId><version>${cas.version}</version>
</dependency><!-- 数据库驱动 -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.46</version>
</dependency>

4,重写AbstractUsernamePasswordAuthenticationHandler类,实现对自家数据库用户信息登录。

代码如下:

public class CustomUsernamePasswordAuthentication extends AbstractUsernamePasswordAuthenticationHandler {@Overrideprotected AuthenticationHandlerExecutionResult authenticateUsernamePasswordInternal(UsernamePasswordCredential usernamePasswordCredential, String s) throws GeneralSecurityException, PreventedException {String username = usernamePasswordCredential.getUsername();String password = usernamePasswordCredential.getPassword();System.out.println("username : " + username);System.out.println("password : " + password);// JDBC模板依赖于连接池来获得数据的连接,所以必须先要构造连接池DriverManagerDataSource dataSource = new DriverManagerDataSource();dataSource.setDriverClassName("com.mysql.jdbc.Driver");//配置数据连接// 创建JDBC模板JdbcTemplate jdbcTemplate = new JdbcTemplate();jdbcTemplate.setDataSource(dataSource);String sql = "SELECT * FROM sys_user WHERE name=?";System.out.println("database sql : "+ sql);User info = (User) jdbcTemplate.queryForObject(sql, new Object[]{username}, new BeanPropertyRowMapper(User.class));System.out.println("database info : "+ info);if (info == null) {throw new AccountException("Sorry, username not found!");}System.out.println("database username : "+ info.getLoginName());System.out.println("database password : "+ info.getPassword());String  md5 = Md5Utils.hash(password);String md5Salt = Md5Utils.hash(""+password+info.getSalt());if (info.getPassword().equals(md5) || info.getPassword().equals(md5Salt)) {//可自定义返回给客户端的多个属性信息HashMap<String, Object> returnInfo = new HashMap<>();returnInfo.put("expired", true);returnInfo.put("userName", info.getUserName());returnInfo.put("email", info.getEmail());returnInfo.put("phoneNumber", info.getPhonenumber());returnInfo.put("sex", info.getSex());returnInfo.put("avatar", info.getAvatar());final List<MessageDescriptor> list = new ArrayList<>();return createHandlerResult(usernamePasswordCredential,this.principalFactory.createPrincipal(username, returnInfo), list);} else {throw new FailedLoginException("Sorry, password not correct!");}}
}

5,打包部署CAS服务

mvn install 打成war包并部署在linux的tomcat上

6,客户端验证,

下载客户端测试工程,

https://github.com/cas-projects/cas-sample-java-webapp

web.xml配置CAS服务器路径。

Linux 搭建NodeBB社区,搭建CAS登录认证平台,实现Nodebb接入企业CAS认证(一)相关推荐

  1. Linux 搭建NodeBB社区,搭建CAS登录认证平台,实现Nodebb接入企业CAS认证(二)

    上编文章已经实现nodebb,cas的搭建,这个文章就是如何实现nodebb接入cas认证 一,Nodebb的插件开发,实现对cas的接入 1,下载cas接入插件, GitHub - ld000/no ...

  2. cas登录成功什么意思_你知道CAS单点登录系统吗

    单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.我们目前的系统 ...

  3. cas .net 重定向循环_接口测试平台接入企业cas(一)

    cas系统简介 提供运营系统的 SSO 和 access control功能.类似百度的UC. CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS ...

  4. 个人和企业如何认证视频号?

    微信视频号认证详细指导教程!需要请收藏! 一.为什么要进行视频号认证? 1. 提高信任度 视频号进行认证后,有了"V"标志,无疑会让别人更认可你,信任度也会得到提升,更有利于视频被 ...

  5. cas云计算机管理平台添加加密锁,CAS云计算管理平台安装手册.docx

    H3C CAS 云计算管理平台 安装指导 前 言 H3C CAS 云计算管理平台 安装指导各章节内容如下: 第 1 章 概述.介绍 CAS 的组成和版本概况. 第 2 章 安装前的准备工作.介绍 CA ...

  6. 号码认证平台有哪些?号码认证平台费用?

    随着互联网的发展,电话经常接到骚扰电话.买房.保险等电话,让用户不胜其扰.目前提供电话标记的软件个数达到几十款之多,可以有效预防诈骗发生,也暴露出"号码标记随意性强""错 ...

  7. AAA企业信用认证条件!AAA企业信用认证办理流程

    AAA企业信用认证条件!AAA企业信用认证办理流程 3A信用等级证书直接反应一个企业的整体诚信形象,目前国内各省市在项目招投标.融资贷款.政府采购.企业宣传等,均要求企业提供人行备案征信机构出具的企业 ...

  8. 国仁猫哥:视频号个人与企业怎么认证;视频号认证后有哪些好处。

    目前,视频号认证分为个人认证和企业(机构)认证两大类. 01:视频号企业认证教程 企业和机构认证适合企业和机构申请.申请之前需要先用实名认证的个人微信号注册,填写完成基本资料. 具体认证分为两种情况: ...

  9. 单点登录cas综述之cas4.2.7服务端+cas客户端+示例程序+环境搭建说明-陈杰

    1环境搭建以及把示例程序跑起来 1.1  安装jdk1.8 1.2 下载tomcat8+cas4.2.7服务端war+cas客户端war 1.2.1下载经过配置的Tomcat8和本教程配套文件 1.2 ...

最新文章

  1. 14个Xcode中常用的快捷键操作
  2. iOS多线程开发之GCD(基础篇)
  3. php中redis怎么使用,redis 怎么使用
  4. linux 之进程间通信-------------InterProcess Communication
  5. 【新手向】阿里云上ubuntu+flask+gunicorn+nginx服务器部署(二)项目部署
  6. SQL Server(三):Select语句
  7. 【光学】基于matlab GUI模拟波动光光学系统【含Matlab源码 1064期】
  8. WebSocket入门使用教程
  9. Linux命令之解压缩:tar、zip、rar 命令
  10. Spark学习笔记(一)
  11. SV--随机约束(一)
  12. 七牛判断上传图片文件是否重复
  13. 智慧家安监控系统——用Java + html、css、js实现
  14. Hexo更换主题教程
  15. 零基础的我是这样开始写Python爬虫的(附代码)
  16. # Pedometer 计步器算法简介
  17. 解决方案~Microsoft Security Client OOBE 程序错误
  18. 【gitlab+jenkins+docker】第一节 基础环境介绍与准备
  19. 树莓派65/100 - Pico W初体验,点亮板载的LED灯
  20. Windows 10 之相关操作界面回到过去

热门文章

  1. 计算机组成原理实验箱D7,计算机组成原理与系统结构实验仪教学设备,上海求育...
  2. 马克思主义哲学(一):物质
  3. 求某年某月1日是星期几C语言,用c语言调用函数编程,1990年1月1日是星期一 要求输入某年某月某日,输出它是星期几...
  4. 和自然语言处理有关的英语_自然语言处理对非英语语言的重要性
  5. Mac上用spotlight搜索输入几个字母后闪退
  6. ECCV 2022|计算机视觉中的长尾分布问题还值得做吗?
  7. 使用Vitamio插件显示花屏
  8. C语言枚举类 口袋中有红、黄、蓝、白、黑5种颜色的球若干个
  9. 微信小程序系列(7)如何用微信小程序写一个论坛?贴心代码详解(五)删帖页【完结篇】
  10. 我的世界服务器无限制区块,我的世界所有区块同时加载,内存多惊人?162万个100T硬盘装不下...