63 lines
1.4 KiB
Markdown
63 lines
1.4 KiB
Markdown
# License System Backend
|
|
|
|
ASP.NET Core 8 API service for the software authorization system.
|
|
|
|
## Requirements
|
|
|
|
- .NET 8 SDK
|
|
- PostgreSQL 16+
|
|
- Redis 7+ (optional, for rate limiting)
|
|
|
|
## Quick Start
|
|
|
|
1. Create database and apply schema:
|
|
|
|
```bash
|
|
psql -U postgres -d license -f scripts/init.sql
|
|
```
|
|
|
|
2. Update `src/License.Api/appsettings.json` with your connection string and JWT secret.
|
|
|
|
3. Run the API:
|
|
|
|
```bash
|
|
dotnet restore
|
|
|
|
ASPNETCORE_URLS=http://localhost:39256 dotnet run --project src/License.Api
|
|
```
|
|
|
|
4. Swagger:
|
|
|
|
```
|
|
http://localhost:39256/swagger
|
|
```
|
|
|
|
## Docker Compose
|
|
|
|
1. Copy env file:
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
2. Start services:
|
|
|
|
```bash
|
|
docker compose up -d
|
|
```
|
|
|
|
3. Check health:
|
|
|
|
```bash
|
|
curl http://localhost:39256/health/ready
|
|
```
|
|
|
|
## Notes
|
|
|
|
- On first run, a `super_admin` user is seeded from `Seed` config in `appsettings.json`.
|
|
- Files are stored under the `Storage:UploadRoot` path (defaults to `uploads/`).
|
|
- If `Storage:ClientRsaPublicKeyPem` is empty, files are stored unencrypted and no key headers are returned.
|
|
- CORS can be restricted via `Cors:AllowedOrigins` or env `Cors__AllowedOrigins__0` (set `Cors:AllowAny` to `true` for dev).
|
|
- When `Storage:RequireHttpsForDownloadKey` is `true`, encrypted downloads require HTTPS to return the decryption key.
|
|
- Auth signature accepts `ProjectSecret` or `ProjectKey` (use ProjectKey for client integrations).
|