Wiki.js介绍

Wiki.js 是一个开源的百科全书系统,可以用来搭建自己的知识库、文档库等。

官网 | GitHub

后续内容中的Wiki.js会用Wiki代替。

本文环境:Wiki 2.5.289

Wiki的基本环境搭建和使用,网上一大堆,本文就不在累赘。

使用过程中,需要用到身份验证时,发现出错后页面提示信息不是很友好,最后也是通过调试源码后配置成功,所以还是很有必要记录一下配置方式。

基本的配置包含2个部分,分别是授权配置注册配置

1. 授权配置



个人认为这部分是最不友好的地方,卡壳也是卡在这里。

1.1 Client ID

获取 Token 时会作为参数传递给接口。

1.2 Client Secret

获取 Token 时会作为参数传递给接口。

1.3 Authorization Endpoint URL

授权页面的地址。

当进入 Wiki 的登录页后,选择 Generic OAuth2 授权登录时跳转的地址。

如果同意授权,则需要跳转到 Wiki 指定的回调页面(跳转时可以加入自定义参数)。

每个项目的回调地址都不相同,最简单的办法就是在页面的最下面找到配置参考。

http://xxx:3000/login/bf4439-a770-fedee4be57df/callback?MyValue=test

如果回调地址配置的不对,可能会出现Invalid authentication provider.错误页。

1.4 Token Endpoint URL

获取Token的接口地址。

在调用该地址时,Wiki会自动附带下面这些参数:

  1. grant_type=authorization_code
  2. client_id=1.1中配置的值
  3. client_secret=1.2中配置的值
  4. 自定义参数(1.3中配置的值)

