An open API service indexing awesome lists of open source software.

https://github.com/dustlight-cn/auth

OAuth2.0 授权服务,用户中心,开放平台,微服务鉴权。
https://github.com/dustlight-cn/auth

authorization-server identity-management oauth2 quasar-framework spring-boot spring-security-oauth2 springsecurity sso stateless vue

Last synced: 11 days ago
JSON representation

OAuth2.0 授权服务,用户中心,开放平台,微服务鉴权。

Awesome Lists containing this project

README

          

auth-logo

# Auth

[![Docker Build Status](https://img.shields.io/github/workflow/status/dustlight-cn/auth/Docker%20Image%20CI)](https://github.com/dustlight-cn/auth/actions/)
[![License](https://img.shields.io/github/license/dustlight-cn/auth)](LICENSE)
[![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/dustlight-cn/auth?include_prereleases)](https://github.com/dustlight-cn/auth/releases)
[![Docker Image Version (latest semver)](https://img.shields.io/docker/v/dustlightcn/auth-service?label=image%20version&logo=docker)](https://hub.docker.com/repository/docker/dustlightcn/auth-service)

[简介](#简介)
|
[快速开始](#快速开始)
|
[文档](docs)
|
[部署](docs/deploy)
|
[构建](docs/Build.md)
|
[鸣谢](#鸣谢)

## 简介

**Auth** 是一个前后端分离的 OAuth2.0 授权中心与用户中心,适用于 **微服务鉴权**、**单点登录**、**企业开放平台** 等场景。

**[👀 在线展示](#在线展示)**
|
**[🕵️‍♀️ 图片展示](#图片展示)**

### 功能包括
* 用户管理
* 应用管理
* 角色与权限管理
* OAuth2 授权模式与授权作用域管理 (GrantType & Scope)
* 应用授权与鉴权

### 特点
* 无状态的 **Restful** 服务
* 简洁、自适应、双语言的前端页面
* 快速部署微服务

### 支持的授权模式

* [X] 授权码模式 *authorization_code* (支持 OAuth 2.1 PKCE)
* [X] 客户端凭据模式 *client_credentials*
* [X] 隐式授权模式 *implicit*
* [X] 令牌刷新 *refresh_token*
* [ ] 密码模式 *password* (出于安全考虑默认不启用,如需启用可以自行创建。)

### OAuth 2.1 和 OpenID Connect

* [X] PKCE (Proof Key for Code Exchange) 支持
* [X] OpenID Connect Discovery (`.well-known/openid-configuration`)
* [X] UserInfo 端点 (`/userinfo`)
* [X] ID Token 支持(JWT 中包含 OIDC 标准声明)
* [X] 标准 OIDC 作用域(`openid`, `profile`, `email`, `phone`)

详细文档请参考:
* [OAuth 2.1 和 OpenID Connect 中文文档](docs/OAuth2.1-OIDC.md)
* [OAuth 2.1 and OpenID Connect English Documentation](docs/OAuth2.1-OIDC-EN.md)

## 快速开始
### HELM 部署
[HELM 部署文档](https://dustlight-cn.github.io/auth-helm)

### Kubernetes 一键部署服务

> 使用 ```kubectl``` 一键部署服务,集群中需要至少三个持久卷(```PersistentVolume```)用于 MySQL 数据库 与 Redis 以及上传文件的持久化。

```bash
kubectl apply -f https://raw.githubusercontent.com/dustlight-cn/auth/master/docs/deploy/k8s/deploy.yaml
```

其他部署方式请参考:[部署文档](docs/deploy)

构建、配置请参考 [文档](docs)。

## 展示
### 在线展示
[前往查看](https://accounts.dustlight.cn)

若您不想注册账号或者像想体验更高权限的功能,可以使用 [测试账号](#测试账号) 。

#### 测试账号
> 1. 出于功能展示的目的,测试账号拥有查看所有用户信息的权限。如果您打算进行注册账号,您的电子邮箱地址可能会被其他人看到。
> 2. 若以下测试账号均不可用,请 [创建 Issue](https://github.com/dustlight-cn/auth/issues/new) 联系我。

您可以使用下列的测试账号登录,它们拥有测试权限以及开发者权限。

| 用户名 | 密码 |
| --- | --- |
| test_user | 123456 |
| aaaaaa | 123456 |
| bbbbbb | 123456 |

#### OAuth2 授权页面与端点

| 功能(前端) | URL | 示例 |
| --- | --- | --- |
| 授权 | [/authorize](https://accounts.dustlight.cn/authorize) | [隐式授权示例 *(implicit)*](https://live.dustlight.cn/login?redirect_uri=%2Fhome) |

| 功能(后端) | URL | 方法 |
| --- | --- | --- |
| 颁发 OAuth 令牌 | [/v1/oauth/token](https://api.dustlight.cn/v1/oauth/token) | ```POST``` |
| 销毁令牌 | [/v1/token](https://api.dustlight.cn/v1/token) | ```DELETE``` |
| 检查令牌有效性 | [/v1/token/validity](https://api.dustlight.cn/v1/token/validity) | ```GET``` / ```POST``` |
| 颁发签名 JWT | [/v1/jws](https://api.dustlight.cn/v1/jws) | ```POST``` |
| 转换 JWT | [/v1/jws](https://api.dustlight.cn/v1/jws) | ```GET``` |
| 获取 JWT 公钥 (JWK) | [/v1/jwk](https://api.dustlight.cn/v1/jwk) | ```GET``` |

#### 接口浏览

| Open API | URL |
| --- | --- |
| JSON | [https://api.dustlight.cn/v1/api-doc](https://api.dustlight.cn/v1/api-doc) |
| YAML | [https://api.dustlight.cn/v1/api-doc.yaml](https://api.dustlight.cn/v1/api-doc.yaml) |
| Swagger UI | [https://api.dustlight.cn/v1/swagger-ui](https://api.dustlight.cn/v1/swagger-ui) |

### 图片展示
#### 应用授权
authorize

#### 用户详情
user_details

#### 应用详情
client_details

#### 系统设置
settings

## 实现细节
### 后端

* 通过重写 **Spring Security OAuth2** 中的 Endpoint 实现前后端分离架构,使用 **Redis** 存储 Token、授权码、验证码等。
* 基于 **MySQL** & **MyBatis** 实现包括用户管理、应用管理、权限与角色管理等业务。
* 文件储存通过第三方服务实现(同时兼容本地储存),登录注册等接口通过谷歌 reCAPTCHA 人机识别进行验证。
* 使用 **Spring Doc** & **Swagger-UI** 生成 **OpenAPI** 文档和 API 调试页面。

### 前端

* 基于 **Vue** & **Quasar** 框架。
* 使用 **OpenAPI Generator** 生成 Typescript Axios SDK。

## 鸣谢

[![JetBrains](docs/img/jetbrains.svg?raw=true)](https://www.jetbrains.com/?from=Auth)