keyclock使用

简介: keyclock使用

一、Keycloak的安装与配置

1.按需下载keycloak包

官网下载

网络异常,图片无法展示
|
下载完成之后,解压包之后,终端进入其中的bin文件夹,并执行下列命令:

linux下执行:

./standalone.sh
复制代码

windows下执行:

./standalone.bat
复制代码

执行命令成功后,可以访问localhost:8080会有以下界面:

网络异常,图片无法展示
|

2.初始化admin账号

在localhost:8080的页面中创建一个账号,笔者这里设置账号和密码分别为admin/admin,点击“create”按钮之后就会进入下面的页面:

网络异常,图片无法展示
|
点击上图的 Administration Console 按钮,将会弹出登录页面:

网络异常,图片无法展示
|
输入账号和密码之后进入管理页面:

网络异常,图片无法展示
|

3.按需设置语言

网络异常,图片无法展示
|

二、keycloak配置

1.添加一个域(Realm)

域和域之间的资源(包括用户、角色、客户端等一切信息)是相互隔离的。为了安全性不太建议与管理员共用Realm。笔者这里新增的realm名称为realm_demo

网络异常,图片无法展示
|

2.创建并设置客户端(client)——以前端客户端为例

按下面的图创建一个client,其中client ID为client_of_realm_demo,配置项为:

  • 访问类型(Access Type):public(默认),对于web前端应用,Access Type必须是public
  • 有效的重定向URI(Valid Redirect URLS):笔者这里配置为 http://localhost:3000/*,认证成功后跳转到的页面地址
  • 根 URL(Base URL): 一般配置成微服务首页即可
  • Web Origins:虽然不是必须的,但是一般都需要设置,以避免因跨域而无法访问的问题。

Keycloak目前的访问类型共有3种:

confidential:适用于服务端应用,且需要浏览器登录以及需要通过密钥获取access token的场景。典型的使用场景就是服务端渲染的web系统。

public:适用于客户端应用,且需要浏览器登录的场景。典型的使用场景就是前端web系统,包括采用vue、react实现的前端项目等。

bearer-only:适用于服务端应用,不需要浏览器登录,只允许使用bearer token请求的场景。典型的使用场景就是restful api。

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

3.创建角色

创建两个角色:admin_rolesub_admin_role

网络异常,图片无法展示
|

4.创建用户并分配角色、设置密码

创建两个用户:admin_usersub_admin_user,分别赋予角色admin_rolesub_admin_role

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

二、React应用集成Keycloak

1.在React项中引入官方Keycloak js

yarn add keycloak-js
复制代码

2.导入keycloakd的client配置

网络异常,图片无法展示
|
将下载下来的 keycloak.json文件放入react项目中的 public文件夹下。

3.初始化

新建keycloak.js文件

import Keycloak from "keycloak-js";
class KeycloakClient {
  constructor() {
    this.initialized = false;
    this.keycloak = new Keycloak("/keycloak.json");
  }
  init = (callback) => {
    this.keycloak
      .init({ onLoad: "login-required" })
      .success((authenticated) => {
        if (authenticated) {
          this.initialized = true;
          callback(this.keycloak);
        }
      });
  };
}
const keycloakClient = new KeycloakClient();
export default keycloakClient;
复制代码

修改index.tsx文件

// 初始化keycloak之后才渲染页面
import keycloakClient from './keycloak'
if (!keycloakClient.initialized) {
  keycloakClient.init((keycloak: any) => {
    ReactDOM.render(
      <React.StrictMode>
        <App/>
      </React.StrictMode>,
      document.getElementById('root')
    );
  })
}
// ReactDOM.render(
//   <React.StrictMode>
//     <App/>
//   </React.StrictMode>,
//   document.getElementById('root')
// );
复制代码

此时,进入前端地址localhost:3000就会重定向到keycloak的登录页面,其中,这个登录页面是可以自定义的,如何操作可以下面的参考文章,亲测有效。

参考文章:

Keycloak快速上手指南,只需10分钟即可接入Spring Boot/Vue前后端分离应用实现S

Keycloak与React集成应用(上篇):用户登录

keycloak 自定义登录页面

Keycloak - Extend theme in 10 mins

Keycloakify: Create Keycloak themes using React - npm

Tyk开发者门户-使用 Keycloak 的分步指南

Authenticating and Authorizing Users via Keycloak

Customizing the Login Page for Keycloak

[github.com/FX-HAO/keyc…]



相关文章
|
存储 缓存 Java
Infinispan篇(一):一个被遗忘了的分布式集群缓存系统
Infinispan 是一个开源内存数据网格,提供灵活的部署选项和强大的数据存储、管理和处理功能。
1550 0
|
JavaScript 前端开发 Java
Keycloak快速上手指南(二)
Keycloak快速上手指南
384 0
|
6月前
|
消息中间件 SQL 数据处理
Flink报错问题之flink消费rabbitmq报错如何解决
Flink报错通常是指在使用Apache Flink进行实时数据处理时遇到的错误和异常情况;本合集致力于收集Flink运行中的报错信息和解决策略,以便开发者及时排查和修复问题,优化Flink作业的稳定性。
|
前端开发 JavaScript API
Keycloak快速上手指南(一)
Keycloak快速上手指南
1240 0
|
搜索推荐 NoSQL 关系型数据库
COLA架构
COLA架构
3942 0
COLA架构
|
安全 Java 关系型数据库
Keycloak单点登录
Keycloak单点登录
236 0
|
SQL XML Java
探索 MyBatis-Flex:使 MyBatis 更灵活
MyBatis-Flex 是 MyBatis 框架的一个插件,旨在增强 MyBatis 的灵活性和功能。它提供了动态 SQL 构建、多数据源支持、分页查询、注解支持等一系列功能,使 MyBatis 更加强大和易于使用。您可以轻松地配置和切换多个数据源,构建动态 SQL 查询语句,执行分页查询操作,同时还支持使用注解来配置 MyBatis。 MyBatis-Flex 为开发者提供了更多选择和便利,可以大大提高数据库操作的效率和代码的质量。
945 0
|
存储 SpringCloudAlibaba Kubernetes
K8S核心篇:Pod
Pod 是k8s 系统中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型,也是在k8s 上运行容器化应用的资源对象,其他的资源对象都是用来支撑或者扩展Pod 对象功能的,比如控制器对象是用来管控Pod 对象的,Service 或者Ingress 资源对象是用来暴露Pod 引用对象的,PersistentVolume 资源对象是用来为Pod提供存储等等,k8s 不会直接处理容器,而是Pod,Pod 是由一个或多个container 组成。
2063 0
K8S核心篇:Pod
|
SQL XML IDE
Fluent mybatis
众多框架都是从无到有,从有到简的一个过程,核心理念都是为简化开发为生。
453 0
Fluent mybatis
|
存储 Kubernetes 中间件
【中间件-keycloak】第一次改开源中间件keycloak总个结
【中间件-keycloak】第一次改开源中间件keycloak总个结
633 6
【中间件-keycloak】第一次改开源中间件keycloak总个结