客服热线:139 1319 1678

统一身份认证系统

统一身份认证系统在线试用
统一身份认证系统
在线试用
统一身份认证系统解决方案
统一身份认证系统
解决方案下载
统一身份认证系统源码
统一身份认证系统
源码授权
统一身份认证系统报价
统一身份认证系统
产品报价

26-4-12 21:24

大家好,今天咱们来聊聊怎么用免费的方式搭建一个统一身份认证平台。你可能听说过“统一身份认证”,但具体是啥?简单来说,就是让一个账号能登录多个系统,不用重复输入用户名和密码。听起来是不是挺方便的?特别是对于开发人员或者企业来说,这玩意儿简直是刚需。

不过,很多人可能会觉得这个东西得花钱买,其实不然。现在有很多开源项目,可以让你免费搭建一个属于自己的统一身份认证平台。今天我就手把手教你怎么做,而且代码我也会贴出来,你只需要复制粘贴就能用。

什么是统一身份认证平台?

先说说什么是统一身份认证平台。它就像是一个中央控制器,负责管理用户的登录、权限、信息等。比如,你有一个网站、一个APP、还有一个后台管理系统,这三个系统都使用同一个账户登录,那就可以通过统一身份认证平台来实现。

举个例子,像一些大型公司,比如阿里、腾讯,他们肯定有自己的统一身份认证系统,这样用户在不同产品之间切换的时候,就不用反复登录了。这种系统不仅提升了用户体验,也提高了安全性。

但是,不是所有人都有资源去开发一个完整的系统。这时候,开源项目就派上用场了。我们可以利用现有的工具,快速搭建出一个功能齐全的统一身份认证平台。

为什么选择免费方案?

你可能会问:“为什么要用免费的?难道不安全吗?”这个问题问得好。确实,免费的东西有时候看起来不够专业,但其实很多开源项目已经非常成熟了。比如,OAuth、OpenID Connect这些协议,都是被广泛使用的标准。

而且,使用免费方案还能节省成本,尤其对初创公司或者个人开发者来说,这是一个非常好的起点。你可以先用免费的方案试水,等业务发展起来再考虑升级或定制。

另外,开源社区的活跃度也很高,遇到问题随时都能找到解决方案,甚至可以直接提Issue让开发者帮你解决。这也是免费方案的一大优势。

我们选哪个工具?

说到工具,我推荐的是 **Keycloak**。它是Red Hat旗下的一个开源身份和访问管理平台,功能非常强大,而且完全免费。Keycloak支持多种认证方式,包括OAuth 2.0、OpenID Connect、SAML等,非常适合做统一身份认证。

而且,Keycloak的安装也非常简单,可以运行在本地,也可以部署到云上。如果你是新手,也不用太担心,官方文档写得很详细,网上也有很多教程。

接下来,我就会一步步带你搭建一个Keycloak的实例,并且让它支持多系统登录。

环境准备

首先,你需要一台服务器或者本地电脑。如果是本地开发的话,建议用Docker,这样省事又方便。

然后,你需要安装Docker和Docker Compose。如果你还没装,可以参考下面的命令:

      
# 安装 Docker
sudo apt-get update
sudo apt-get install docker.io

# 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
      
    

安装完成后,你可以用 `docker --version` 和 `docker-compose --version` 检查是否安装成功。

启动 Keycloak

接下来,我们用Docker来启动Keycloak。创建一个 `docker-compose.yml` 文件,内容如下:

      
version: '3'
services:
  keycloak:
    image: quay.io/keycloak/keycloak:latest
    container_name: keycloak
    ports:
      - "8080:8080"
    environment:
      - KEYCLOAK_USER=admin
      - KEYCLOAK_PASSWORD=admin
      - DB_VENDOR=POSTGRES
      - DB_ADDR=localhost
      - DB_DATABASE=keycloak
      - DB_USER=keycloak
      - DB_PASSWORD=keycloak
    volumes:
      - keycloak_data:/var/lib/keycloak
    depends_on:
      - postgres

  postgres:
    image: postgres:14
    container_name: keycloak_postgres
    environment:
      - POSTGRES_USER=keycloak
      - POSTGRES_PASSWORD=keycloak
      - POSTGRES_DB=keycloak
    volumes:
      - postgres_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"

