mirror of
https://github.com/casdoor/casdoor.git
synced 2025-05-23 10:45:47 +08:00
Add README.
This commit is contained in:
parent
df5514ef31
commit
a09a8b2af0
186
README.md
186
README.md
@ -1 +1,185 @@
|
|||||||
# casdoor
|
Casdoor
|
||||||
|
====
|
||||||
|
|
||||||
|
Casdoor is a UI-first centralized authentication / Single-Sign-On (SSO) platform based on OAuth 2.0 / OIDC.
|
||||||
|
|
||||||
|
## Online demo
|
||||||
|
|
||||||
|
### Casdoor
|
||||||
|
|
||||||
|
Casdoor is the authentication server. It serves both the web UI and the login requests from the application users.
|
||||||
|
|
||||||
|
- Deployed site: https://door.casbin.com/
|
||||||
|
- Source code: https://github.com/casbin/casdoor (this repo)
|
||||||
|
|
||||||
|
Global admin login:
|
||||||
|
|
||||||
|
- Username: `admin`
|
||||||
|
- Password: `123`
|
||||||
|
|
||||||
|
### Web application
|
||||||
|
|
||||||
|
Casbin-OA is one of our applications that use Casdoor as authentication.
|
||||||
|
|
||||||
|
- Deployed site: https://oa.casbin.com/
|
||||||
|
- Source code: https://github.com/casbin/casbin-oa
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
Casdoor contains 2 parts:
|
||||||
|
|
||||||
|
Name | Description | Language | Source code
|
||||||
|
----|------|----|----
|
||||||
|
Frontend | Web frontend UI for Casdoor | Javascript + React | https://github.com/casbin/casdoor/tree/master/web
|
||||||
|
Backend | RESTful API backend for Casdoor | Golang + Beego + MySQL | https://github.com/casbin/casdoor
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
- Get code via `go get`:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
go get github.com/casbin/casdoor
|
||||||
|
```
|
||||||
|
|
||||||
|
or `git clone`:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
git clone https://github.com/casbin/casdoor
|
||||||
|
```
|
||||||
|
|
||||||
|
## Run
|
||||||
|
|
||||||
|
- Run backend (in port 8000):
|
||||||
|
|
||||||
|
```shell
|
||||||
|
go run main.go
|
||||||
|
```
|
||||||
|
|
||||||
|
- Run frontend (in the same machine's port 7001):
|
||||||
|
|
||||||
|
```shell
|
||||||
|
cd web
|
||||||
|
## npm
|
||||||
|
npm install
|
||||||
|
npm run start
|
||||||
|
## yarn
|
||||||
|
yarn install
|
||||||
|
yarn run start
|
||||||
|
```
|
||||||
|
|
||||||
|
- Open browser:
|
||||||
|
|
||||||
|
http://localhost:7001/
|
||||||
|
|
||||||
|
## Config
|
||||||
|
|
||||||
|
- Setup database:
|
||||||
|
|
||||||
|
Casdoor will store its users, nodes and topics informations in a MySQL database named: `casdoor`, will create it if not existed. The DB connection string can be specified at: https://github.com/casbin/casdoor/blob/master/conf/app.conf
|
||||||
|
|
||||||
|
```ini
|
||||||
|
dataSourceName = root:123@tcp(localhost:3306)/
|
||||||
|
```
|
||||||
|
|
||||||
|
Casdoor uses XORM to connect to DB, so all DBs supported by XORM can also be used.
|
||||||
|
|
||||||
|
- Setup your Casdoor to enable some third-party login platform:
|
||||||
|
|
||||||
|
Casdoor provide a way to sign up using Google account, Github account, WeChat account and so on, so you may have to get your own ClientID and ClientSecret first.
|
||||||
|
|
||||||
|
1. Google
|
||||||
|
|
||||||
|
You could get them by clicking on this url: https://console.developers.google.com/apis
|
||||||
|
You should set `Authorized JavaScript origins` to fit your own domain address, for local testing, set`http://localhost:3000`. And set the `Authorized redirect URIs`, the same domain address as before, add `/callback/google/signup` and `/callback/google/link` after that, for local testing, set`http://localhost:3000/callback/google/signup` + `http://localhost:3000/callback/google/link`.
|
||||||
|
|
||||||
|
2. Github
|
||||||
|
|
||||||
|
You could get them by clicking on this url: https://github.com/settings/developers
|
||||||
|
You should set `Homepage URL` to fit your own domain address, for local testing, set`http://localhost:3000`. And set the `Authorization callback URL`, the same domain address as before, add `/callback/github` after that, for local testing, set`http://localhost:3000/callback/github`.
|
||||||
|
|
||||||
|
And to improve security, you could set a `state` value determined by **yourself** to make sure the request is requesting by yourself, such as "random".
|
||||||
|
Those information strings can be specified at: https://github.com/casbin/casdoor/blob/master/conf/app.conf
|
||||||
|
|
||||||
|
```ini
|
||||||
|
GoogleAuthClientID = "xxx" //your own client id
|
||||||
|
GoogleAuthClientSecret = "xxx" //your own client secret
|
||||||
|
GoogleAuthState = "xxx" //set by yourself
|
||||||
|
GithubAuthClientID = "xxx" //your own client id
|
||||||
|
GithubAuthClientSecret = "xxx" //your own client secret
|
||||||
|
GithubAuthState = "xx" //set by yourself, we may change this to a random word in the future
|
||||||
|
```
|
||||||
|
|
||||||
|
You may also have to fill in the **same** information at: https://github.com/casbin/casdoor/blob/master/web/src/Conf.js. By the way, you could change the value of `scope` to get different user information form them if you need, we just take `profile` and `email`.
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
export const GoogleClientId = "xxx"
|
||||||
|
|
||||||
|
export const GoogleAuthState = "xxx"
|
||||||
|
|
||||||
|
export const GoogleAuthScope = "profile+email"
|
||||||
|
|
||||||
|
export const GithubClientId = "xxx"
|
||||||
|
|
||||||
|
export const GithubAuthState = "xxx"
|
||||||
|
|
||||||
|
export const GithubAuthScope = "user:email+read:user"
|
||||||
|
```
|
||||||
|
|
||||||
|
3. QQ
|
||||||
|
|
||||||
|
Before you begin to use QQ login services, you should make sure that you have applied the application at [QQ-connect](https://connect.qq.com/manage.html#/)
|
||||||
|
|
||||||
|
Configuration:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
export const QQClientId = ""
|
||||||
|
|
||||||
|
export const QQAuthState = ""
|
||||||
|
|
||||||
|
export const QQAuthScope = "get_user_info"
|
||||||
|
|
||||||
|
export const QQOauthUri = "https://graph.qq.com/oauth2.0/authorize"
|
||||||
|
```
|
||||||
|
|
||||||
|
```ini
|
||||||
|
QQAPPID = ""
|
||||||
|
QQAPPKey = ""
|
||||||
|
QQAuthState = ""
|
||||||
|
```
|
||||||
|
|
||||||
|
4. WeChat
|
||||||
|
|
||||||
|
Similar to QQ login service, before using WeChat to log in, you need to apply for OAuth2.0 service fee on the WeChat open platform [open weixin](https://open.weixin.qq.com/cgi-bin/frame?t=home/web_tmpl). After completing the configuration, you can log in via WeChat QR code.
|
||||||
|
|
||||||
|
Configuration:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
export const WechatClientId = ""
|
||||||
|
|
||||||
|
export const WeChatAuthState = ""
|
||||||
|
|
||||||
|
export const WeChatAuthScope = "snsapi_login"
|
||||||
|
|
||||||
|
export const WeChatOauthUri = "https://open.weixin.qq.com/connect/qrconnect"
|
||||||
|
```
|
||||||
|
|
||||||
|
```ini
|
||||||
|
WeChatAPPID = ""
|
||||||
|
WeChatKey = ""
|
||||||
|
WeChatAuthState = ""
|
||||||
|
```
|
||||||
|
|
||||||
|
We would show different login/signup methods depending on your configuration.
|
||||||
|
|
||||||
|
- Github corner
|
||||||
|
|
||||||
|
We added a Github icon in the upper right corner, linking to your Github repository address.
|
||||||
|
You could set `ShowGithubCorner` to hidden it.
|
||||||
|
|
||||||
|
Configuration:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
export const ShowGithubCorner = true
|
||||||
|
|
||||||
|
export const GithubRepo = "https://github.com/casbin/casdoor" //your github repository
|
||||||
|
```
|
||||||
|
Loading…
x
Reference in New Issue
Block a user