天天看點

Ory Kratos 使用者認證

Ory Kratos 為使用者認證與管理系統。本文将動手實作浏覽器(React+AntD)的完整流程,實際了解下它的 API 。

代碼: https://github.com/ikuokuo/start-ory-kratos

go-swagger 檢視:

Ory Kratos 使用者認證

docker-compose 運作:

運作了官方 Quickstart 例子,可以通路 http://127.0.0.1:4455/dashboard 體驗。

pgAdmin 打開(DB 資訊見 <code>quickstart-postgres.yml</code>):

Ory Kratos 使用者認證

檢視表:

Ory Kratos 使用者認證

設定環境變量可以覆寫。以 <code>_</code> 表示層級,如 <code>SELFSERVICE_FLOWS_SETTINGS_UI_URL=&lt;value&gt;</code> 覆寫 <code>selfservice.flows.settings.ui_url</code>。

Registration

Login

Logout

User Settings

Account Recovery

Address Verification

User-Facing Error

2FA / MFA

Ory Kratos 使用者認證
Ory Kratos 使用者認證

Ory Kratos

Public API (port 4433)

Admin API (port 4434)

Postgres DB (port 5432)

Browser Return URL (port 3000)

MailSlurper: a development SMTP server

Server UI (port 4436)

ory-kratos/config/kratos.yml: 配置檔案

ory-kratos/config/identity.schema.json: 認證 JSON 模式

ory-kratos/start.yml: Docker Compose 檔案

如果想運作官方 Self-Service UI 例子,那麼:

之後,通路 http://127.0.0.1:3000/ 體驗。在 <code>Register new account</code> / <code>Reset password</code> 時,可通路虛拟 SMTP 服務 http://127.0.0.1:4436 接收郵件。

React + Ant Design

通路 http://localhost:3000/ ,可見 React 歡迎頁。

修改 <code>src/App.tsx</code>,引入 antd 元件:

修改 <code>src/App.css</code>,引入 antd 樣式:

可見 antd 藍色按鈕元件。

Ory Kratos 使用者認證

字尾 <code>css</code> 改為 <code>scss</code> ,<code>tsx</code> 裡的 <code>import</code> 也改下。

于 <code>pages</code> 目錄下實作如下頁面 UI:

APIs:

<code>GET</code> <code>/self-service/registration/browser</code>: 初始化注冊流程

<code>GET</code> <code>/self-service/registration/flows</code>: 擷取注冊流程

<code>POST</code> <code>/self-service/registration</code>: 送出注冊流程

頁面加載後的處理流程:

流程資訊 <code>this.state.flow</code>,如下:

之後,依據流程資訊建立表單:

其中表單 <code>onFinish</code> 裡處理送出:

<code>GET</code> <code>/self-service/login/browser</code>: 初始化登入流程

<code>GET</code> <code>/self-service/login/flows</code>: 擷取登入流程

<code>POST</code> <code>/self-service/login</code>: 送出登入流程

與注冊流程一樣。

登入後,可通過 <code>whoami</code> 擷取授權資訊:

<code>GET</code> <code>/sessions/whoami</code>: 擷取授權資訊

<code>Dashboard</code> 頁展示了授權資訊:

Ory Kratos 使用者認證

<code>GET</code> <code>/self-service/verification/browser</code>: 初始化驗證流程

<code>GET</code> <code>/self-service/verification/flows</code>: 擷取驗證流程

<code>POST</code> <code>/self-service/verification</code>: 送出驗證流程

<code>GET</code> <code>/self-service/recovery/browser</code>: 初始化恢複流程

<code>GET</code> <code>/self-service/recovery/flows</code>: 擷取恢複流程

<code>POST</code> <code>/self-service/recovery</code>: 送出恢複流程

<code>GET</code> <code>/self-service/settings/browser</code>: 初始化設定流程

<code>GET</code> <code>/self-service/settings/flows</code>: 擷取設定流程

<code>POST</code> <code>/self-service/settings</code>: 完成設定流程

但要注意的是,依據流程資訊建立表單時,請區分 <code>group</code> 建構多個表單:

Ory Kratos 使用者認證

<code>GET</code> <code>/self-service/logout/browser</code>: 建立登出 URL

<code>POST</code> <code>/self-service/logout</code>: 完成登出流程

頁面加載後建立登出 URL ,

之後,頁面加上登出按鈕:

ORY Kratos ExpressJS Self-Service UI Reference

Kratos React Example

GoCoding 個人實踐的經驗分享,可關注公衆号!