go用户中心kratos
用户中心kratos
kratos介绍
ORY Kratos是根据云架构最佳实践构建的API
优先身份和用户管理系统。它实现了几乎每个软件应用程序都需要处理的核心用例:
- 自助登录和注册:允许最终用户使用用户名/电子邮件和密码组合,社交登录(使用
Google,GitHub
登录),无密码流等创建和登录帐户(我们称其为idents
) - 多重身份验证(MFA/2FA):支持协议,例如
TOTP([RFC 6238](https://tools.ietf.org/html/rfc6238)和[ IETF RFC 4226](https://tools.ietf.org/html/rfc4226)更好地称为 [Google Authenticator](https://en.wikipedia.org/wiki/Google_Authenticator))
- 帐户验证:验证电子邮件地址,电话号码或实际地址实际上属于该身份。
- 帐户恢复:使用"忘记密码"流,安全代码(如果丢失
MKFA
设备)和其他内容来恢复访问权限。 - 个人资料和帐户管理:使用安全流程更新密码,个人详细信息,电子邮件地址,链接的社交个人资料。
- 管理员API:导入,更新,删除身份。
1 代码下载
kratos源码地址下载
解压说明
把下载的源码解压后放在本地%GOPATH%/src
目录下
注:GOPATH为项目的运行时的工作空间位置,GOPATH其中包含三个子目录如下
- src 目录包含Go的源文件,它们被组织成包(每个目录都对应一个包)
- pkg 目录包含包对象
- bin 目录包含可执行命令
2 编译kratos
1 "win+R"打开运行。
2 输入"cmd"回车进入命令提示符。
3 进入到kratos对应目录下(本机为D:\go_project\src\kratos)
4 输入go build main.go
3 数据库迁移
3.1 迁移配置文件
在项目根目录下面找到
./persistence/sql/.soda.yml
进行配置文件的修改,为数据库迁移做准备
dsn: mysql://root:admin@tcp(127.0.0.1:3306)/kratos?parseTime=true&multiStatements=true
3.2 迁移kratos项目的数据到mysql
备注:从这里开始使用Goland编译器来操作kratos项目,用Navicat创建一个数据库kratos
3.3 进行kratos项目数据迁移
项目路径在
%GOPATH%\src\kratos
下执行以下命令
main.exe --config ./persistence/sql/.soda.yml migrate sql -e --yes
3.4 在Navicat查看是否迁移成功
4 修改项目配置文件
项目配置文件在
kratos/docs/.kratos.yaml
,具体配置说明如下
点击项目配置文件
serve:admin:port: 1234host: 127.0.0.1public:port: 1235host: 127.0.0.1
#数据库连接dsn
dsn: mysql://root:admin@tcp(localhost:3306)/kratos?parseTime=true&multiStatements=trueselfservice:strategies:password:enabled: true #打开用户密码验证功能logout:redirect_to: http://127.0.0.1:3000/auth/login #登出跳转的地址urllogin:request_lifespan: 10mafter:password:-job: session-job: redirectconfig:default_redirect_url: http://127.0.0.1:3000/allow_user_defined_redirect: trueregistration:request_lifespan: 10mafter:password:-job: session-job: redirectconfig:default_redirect_url: http://127.0.0.1:3000/auth/registration #注册跳转的前端页面URLallow_user_defined_redirect: truelog:level: debug secrets:session:- PLEASE-CHANGE-ME-I-AM-VERY-INSECUREurls:login_ui: http://127.0.0.1:3000/auth/login #登录跳转的前端页面URLregistration_ui: http://127.0.0.1:3000/auth/registration #注册跳转的前端页面URLerror_ui: http://127.0.0.1:3000/error #发生错误跳转的前端页面URLprofile_ui: http://127.0.0.1:3000/auth/profile #个人配置文件跳转的前端页面URL# 这些未定义,因为在此演示中不可用mfa_ui: http://127.0.0.1:3000/verify_ui: http://127.0.0.1:3000/self:public: http://127.0.0.1:1235/ #KRATOS_BROWSER_URLadmin: http://127.0.0.1:1234/ #KRATOS_ADMIN_URLdefault_return_to: http://127.0.0.1:3000/ #登录注册成功后跳转的页面地址urlwhitelisted_return_to_domains: #白名单返回域- http://127.0.0.1:1235hashers:argon2:parallelism: 1memory: 131072iterations: 2salt_length: 16key_length: 16identity:traits:default_schema_url: http://127.0.0.1:3000/identity.traits.schema.json #注册身份时的用户schema格式courier:smtp:connection_uri: smtp://test:test@mailhog:1025/ #邮箱端口地址配置
5 启动kratos项目
在Goland进入
%GOPATH%/src/kratos
目录执行以下命令启动项目
main.exe serve --dev -c ./docs/.kratos.yaml
6 绑定前端页面
kratos前端页面地址下载
6.1 前端文件结构说明
6.2 前端启动
若没有安装nodejs请自行百度安装
//1 下载前端依赖包npm i//2 修改配置文件 kratos-selfservice-ui-node/src/config.ts
//修改对应的后端地址ip 如图6.1//3 启动前端页面服务
npm run start
7 后台数据库说明
7.1 邮件消息表courier_messages
字段名称 | 字段类型 | 参数说明 |
---|---|---|
id | char(36) | 主键id |
type | int(11) | 邮件类型 |
status | int(11) | 邮件状态 |
body | varchar(255) | 邮件主体内容 |
subject | varchar(255) | 邮件主题 |
recipient | varchar(255) | 收件人信息 |
created_at | datetime | 创建时间 |
updated_at | datetime | 修改时间 |
7.2 身份表identities
字段名称 | 字段类型 | 参数说明 |
---|---|---|
id | char(36) | 主键id |
traits_schema_id | varchar(2048) | 身份特征模式id |
traits | json | 个性特征 |
created_at | datetime | 创建时间 |
updated_at | datetime | 修改时间 |
7.3 身份标识符
身份标识符数据表identity_credential_identifiers
字段名称 | 字段类型 | 参数说明 |
---|---|---|
id | char(36) | 主键id |
identifier | varchar(255) | 身份描述 |
identity_credential_id | char(36) | identity_credentials主键id |
created_at | datetime | 创建时间 |
updated_at | datetime | 修改时间 |
7.4 身份类型
身份证类型数据表identity_credential_types
字段名称 | 字段类型 | 参数说明 |
---|---|---|
id | char(36) | 主键id |
name | varchar(32) | 身份名称 |
7.5 身份证数据表
身份证数据表identity_credentials
字段名称 | 字段类型 | 参数说明 |
---|---|---|
id | char(36) | 主键id |
config | json | 身份加密配置 |
identity_credential_type_id | char(36) | identity_credential_type主键id |
identity_id | char(36) | identities外键 |
created_at | datetime | 创建时间 |
updated_at | datetime | 修改时间 |
7.6 迁移记录表
迁移记录表schema_migration
字段名称 | 字段类型 | 参数说明 |
---|---|---|
version | varchar(14) | 迁移版本号 |
7.7 自助服务错误表
自助服务错误表selfservice_errors
字段名称 | 字段类型 | 参数说明 |
---|---|---|
id | char(36) | 主键id |
errors | json | 错误信息 |
seen_at | datetime | 查看时间 |
was_seen | tinyint(1) | 是否查看信息0未查看 1已查看 |
created_at | datetime | 创建时间 |
updated_at | datetime | 修改时间 |
csrf_token | varchar(255) | token数据 |
7.8 登录请求方法记录表
自助服务登录请求方法记录表selfservice_login_request_methods
字段名称 | 字段类型 | 参数说明 |
---|---|---|
id | char(36) | 主键id |
method | varchar(32) | 请求方法 |
selfservice_login_request_id | char(36) | selfservice_login_requests表主键id |
config | json | 请求方法配置信息 |
created_at | datetime | 创建时间 |
updated_at | datetime | 修改时间 |
7.9 登录请求记录表
自助服务登录请求记录表selfservice_login_requests
字段名称 | 字段类型 | 参数说明 |
---|---|---|
id | char(36) | 主键id |
request_url | varchar(2048) | 请求的httpUrl |
issued_at | datetime | 触发请求时间 |
expires_at | datetime | 过期时间 |
active_method | varchar(32) | 主动方法 |
csrf_token | varchar(255) | csrf令牌 |
created_at | datetime | 创建时间 |
updated_at | datetime | 修改时间 |
7.10 配置管理请求
自助服务配置管理请求数据表selfservice_profile_management_requests
字段名称 | 字段类型 | 参数说明 |
---|---|---|
id | char(36) | 主键id |
request_url | varchar(2048) | 请求的httpUrl |
issued_at | datetime | 触发请求时间 |
expires_at | datetime | 过期时间 |
form | json | form表单数据 |
update_successful | tinyint(1) | 更新是否成功 |
identity_id | char(36) | identities主键id |
created_at | datetime | 创建时间 |
updated_at | datetime | 修改时间 |
7.11 注册请求方法记录表
自助服务注册请求方法记录表selfservice_registration_request_methods
字段名称 | 字段类型 | 参数说明 |
---|---|---|
id | char(36) | 主键id |
method | varchar(32) | 请求方法 |
selfservice_registration_request_id | char(36) | selfservice_registration_requests表主键id |
config | json | 请求方法配置信息 |
created_at | datetime | 创建时间 |
updated_at | datetime | 修改时间 |
7.12 注册请求记录表
自助服务注册请求记录表selfservice_registration_requests
字段名称 | 字段类型 | 参数说明 |
---|---|---|
id | char(36) | 主键id |
request_url | varchar(2048) | 请求的httpUrl |
issued_at | datetime | 触发请求时间 |
expires_at | datetime | 过期时间 |
active_method | varchar(32) | 主动方法 |
csrf_token | varchar(255) | csrf令牌 |
created_at | datetime | 创建时间 |
updated_at | datetime | 修改时间 |
7.13 sessions
字段名称 | 字段类型 | 参数说明 |
---|---|---|
id | char(36) | 主键id |
issued_at | datetime | 触发请求时间 |
expires_at | datetime | 过期时间 |
authenticated_at | datetime | 授权时间 |
identity_id | char(36) | identities主键id |
created_at | datetime | 创建时间 |
updated_at | datetime | 修改时间 |
8 Kratos项目swagger详解
swagger安装教程
8.1 项目请求API列表
点击查看项目所有请求API列表
1 Common 公用的接口1.1 返回登录请求的上下文 请求方式:GET 说明:通过ORY Kratos的Public API访问此终结点时,请确保已设置cookie,以使CSRF正常运行。接口:/self-service/browser/flows/requests/login?request=12341.2 获取基于浏览器的配置文件管理流的请求上下文 请求方式:GET 说明:通过ORY Kratos的Public API访问此端点时,请确保已设置cookie,因为它们是检查身份验证会话所必需的。接口:/self-service/browser/flows/requests/profile1.3 该端点返回注册请求的上下文 请求方式:GET 说明:通过ORY Kratos的Public API访问此终结点时,请确保已设置cookie,以使CSRF正常运行。接口:/self-service/browser/flows/requests/registration1.4 该端点返回与面向用户的自助服务错误相关的错误。 请求方式:GET 接口:/self-service/errors2 public2.1 该端点初始化基于浏览器的用户登录流程。 请求方式:GET 接口:/self-service/browser/flows/login说明:该端点初始化基于浏览器的用户登录流程。初始化后,浏览器将重定向至urls.login_ui请求ID设置为查询参数的浏览器。如果已经存在有效的用户会话,则浏览器将重定向到urls.default_redirect_url。2.2 初始化基于浏览器的注销用户流 请求方式:GET 接口:/self-service/browser/flows/logout 2.3 初始化基于浏览器的配置文件管理流程 请求方式:GET 接口:/self-service/browser/flows/profile 2.4 完成基于浏览器的配置文件管理流程 请求方式:POST 接口:/self-service/browser/flows/profile/update2.5 初始化基于浏览器的注册用户流 请求方式:GET 接口:/self-service/browser/flows/registration2.6 获取基于浏览器的登录用户流的请求上下文 请求方式:GET 接口:/self-service/browser/flows/requests/login 2.7 获取基于浏览器的配置文件管理流的请求上下文 请求方式:GET 接口:/self-service/browser/flows/requests/profile2.8 获取基于浏览器的注册用户流的请求上下文 请求方式:GET 接口:/self-service/browser/flows/requests/registration2.9 此终结点返回与面向用户的自助服务错误相关联的错误 请求方式:GET 接口:/self-service/errors2.10 检查当前HTTP会话属于谁 请求方式:GET 接口:/sessions/whoami3 admin 3.1 列出系统中的所有标识 请求方式:GET 接口:/identities3.2 创建标识 请求方式:POST 接口:/identities3.3 获取对应的标识 请求方式:GET 接口:/identities/{id}3.4 修改对应的标识 请求方式:PUT接口:/identities/{id}3.5 删除对应的标识 请求方式:DELETE接口:/identities/{id}3.6 获取基于浏览器的登录用户流的请求上下文 请求方式:GET接口:/self-service/browser/flows/requests/login3.7获取基于浏览器的配置文件管理流的请求上下文 请求方式:GET接口:/self-service/browser/flows/requests/profile3.8 获取基于浏览器的注册用户流的请求上下文 请求方式:GET接口:/self-service/browser/flows/requests/registration3.9 获取面向用户的自助服务错误 请求方式:GET接口:/self-service/errors4 health4.1 检查活动状态,请求方式:GET 接口:/health/alive4.2 检查准备状态,请求方式:GET 接口:/health/ready5 获取服务版本 请求方式:GET 接口:/version
9 测试服务
9.1 跳转登录页面
跳转流程说明浏览器输入对应的kratos后端地址进行跳转,如果是使用的本文的配置文件,
则跳转示例如下,注意:显示访问后台服务器再重定向前端登录页面
http://127.0.0.1:1235/self-service/browser/flows/login
9.2 注册身份账号
点击登录页的注册账号按钮,跳转到注册页面
http://127.0.0.1:1235/self-service/browser/flows/registration
9.3 登录主页
在登录页面输入注册好的账号密码进行登录,跳转到默认主页
10 更多资料参考
Kratos源码
http://127.0.0.1:1235/self-service/browser/flows/registration
9.3 登录主页
在登录页面输入注册好的账号密码进行登录,跳转到默认主页
10 更多资料参考
Kratos源码
Kratos官网文档
go用户中心kratos相关推荐
- Django博客系统(用户中心修改)
1. 用户中心接口设计 1.请求方式 选项 方案 请求方法 POST 请求地址 /center/ 2.请求参数:表单 参数名 类型 是否必传 说明 username string 否 用户名 avat ...
- Django博客系统(用户中心展示)
1. 页面展示 1.在users.views.py文件中定义视图 from django.views import Viewclass UserCenterView(View):def get(sel ...
- 美多商城之用户中心(添加和验证邮箱)
二.添加和验证邮箱 2.1 添加邮箱后端逻辑 1. 添加邮箱接口设计和定义 1.请求方式 选项 方案 请求方法 PUT 请求地址 /emails/ # 添加邮箱url(r'^emails/$', vi ...
- 美多商城之用户中心(用户基本信息)
一.用户基本信息 1.1用户基本信息逻辑分析 1. 用户基本信息逻辑分析 以下是要实现的后端逻辑 用户模型补充email_active字段 查询并渲染用户基本信息 添加邮箱 发送邮箱验证邮件 验证邮箱 ...
- 亿级用户中心的设计与实践
- 前言 - 用户中心是互联网最为基础的核心系统,随着业务和用户的增长,势必会带来不断的挑战.如何在亿级的情况下保证系统的高可用,高性能以及高安全,本文能够给你一套实践方案. 注1:本文 ...
- layui设置按钮不可点击_(eblog)7、博客发布收藏、用户中心的设置
小Hub领读: 继续我们的eblog,今天来完成博客文章收藏,用户中心的设置! 项目名称:eblog 项目 Git 仓库:https://github.com/MarkerHub/eblog(给个 s ...
- 用户中心 - 查询用户信息
/*** 根据用户id查询用户信息* @param userId* @return*/ public Users queryUserInfo(String userId); @Transactiona ...
- 超级组合:用户中心+云平台
在Web3.0时代,一体化是个趋势,框架级别的用户中心,用户资源一体化框架需求应运而生,用户中心加云平台这个组合也随之出现.下面介绍两种框架级别的用户中心加云平台的组合. 1.用户中心UCenter ...
- 素材模板源码资源下载站源码-带用户中心和VIP充值系统等
介绍: 多功能素材模板源码资源下载站源码,带用户中心和VIP充值系统,后台管理+素材下载+积分金币下载 服务器操作系统用Linux centos 7.2 先安装宝塔,宝塔官网(https://www. ...
最新文章
- 在蓄电池管理系统中计算机应用,汽车电器与电子技术.docx
- html表格里的超链接点不了,Excel如何添加和取消超链接 Excel超链接打不开是怎么回事...
- 安卓手机浏览器排行_安卓手机性能排行榜:国产手机集体“出位”,华为却在角落哭泣?...
- 比较JSF、Spring MVC、Stripes、Struts 2、Tapestry、Wicket
- 卡塔兰数(Catalan)
- doubango播放不均匀的问题及改进办法
- ECMAScript版本号总结
- Hashtable--练习题44:把繁体字转换为简体字
- ini配置文件读写(大华)
- 远程控制客户端使用教程-multiDesk
- java beetl输出demo_Beetl 快速入门
- BUUCTF Reverse reverse3 WriteUp
- 微信打不开文件怎么办
- 基于TPS(Thin Plate Spines)的STN网络的PyTorch实现
- javase加强,十、IO流2
- mysql分页查询出租房屋信息_分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)...
- Axway API Management以及移动互联技术实现价值型
- python 机器学习 sklearn 朴素贝叶斯
- 职业自我认知的测试软件,职业生涯规划自我认知测试.docx
- java客户端带证书访问服务端_客户端与服务器SSL双向认证(客户端:java-服务端:java)...