volumes:
  keycloak_data:
  postgres_data:
      
    

保存为 `docker-compose.yml`,然后执行以下命令启动服务:

      
docker-compose up -d
      
    

等几分钟后,Keycloak 就会启动完成。你可以在浏览器中访问 `http://localhost:8080`,然后用用户名 `admin` 和密码 `admin` 登录。

配置 Keycloak

统一身份认证系统

登录后,你会看到 Keycloak 的管理界面。我们需要做一些基础配置,比如创建 Realm(领域)、用户、角色等。

点击左侧菜单中的 **Realms**,然后点击 **Create Realm**,输入一个名字,比如 `myrealm`,然后点击 **Create**。

接着,进入这个 Realm 的设置页面,可以配置主题、登录页样式等。如果你只是测试用,这些都可以暂时忽略。

然后,我们创建一个用户。点击 **Users** -> **Add User**,填写用户名和密码,比如 `user1` 和 `password123`,然后保存。

之后,可以给这个用户分配角色。点击 **Roles** -> **Create Role**,比如创建一个 `user` 角色,然后回到用户页面,将该角色分配给用户。

到这里,我们的 Keycloak 基本配置完成了。现在,我们可以让它支持其他应用接入。

让其他应用接入 Keycloak

假设你现在有一个简单的 Web 应用,想要通过 Keycloak 进行身份认证。我们可以用 OAuth 2.0 来实现。

首先,在 Keycloak 中创建一个客户端。进入 Realm 页面,点击 **Clients** -> **Create**,输入客户端名称,比如 `myapp`,然后选择 **Client ID**,保持默认即可。

在 **Access Type** 里,选择 **confidential**,这样客户端会有密钥,更安全。然后在 **Valid Redirect URIs** 里添加你的应用地址,比如 `http://localhost:3000/callback`。

保存后,你会看到客户端的 Client ID 和 Client Secret,这两个值后面要用到。

现在,我们写一个简单的 Node.js 应用来演示如何使用 Keycloak 进行认证。

      
// app.js
const express = require('express');
const passport = require('passport');
const KeycloakStrategy = require('passport-keycloak').Strategy;

const app = express();

// 配置 Keycloak 策略
passport.use(new KeycloakStrategy({
  realm: 'myrealm',
  clientID: 'myapp',
  clientSecret: 'your-client-secret', // 替换为实际的 Client Secret
  authServerUrl: 'http://localhost:8080/auth',
}, (token, done) => {
  return done(null, token);
}));

app.use(passport.initialize());

app.get('/login', passport.authenticate('keycloak'));

app.get('/callback', passport.authenticate('keycloak', { failureRedirect: '/login' }), (req, res) => {
  res.send(`欢迎,${req.user.email}`);
});

app.listen(3000, () => {
  console.log('应用运行在 http://localhost:3000');
});
      
    

当然,你需要先安装依赖:

      
npm install express passport passport-keycloak
      
    

然后运行 `node app.js`,访问 `http://localhost:3000/login`,就会跳转到 Keycloak 的登录页面。登录后,就能看到欢迎信息了。

总结一下

今天我们讲了怎么用 Keycloak 搭建一个统一身份认证平台,整个过程完全免费,而且代码也贴出来了。如果你是一个开发者,或者正在做一个项目,想要集中管理用户身份,那这个方法真的值得尝试。

统一身份认证

虽然 Keycloak 功能强大,但它并不是唯一的选择。还有其他的开源工具,比如 **ORY Hydra**、**Auth0(免费版)** 等,也可以作为替代方案。不过,Keycloak 是一个非常成熟且功能全面的选项,特别适合需要自建系统的团队。

最后,提醒一下:虽然 Keycloak 是免费的,但在生产环境中,还是建议进行安全加固,比如使用 HTTPS、定期更新、备份数据等。毕竟,身份认证系统一旦出问题,后果很严重。

希望这篇文章对你有帮助!如果你有任何疑问,欢迎留言交流。我们下期再见!

排行榜

智慧校园一站式解决方案

产品报价   解决方案下载   视频教学系列   操作手册、安装部署  

  微信扫码,联系客服