服务端验证逻辑完成后,接口必须返回包含以下字段的返回值(注意区分大小写

{
"access_token":"xxx"
}

如果返回值不合法,会出现错误页Failed to obtain access token

1.5 User Info Endpoint URL

成功拿到Token后,获取用户信息的接口地址。

可以设置 Wiki 获取用户信息时 Token 的传递方式:Query stringAuthorization header

服务器根据 Token 获取用户信息,最终返回包含以下字段的返回值(注意区分大小写

{
"UserId":10086,
"Name":"张三",
"Email":"zs@test.com"
}

如果返回值不合法,会出现错误页Missing or invalid email address from profile.

Wiki 系统中是通过 Email 来标识唯一用户,因此不同用户的 Email 不能重复。

1.6 ID Claim

用户信息接口中返回的用户 ID 字段名。

1.7 Display Name Claim

用户信息接口中返回的用户名称字段名。

1.8 Email Claim

用户信息接口中返回的邮箱字段名,该字段值必须保证唯一。

2. 注册配置

2.1 启用开放注册

授权登录完成后,当用户信息在 Wiki 中不存在时,则会新建用户信息并完成登录。

2.1 禁用开放注册

授权用户的 Email 必须已经在 Wiki 中注册,否则无法登录,出现错误页You are not authorized to login.

少走点弯路:Wiki.js 通过 Generic OAuth2 进行身份验证的更多相关文章

  1. 根据实践经验,讲述些学习Java web能少走的弯路,内容摘自java web轻量级开发面试教程

    在和不少比较上进的初级程序员打交道的过程中,我们总结出了一些能帮到合格程序员尽快进阶的经验,从总体上来讲,多学.多实践不吃亏.本文来是从 java web轻量级开发面试教程从摘录的. 1  哪些知识点 ...

  2. Spring Boot 整合多点套路,少走点弯路~

    持续原创输出,点击上方蓝字关注我 个人原创博客+1,点击前往,查看更多 目录 前言 Spring Boot 版本 找到自动配置类 注意@Conditionalxxx注解 注意EnableConfigu ...

  3. 基于 Token 的身份验证:JSON Web Token(附:Node.js 项目)

    最近了解下基于 Token 的身份验证,跟大伙分享下.很多大型网站也都在用,比如 Facebook,Twitter,Google+,Github 等等,比起传统的身份验证方法,Token 扩展性更强, ...

  4. 在spring,mybatis整合配置中走的弯路(1)

    在接触一个新东西,总免不了走一些弯路,也正是在这些弯路中,我们不断的成长. 从git上把之前写的代码扒下来,看看我在当初使用spring与mybatis中所走的弯路,路过的君子也可引以为戒. < ...

  5. ubuntu 部署 wiki.js

    1. 安装node  (还是官网的东西靠谱,虽然是english)  https://github.com/nodesource/distributions/blob/master/README.md ...

  6. CSS 黑魔法小技巧,让你少写不必要的JS,代码更优雅

    首页   登录注册         CSS 黑魔法小技巧,让你少写不必要的JS,代码更优雅 阅读 8113 收藏 927 2017-09-26 原文链接:github.com 腾讯云容器服务CSS,立 ...

  7. CentOS7.x安装Wiki.js知识库

    近期有个需求,搭建一个知识管理系统,所以就找了几个可作为知识管理的软件,最终定位到wiki.js,之所以选择这个,是看中了它的易部署性,该项目是在2016年12月推出了第一个版本,算是比较新的项目了, ...

  8. 在js中实现邮箱格式的验证

    在js中实现邮箱格式的验证 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><htm ...

  9. js正则实现二代身份证号码验证详解

    js正则实现二代身份证号码验证详解 根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至 ...

  10. js简单验证码的生成和验证

    如何用js生成简单验证码,并验证是否正确的方法 1.html页面如下 <div> <table border="0" cellspacing="5&qu ...

随机推荐

  1. NFS生产环境部署调优

    1.NFS简介 NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间共享资源.在NFS的应用中,本地NFS的客户端应用可以透 ...

  2. 关于MicroPython mpremote工具 的一些用例,闲聊

    关于MicroPython mpremote工具 的一些用例,闲聊 我尝试了很多不同的第三方micropython工具,有些是Windows应用程序,有些是VScode插件. 但是当我尝试过Micro ...

  3. Java中的引用概念

    Java对对象和基本的数据类型的处理是不一样的.和C语言一样,当把Java的基本数据类型(如int,char,double等)作为入口参数传给函数体的时候,传入的参数在函数体内部变成了局部变量,这个局 ...

  4. vue3+three.js实现疫情可视化

    前言 自成都九月份以来疫情原因被封了一两周,居家着实无聊,每天都是盯着微信公众号发布的疫情数据看,那种页面,就我一个前端仔来说,看着是真的丑啊!(⊙_⊙)?既然丑,那就自己动手开整!项目是2022.9 ...

  5. Python 类型提示简介

    Python 3.6+ 版本加入了对"类型提示"的支持. 这些"类型提示"是一种新的语法(在 Python 3.6 版本加入)用来声明一个变量的类型. 通过声明 ...

  6. ingress-nginx 的使用 =》 部署在 Kubernetes 集群中的应用暴露给外部的用户使用

    文章转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247488189&idx=1&sn=8175f067 ...

  7. MySQL集群搭建(6)-双主+keepalived高可用

    双主 + keepalived 是一个比较简单的 MySQL 高可用架构,适用于中小 MySQL 集群,今天就说说怎么用 keepalived 做 MySQL 的高可用. 1 概述 1.1 keepa ...

  8. Java SpringBoot 项目构建 Docker 镜像调优实践

    PS:已经在生产实践中验证,解决在生产环境下,网速带宽小,每次推拉镜像影响线上服务问题,按本文方式构建镜像,除了第一次拉取.推送.构建镜像慢,第二.三-次都是几百K大小传输,速度非常快,构建.打包.推 ...

  9. 通用 HTTP 签名组件的另类实现

    1.初衷 开发中经常需要做一些接口的签名生成和校验工作,最开始的时候都是每个接口去按照约定单独实现,久而久之就变的非常难维护,因此就琢磨怎么能够写了一个比较通用的签名生成工具. 2.思路 采用链式调用 ...

  10. [题解] Atcoder AGC 005 F Many Easy Problems NTT,组合数学

    题目 观察当k固定时答案是什么.先假设每个节点对答案的贡献都是\(\binom{n}{k}\),然后再减掉某个点没有贡献的选点方案数.对于一个节点i,它没有贡献的方案数显然就是所有k个节点都选在i连出 ...