发布应用 Casdoor
身份和访问管理(IAM)/单点登录(SSO)平台 Signed-off-by: 萌森 <qyg2297248353@163.com>
This commit is contained in:
parent
18ce625b8a
commit
85f6e564b3
|
|
@ -0,0 +1,490 @@
|
||||||
|
{
|
||||||
|
"organizations": [
|
||||||
|
{
|
||||||
|
"owner": "",
|
||||||
|
"name": "",
|
||||||
|
"displayName": "",
|
||||||
|
"websiteUrl": "",
|
||||||
|
"favicon": "",
|
||||||
|
"passwordType": "plain",
|
||||||
|
"passwordSalt": "",
|
||||||
|
"passwordOptions": [
|
||||||
|
"AtLeast6"
|
||||||
|
],
|
||||||
|
"countryCodes": [
|
||||||
|
"US",
|
||||||
|
"GB",
|
||||||
|
"ES",
|
||||||
|
"FR",
|
||||||
|
"DE",
|
||||||
|
"CN",
|
||||||
|
"JP",
|
||||||
|
"KR",
|
||||||
|
"VN",
|
||||||
|
"ID",
|
||||||
|
"SG",
|
||||||
|
"IN",
|
||||||
|
"IT",
|
||||||
|
"MY",
|
||||||
|
"TR",
|
||||||
|
"DZ",
|
||||||
|
"IL",
|
||||||
|
"PH",
|
||||||
|
"NL",
|
||||||
|
"PL",
|
||||||
|
"FI",
|
||||||
|
"SE",
|
||||||
|
"UA",
|
||||||
|
"KZ"
|
||||||
|
],
|
||||||
|
"defaultAvatar": "",
|
||||||
|
"defaultApplication": "",
|
||||||
|
"tags": [],
|
||||||
|
"languages": [
|
||||||
|
"en",
|
||||||
|
"zh",
|
||||||
|
"es",
|
||||||
|
"fr",
|
||||||
|
"de",
|
||||||
|
"id",
|
||||||
|
"ja",
|
||||||
|
"ko",
|
||||||
|
"ru",
|
||||||
|
"vi",
|
||||||
|
"it",
|
||||||
|
"ms",
|
||||||
|
"tr",
|
||||||
|
"ar",
|
||||||
|
"he",
|
||||||
|
"nl",
|
||||||
|
"pl",
|
||||||
|
"fi",
|
||||||
|
"sv",
|
||||||
|
"uk",
|
||||||
|
"kk",
|
||||||
|
"fa"
|
||||||
|
],
|
||||||
|
"masterPassword": "",
|
||||||
|
"defaultPassword": "",
|
||||||
|
"initScore": 2000,
|
||||||
|
"enableSoftDeletion": false,
|
||||||
|
"isProfilePublic": true,
|
||||||
|
"accountItems": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"applications": [
|
||||||
|
{
|
||||||
|
"owner": "",
|
||||||
|
"name": "",
|
||||||
|
"displayName": "",
|
||||||
|
"logo": "",
|
||||||
|
"homepageUrl": "",
|
||||||
|
"organization": "",
|
||||||
|
"cert": "",
|
||||||
|
"enablePassword": true,
|
||||||
|
"enableSignUp": true,
|
||||||
|
"clientId": "",
|
||||||
|
"clientSecret": "",
|
||||||
|
"providers": [
|
||||||
|
{
|
||||||
|
"name": "",
|
||||||
|
"canSignUp": true,
|
||||||
|
"canSignIn": true,
|
||||||
|
"canUnlink": false,
|
||||||
|
"prompted": false,
|
||||||
|
"alertType": "None"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"signinMethods": [
|
||||||
|
{
|
||||||
|
"name": "Password",
|
||||||
|
"displayName": "Password",
|
||||||
|
"rule": "All"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Verification code",
|
||||||
|
"displayName": "Verification code",
|
||||||
|
"rule": "All"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "WebAuthn",
|
||||||
|
"displayName": "WebAuthn",
|
||||||
|
"rule": "None"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Face ID",
|
||||||
|
"displayName": "Face ID",
|
||||||
|
"rule": "None"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"signupItems": [
|
||||||
|
{
|
||||||
|
"name": "ID",
|
||||||
|
"visible": false,
|
||||||
|
"required": true,
|
||||||
|
"prompted": false,
|
||||||
|
"rule": "Random"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Username",
|
||||||
|
"visible": true,
|
||||||
|
"required": true,
|
||||||
|
"prompted": false,
|
||||||
|
"rule": "None"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Display name",
|
||||||
|
"visible": true,
|
||||||
|
"required": true,
|
||||||
|
"prompted": false,
|
||||||
|
"rule": "None"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Password",
|
||||||
|
"visible": true,
|
||||||
|
"required": true,
|
||||||
|
"prompted": false,
|
||||||
|
"rule": "None"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Confirm password",
|
||||||
|
"visible": true,
|
||||||
|
"required": true,
|
||||||
|
"prompted": false,
|
||||||
|
"rule": "None"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Email",
|
||||||
|
"visible": true,
|
||||||
|
"required": true,
|
||||||
|
"prompted": false,
|
||||||
|
"rule": "None"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Phone",
|
||||||
|
"visible": true,
|
||||||
|
"required": true,
|
||||||
|
"prompted": false,
|
||||||
|
"rule": "None"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Agreement",
|
||||||
|
"visible": true,
|
||||||
|
"required": true,
|
||||||
|
"prompted": false,
|
||||||
|
"rule": "None"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"grantTypes": [
|
||||||
|
"authorization_code",
|
||||||
|
"password",
|
||||||
|
"client_credentials",
|
||||||
|
"token",
|
||||||
|
"id_token",
|
||||||
|
"refresh_token"
|
||||||
|
],
|
||||||
|
"redirectUris": [
|
||||||
|
"http://localhost:9000/callback"
|
||||||
|
],
|
||||||
|
"tokenFormat": "JWT",
|
||||||
|
"tokenFields": [],
|
||||||
|
"expireInHours": 168,
|
||||||
|
"failedSigninLimit": 5,
|
||||||
|
"failedSigninFrozenTime": 15
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"users": [
|
||||||
|
{
|
||||||
|
"owner": "",
|
||||||
|
"name": "",
|
||||||
|
"type": "normal-user",
|
||||||
|
"password": "",
|
||||||
|
"displayName": "",
|
||||||
|
"avatar": "",
|
||||||
|
"email": "",
|
||||||
|
"phone": "",
|
||||||
|
"countryCode": "",
|
||||||
|
"address": [],
|
||||||
|
"affiliation": "",
|
||||||
|
"tag": "",
|
||||||
|
"score": 2000,
|
||||||
|
"ranking": 1,
|
||||||
|
"isAdmin": true,
|
||||||
|
"isForbidden": false,
|
||||||
|
"isDeleted": false,
|
||||||
|
"signupApplication": "",
|
||||||
|
"createdIp": "",
|
||||||
|
"groups": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"providers": [
|
||||||
|
{
|
||||||
|
"owner": "",
|
||||||
|
"name": "",
|
||||||
|
"displayName": "",
|
||||||
|
"category": "",
|
||||||
|
"type": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"certs": [
|
||||||
|
{
|
||||||
|
"owner": "",
|
||||||
|
"name": "",
|
||||||
|
"displayName": "",
|
||||||
|
"scope": "JWT",
|
||||||
|
"type": "x509",
|
||||||
|
"cryptoAlgorithm": "RS256",
|
||||||
|
"bitSize": 4096,
|
||||||
|
"expireInYears": 20,
|
||||||
|
"certificate": "",
|
||||||
|
"privateKey": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ldaps": [
|
||||||
|
{
|
||||||
|
"id": "",
|
||||||
|
"owner": "",
|
||||||
|
"serverName": "",
|
||||||
|
"host": "",
|
||||||
|
"port": 389,
|
||||||
|
"username": "",
|
||||||
|
"password": "",
|
||||||
|
"baseDn": "",
|
||||||
|
"autoSync": 0,
|
||||||
|
"lastSync": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"models": [
|
||||||
|
{
|
||||||
|
"owner": "",
|
||||||
|
"name": "",
|
||||||
|
"modelText": "",
|
||||||
|
"displayName": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"permissions": [
|
||||||
|
{
|
||||||
|
"actions": [],
|
||||||
|
"displayName": "",
|
||||||
|
"effect": "",
|
||||||
|
"isEnabled": true,
|
||||||
|
"model": "",
|
||||||
|
"name": "",
|
||||||
|
"owner": "",
|
||||||
|
"resourceType": "",
|
||||||
|
"resources": [],
|
||||||
|
"roles": [],
|
||||||
|
"users": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"payments": [
|
||||||
|
{
|
||||||
|
"currency": "",
|
||||||
|
"detail": "",
|
||||||
|
"displayName": "",
|
||||||
|
"invoiceRemark": "",
|
||||||
|
"invoiceTaxId": "",
|
||||||
|
"invoiceTitle": "",
|
||||||
|
"invoiceType": "",
|
||||||
|
"invoiceUrl": "",
|
||||||
|
"message": "",
|
||||||
|
"name": "",
|
||||||
|
"organization": "",
|
||||||
|
"owner": "",
|
||||||
|
"payUrl": "",
|
||||||
|
"personEmail": "",
|
||||||
|
"personIdCard": "",
|
||||||
|
"personName": "",
|
||||||
|
"personPhone": "",
|
||||||
|
"price": 0,
|
||||||
|
"productDisplayName": "",
|
||||||
|
"productName": "",
|
||||||
|
"provider": "",
|
||||||
|
"returnUrl": "",
|
||||||
|
"state": "",
|
||||||
|
"tag": "",
|
||||||
|
"type": "",
|
||||||
|
"user": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"products": [
|
||||||
|
{
|
||||||
|
"currency": "",
|
||||||
|
"detail": "",
|
||||||
|
"displayName": "",
|
||||||
|
"image": "",
|
||||||
|
"name": "",
|
||||||
|
"owner": "",
|
||||||
|
"price": 0,
|
||||||
|
"providers": [],
|
||||||
|
"quantity": 0,
|
||||||
|
"returnUrl": "",
|
||||||
|
"sold": 0,
|
||||||
|
"state": "",
|
||||||
|
"tag": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"resources": [
|
||||||
|
{
|
||||||
|
"owner": "",
|
||||||
|
"name": "",
|
||||||
|
"user": "",
|
||||||
|
"provider": "",
|
||||||
|
"application": "",
|
||||||
|
"tag": "",
|
||||||
|
"parent": "",
|
||||||
|
"fileName": "",
|
||||||
|
"fileType": "",
|
||||||
|
"fileFormat": "",
|
||||||
|
"url": "",
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"roles": [
|
||||||
|
{
|
||||||
|
"displayName": "",
|
||||||
|
"isEnabled": true,
|
||||||
|
"name": "",
|
||||||
|
"owner": "",
|
||||||
|
"roles": [],
|
||||||
|
"users": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"syncers": [
|
||||||
|
{
|
||||||
|
"affiliationTable": "",
|
||||||
|
"avatarBaseUrl": "",
|
||||||
|
"database": "",
|
||||||
|
"databaseType": "",
|
||||||
|
"errorText": "",
|
||||||
|
"host": "",
|
||||||
|
"isEnabled": false,
|
||||||
|
"name": "",
|
||||||
|
"organization": "",
|
||||||
|
"owner": "",
|
||||||
|
"password": "",
|
||||||
|
"port": 0,
|
||||||
|
"syncInterval": 0,
|
||||||
|
"table": "",
|
||||||
|
"tableColumns": [
|
||||||
|
{
|
||||||
|
"casdoorName": "",
|
||||||
|
"isHashed": true,
|
||||||
|
"name": "",
|
||||||
|
"type": "",
|
||||||
|
"values": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tablePrimaryKey": "",
|
||||||
|
"type": "",
|
||||||
|
"user": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tokens": [
|
||||||
|
{
|
||||||
|
"accessToken": "",
|
||||||
|
"application": "",
|
||||||
|
"code": "",
|
||||||
|
"codeChallenge": "",
|
||||||
|
"codeExpireIn": 0,
|
||||||
|
"codeIsUsed": true,
|
||||||
|
"createdTime": "",
|
||||||
|
"expiresIn": 0,
|
||||||
|
"name": "",
|
||||||
|
"organization": "",
|
||||||
|
"owner": "",
|
||||||
|
"refreshToken": "",
|
||||||
|
"scope": "",
|
||||||
|
"tokenType": "",
|
||||||
|
"user": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"webhooks": [
|
||||||
|
{
|
||||||
|
"contentType": "",
|
||||||
|
"events": [],
|
||||||
|
"headers": [
|
||||||
|
{
|
||||||
|
"name": "",
|
||||||
|
"value": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"isEnabled": true,
|
||||||
|
"isUserExtended": true,
|
||||||
|
"method": "",
|
||||||
|
"name": "",
|
||||||
|
"organization": "",
|
||||||
|
"owner": "",
|
||||||
|
"url": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"groups": [
|
||||||
|
{
|
||||||
|
"owner": "",
|
||||||
|
"name": "",
|
||||||
|
"displayName": "",
|
||||||
|
"manager": "",
|
||||||
|
"contactEmail": "",
|
||||||
|
"type": "",
|
||||||
|
"parent_id": "",
|
||||||
|
"isTopGroup": true,
|
||||||
|
"title": "",
|
||||||
|
"key": "",
|
||||||
|
"children": "",
|
||||||
|
"isEnabled": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"adapters": [
|
||||||
|
{
|
||||||
|
"owner": "",
|
||||||
|
"name": "",
|
||||||
|
"table": "",
|
||||||
|
"useSameDb": true,
|
||||||
|
"type": "",
|
||||||
|
"databaseType": "",
|
||||||
|
"database": "",
|
||||||
|
"host": "",
|
||||||
|
"port": 0,
|
||||||
|
"user": "",
|
||||||
|
"password": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"enforcers": [
|
||||||
|
{
|
||||||
|
"owner": "",
|
||||||
|
"name": "",
|
||||||
|
"displayName": "",
|
||||||
|
"description": "",
|
||||||
|
"model": "",
|
||||||
|
"adapter": "",
|
||||||
|
"enforcer": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"plans": [
|
||||||
|
{
|
||||||
|
"owner": "",
|
||||||
|
"name": "",
|
||||||
|
"displayName": "",
|
||||||
|
"description": "",
|
||||||
|
"price": 0,
|
||||||
|
"currency": "",
|
||||||
|
"period": "",
|
||||||
|
"product": "",
|
||||||
|
"paymentProviders": [],
|
||||||
|
"isEnabled": true,
|
||||||
|
"role": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"pricings": [
|
||||||
|
{
|
||||||
|
"owner": "",
|
||||||
|
"name": "",
|
||||||
|
"displayName": "",
|
||||||
|
"description": "",
|
||||||
|
"plans": [],
|
||||||
|
"isEnabled": true,
|
||||||
|
"trialDuration": 0,
|
||||||
|
"application": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,138 @@
|
||||||
|
additionalProperties:
|
||||||
|
formFields:
|
||||||
|
- child:
|
||||||
|
default: ""
|
||||||
|
envKey: PANEL_DB_HOST
|
||||||
|
required: true
|
||||||
|
type: service
|
||||||
|
default: postgresql
|
||||||
|
edit: true
|
||||||
|
envKey: PANEL_DB_TYPE
|
||||||
|
labelZh: 数据库 服务 (前置检查)
|
||||||
|
labelEn: Database Service (Pre-check)
|
||||||
|
required: true
|
||||||
|
type: apps
|
||||||
|
values:
|
||||||
|
- label: PostgreSQL
|
||||||
|
value: postgresql
|
||||||
|
- label: MySQL
|
||||||
|
value: mysql
|
||||||
|
- label: MariaDB
|
||||||
|
value: mariadb
|
||||||
|
- label: Percona
|
||||||
|
value: percona
|
||||||
|
- child:
|
||||||
|
default: ""
|
||||||
|
envKey: PANEL_REDIS_SERVICE
|
||||||
|
required: true
|
||||||
|
type: service
|
||||||
|
default: redis
|
||||||
|
envKey: PANEL_REDIS_TYPE
|
||||||
|
labelZh: Redis 服务 (前置检查)
|
||||||
|
labelEn: Redis Service (Pre-check)
|
||||||
|
required: true
|
||||||
|
type: apps
|
||||||
|
values:
|
||||||
|
- label: Redis
|
||||||
|
value: redis
|
||||||
|
- default: "/home/casdoor"
|
||||||
|
edit: true
|
||||||
|
envKey: CASDOOR_ROOT_PATH
|
||||||
|
labelZh: 数据持久化路径
|
||||||
|
labelEn: Data persistence path
|
||||||
|
required: true
|
||||||
|
type: text
|
||||||
|
- default: 8000
|
||||||
|
edit: true
|
||||||
|
envKey: PANEL_APP_PORT_HTTP
|
||||||
|
labelZh: WebUI 端口
|
||||||
|
labelEn: WebUI port
|
||||||
|
required: true
|
||||||
|
rule: paramPort
|
||||||
|
type: number
|
||||||
|
- default: postgresql
|
||||||
|
edit: true
|
||||||
|
envKey: DB_TYPE
|
||||||
|
labelZh: 数据库 类型
|
||||||
|
labelEn: Database Type
|
||||||
|
required: true
|
||||||
|
type: select
|
||||||
|
values:
|
||||||
|
- label: PostgreSQL
|
||||||
|
value: postgresql
|
||||||
|
- label: MySQL (MariaDB, Percona)
|
||||||
|
value: mysql
|
||||||
|
- default: "127.0.0.1"
|
||||||
|
edit: true
|
||||||
|
envKey: DB_HOSTNAME
|
||||||
|
labelZh: 数据库 主机地址
|
||||||
|
labelEn: Database Host
|
||||||
|
required: false
|
||||||
|
type: text
|
||||||
|
- default: 5432
|
||||||
|
edit: true
|
||||||
|
envKey: DB_PORT
|
||||||
|
labelZh: 数据库 端口
|
||||||
|
labelEn: Database Port
|
||||||
|
required: false
|
||||||
|
rule: paramPort
|
||||||
|
type: number
|
||||||
|
- default: "gitea"
|
||||||
|
edit: true
|
||||||
|
envKey: DB_USER
|
||||||
|
labelZh: 数据库 用户名
|
||||||
|
labelEn: Database User
|
||||||
|
required: false
|
||||||
|
type: text
|
||||||
|
- default: ""
|
||||||
|
edit: true
|
||||||
|
envKey: DB_PASSWD
|
||||||
|
labelEn: Database Password
|
||||||
|
labelZh: 数据库 密码
|
||||||
|
random: true
|
||||||
|
required: false
|
||||||
|
rule: paramComplexity
|
||||||
|
type: password
|
||||||
|
- default: "gitea"
|
||||||
|
edit: true
|
||||||
|
envKey: DB_NAME
|
||||||
|
labelZh: 数据库 名称
|
||||||
|
labelEn: Database Name
|
||||||
|
required: false
|
||||||
|
type: text
|
||||||
|
- default: "127.0.0.1"
|
||||||
|
edit: true
|
||||||
|
envKey: REDIS_HOSTNAME
|
||||||
|
labelZh: Redis 主机
|
||||||
|
labelEn: Redis Host
|
||||||
|
required: true
|
||||||
|
type: text
|
||||||
|
- default: 6379
|
||||||
|
edit: true
|
||||||
|
envKey: REDIS_PORT
|
||||||
|
labelZh: Redis 端口
|
||||||
|
labelEn: Redis Port
|
||||||
|
required: true
|
||||||
|
rule: paramPort
|
||||||
|
type: number
|
||||||
|
- default: 0
|
||||||
|
edit: true
|
||||||
|
envKey: REDIS_DBINDEX
|
||||||
|
labelZh: Redis 索引
|
||||||
|
labelEn: Redis Index
|
||||||
|
required: true
|
||||||
|
type: number
|
||||||
|
- default: ""
|
||||||
|
edit: true
|
||||||
|
envKey: REDIS_PASSWORD
|
||||||
|
labelZh: Redis 密码
|
||||||
|
labelEn: Redis Password
|
||||||
|
required: false
|
||||||
|
type: password
|
||||||
|
- default: ""
|
||||||
|
edit: true
|
||||||
|
envKey: socks5Proxy
|
||||||
|
labelZh: Socks5 代理 (地区网络限制)
|
||||||
|
labelEn: Socks5 Proxy (Region Network Restriction)
|
||||||
|
required: false
|
||||||
|
type: text
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
version: "3.8"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
1panel-network:
|
||||||
|
external: true
|
||||||
|
|
||||||
|
services:
|
||||||
|
casdoor:
|
||||||
|
image: casbin/casdoor:v1.645.0
|
||||||
|
container_name: ${CONTAINER_NAME}
|
||||||
|
labels:
|
||||||
|
createdBy: "Apps"
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- 1panel-network
|
||||||
|
ports:
|
||||||
|
- ${PANEL_APP_PORT_HTTP}:8000
|
||||||
|
build:
|
||||||
|
context: ./
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
target: STANDARD
|
||||||
|
entrypoint: /bin/sh -c './server --createDatabase=true'
|
||||||
|
volumes:
|
||||||
|
- ${CASDOOR_ROOT_PATH}/data/files:/home/user/casdoor/files
|
||||||
|
environment:
|
||||||
|
- driverName=${DB_TYPE}
|
||||||
|
- dbName=${DB_NAME}
|
||||||
|
- redisEndpoint=${REDIS_HOSTNAME}:${REDIS_PORT}
|
||||||
|
- verificationCodeTimeout=10
|
||||||
|
- appname="casdoor"
|
||||||
|
- authState="casdoor"
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ -f .env ]; then
|
||||||
|
source .env
|
||||||
|
|
||||||
|
# setup-1 add default values
|
||||||
|
CURRENT_DIR=$(pwd)
|
||||||
|
echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
|
||||||
|
|
||||||
|
if [ "$DB_TYPE" == "mysql" ]; then
|
||||||
|
echo "dataSourceName=\"$DB_USER:$DB_PASSWD@tcp($DB_HOSTNAME:$DB_PORT)/\"" >> .env
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$DB_TYPE" == "postgresql" ]; then
|
||||||
|
echo "dataSourceName=\"user=$DB_USER password=$DB_PASSWD host=$DB_HOSTNAME port=$DB_PORT sslmode=disable dbname=$DB_NAME\"" >> .env
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$REDIS_PASSWORD" ]; then
|
||||||
|
echo "redisEndpoint=\"$REDIS_HOSTNAME:$REDIS_PORT,$REDIS_DBINDEX,$REDIS_PASSWORD\"" >> .env
|
||||||
|
else
|
||||||
|
echo "redisEndpoint=\"$REDIS_HOSTNAME:$REDIS_PORT,$REDIS_DBINDEX\"" >> .env
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Check Finish."
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "Error: .env file not found."
|
||||||
|
fi
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ -f .env ]; then
|
||||||
|
source .env
|
||||||
|
|
||||||
|
echo "Check Finish."
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "Error: .env file not found."
|
||||||
|
fi
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ -f .env ]; then
|
||||||
|
source .env
|
||||||
|
|
||||||
|
# setup-1 add default values
|
||||||
|
CURRENT_DIR=$(pwd)
|
||||||
|
echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
|
||||||
|
|
||||||
|
echo "Check Finish."
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "Error: .env file not found."
|
||||||
|
fi
|
||||||
|
|
@ -0,0 +1,81 @@
|
||||||
|
# Casdoor
|
||||||
|
|
||||||
|
Casdoor 是一个 UI 优先的身份访问管理 (IAM)/单点登录 (SSO) 平台,其 Web UI 支持 OAuth
|
||||||
|
2.0、OIDC、SAML、CAS、LDAP、SCIM、WebAuthn、TOTP、MFA、RADIUS、Google Workspace、活动目录和 Kerberos。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 简介
|
||||||
|
|
||||||
|
Casdoor是一个基于OAuth 2.0、OIDC、SAML 和 CAS 的,UI-first的身份和访问管理(IAM)/单点登录(SSO)平台。
|
||||||
|
|
||||||
|
Casdoor是由Casbin社区通过Golang和React进行开发。
|
||||||
|
|
||||||
|
Casdoor旨在提供一个强大的认证平台来处理用户管理问题。
|
||||||
|
|
||||||
|
+ ⚡️ 强大的功能和极简的配置。 支持使用 登录和传统的用户名/密码登录,只需几个步骤,Casdoor即可帮助您构建您的用户管理系统。
|
||||||
|
|
||||||
|
+ 💥 前后端分离架构。 Casdoor提供可随心所欲的网页界面并支持高并发。
|
||||||
|
|
||||||
|
+ 🥂 活跃的开源社区。 Casdoor是开源的,并有专业团队积极维护中。
|
||||||
|
|
||||||
|
+ 🌐 多语言支持。 Casdoor支持多种语言,包括中文、英文、法文、以及更多语言。
|
||||||
|
|
||||||
|
## 特性
|
||||||
|
|
||||||
|
+ Casdoor 遵循前后端分离架构,采用 Golang 进行开发。 它支持高同步,提供基于网页的用户界面管理,并支持10多种语言的本地化。
|
||||||
|
|
||||||
|
+ Casdoor 支持第三方应用登录,如 GitHub、谷歌、QQ、微信等,并支持通过插件扩展第三方登录。
|
||||||
|
|
||||||
|
+ Casdoor 支持基于 Cassbin 的授权管理。 它支持 ACL、RBAC、ABAC 和 RESTful鉴权管理模式。
|
||||||
|
|
||||||
|
+ Casdoor 提供了手机验证码、电子邮件验证码以及重置密码的功能。
|
||||||
|
|
||||||
|
+ Casdoor 支持日志的审计和记录。
|
||||||
|
|
||||||
|
+ Casdoor 可以使用阿里云、腾讯云、七牛云提供的图片CDN云存储功能。
|
||||||
|
|
||||||
|
+ Casdoor 允许自定义注册、登录以及找回密码页面。
|
||||||
|
|
||||||
|
+ 通过数据库同步支持与现有系统的集成,从而能够顺利过渡到 Casdoor。
|
||||||
|
|
||||||
|
+ Casdoor 支持主流数据库: MySQL、PostgreSQL、SQL Server 等, 并支持扩展插件以支持新的数据库。
|
||||||
|
|
||||||
|
## 安装说明
|
||||||
|
|
||||||
|
### 数据库支持
|
||||||
|
|
||||||
|
当前仅支持 `MySQL` 和 `PostgreSQL` 数据库。
|
||||||
|
|
||||||
|
官方支持使用 'SQLite' 数据库,但不建议在生产环境中使用。因此,我们放弃了 'SQLite' 数据库的配置选项。
|
||||||
|
|
||||||
|
同时还有一些其他数据库的支持,但是这些数据库的支持并不完善,因此我们也放弃了这些数据库的配置选项。
|
||||||
|
|
||||||
|
### 存储 `本地文件系统`
|
||||||
|
|
||||||
|
Casdoor 支持将用户头像等文件存储在本地文件系统中。默认情况下,Casdoor 会将文件存储在容器内部 `/home/user/casdoor/files`
|
||||||
|
目录下。
|
||||||
|
|
||||||
|
我们将其挂载在 持久化目录 `/home/casdoor` 下,以便于数据的持久化。
|
||||||
|
|
||||||
|
### `Socks5 代理 (地区网络限制)` 配置
|
||||||
|
|
||||||
|
如果您的网络环境受到地区网络限制,您可以通过配置 `Socks5 代理` 来解决这个问题。
|
||||||
|
|
||||||
|
socks5Proxy 是 SOCKS 代理服务器 IP 地址。
|
||||||
|
设置代理端口,因为我们有与Google相关的服务,或者使用Google、GitHub、Facebook、LinkedIn或Steam作为OAuth提供商,这在某些地区可能会受到网络限制。
|
||||||
|
|
||||||
|
### 数据初始化 `init_data.json` 配置
|
||||||
|
|
||||||
|
Casdoor 会在第一次启动时,自动初始化数据库。您可以通过配置 `init_data.json` 文件来初始化数据库。
|
||||||
|
|
||||||
|
配置自定义的 `init_data.json` 文件,需要挂载到容器中。
|
||||||
|
|
||||||
|
需要修改 `docker-compose.yml` 文件中的 `volumes` 部分,添加自定义配置的挂载,将 `init_data.json` 文件挂载到容器中,覆盖默认配置。
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
volumes:
|
||||||
|
- ./config/init_data.json:/init_data.json
|
||||||
|
```
|
||||||
|
|
||||||
|
其中 `./config/init_data.json` 为默认配置文件所在路径,您可以根据实际情况进行修改为自定义绝对文件路径即可。
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
name: Casdoor
|
||||||
|
title: 身份和访问管理(IAM)/单点登录(SSO)平台
|
||||||
|
description: 身份和访问管理(IAM)/单点登录(SSO)平台
|
||||||
|
additionalProperties:
|
||||||
|
key: casdoor
|
||||||
|
name: Casdoor
|
||||||
|
tags:
|
||||||
|
- WebSite
|
||||||
|
- Middleware
|
||||||
|
- Tool
|
||||||
|
- Local
|
||||||
|
shortDescZh: 身份和访问管理(IAM)/单点登录(SSO)平台
|
||||||
|
shortDescEn: Identity and Access Management (IAM)/Single Sign-On (SSO) platform
|
||||||
|
type: website
|
||||||
|
crossVersionUpdate: true
|
||||||
|
limit: 0
|
||||||
|
website: https://casdoor.org/
|
||||||
|
github: https://github.com/casdoor/casdoor/
|
||||||
|
document: https://casdoor.org/zh/docs/overview/
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
Loading…
Reference in New Issue