141 lines
4.1 KiB
Markdown
141 lines
4.1 KiB
Markdown
# VRCAuthProxy
|
|
#### A VRChat API Authorization Proxy Service
|
|
|
|
[](https://github.com/PrideVRInc/VRCAuthProxy/actions/workflows/build.yml)
|
|
[](https://github.com/PrideVRInc/VRCAuthProxy/actions/workflows/test.yml)
|
|
[](https://github.com/PrideVRInc/VRCAuthProxy/releases)
|
|

|
|
[](https://opensource.org/licenses/MPL-2.0)
|
|
|
|
This authorization proxy service is for consuming the VRChat API in a multi-application / microservice architecture. Configure the proxy with the credentials for accounts you use to make API calls and direct your API clients to the proxy service instead of the VRChat API. The proxy server will handle the authorization call flow and caching of the authorization tokens for subsequent authorized calls.
|
|
|
|
## Build Steps
|
|
C# Binary Builds
|
|
`RUN dotnet build "VRCAuthProxy.csproj" -c $BUILD_CONFIGURATION -o /app/build`
|
|
|
|
Docker Service Build
|
|
`docker build -t pridevr/vrcauthproxy .`
|
|
|
|
## Production Image
|
|
Docker Hub
|
|
```
|
|
docker pull pridevr/vrcauthproxy:1
|
|
```
|
|
|
|
## Configuring
|
|
appsettings.json
|
|
```
|
|
{
|
|
"accounts": [
|
|
{
|
|
"username": "username",
|
|
"password": "password",
|
|
"totpSecret": "totp secret" // code given to you during 2FA/MFA setup process
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
## Running
|
|
docker run
|
|
`docker run -v ./authproxy.json:/app/appsettings.json -d pridevr/vrcauthproxy:1`
|
|
|
|
docker compose
|
|
```
|
|
services:
|
|
authproxy:
|
|
image: pridevr/vrcauthproxy:1
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ./authproxy.json:/app/appsettings.json
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "curl -f http://localhost:8080/ || exit 1"]
|
|
interval: 30s
|
|
retries: 5
|
|
timeout: 10s
|
|
```
|
|
|
|
## Testing
|
|
|
|
This section provides instructions on how to run the unit and integration tests for the VRCAuthProxy project.
|
|
|
|
### Running Tests Locally
|
|
|
|
To run the tests locally, ensure you have the .NET SDK installed. You can execute the tests using the following command:
|
|
|
|
```bash
|
|
dotnet test
|
|
```
|
|
|
|
For code coverage reports, you can use:
|
|
|
|
```bash
|
|
dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=lcov /p:CoverletOutput=./lcov.info
|
|
```
|
|
|
|
### Running Tests in a Docker Container
|
|
|
|
To run the tests in a Docker container, follow these steps:
|
|
|
|
1. **Build the Docker Image**: Ensure you have the Dockerfile set up correctly in your project root. Build the Docker image using the following command:
|
|
|
|
```bash
|
|
docker build -t vrcauthproxy-test -f Dockerfile.test .
|
|
```
|
|
|
|
2. **Run the Tests**: Execute the tests inside the Docker container with the following command:
|
|
|
|
```bash
|
|
docker run --rm vrcauthproxy-test dotnet test
|
|
```
|
|
|
|
This command will run the tests in the container and output the results to your terminal.
|
|
|
|
### Creating a Dockerfile.test
|
|
|
|
You can create a dedicated Dockerfile for testing:
|
|
|
|
```dockerfile
|
|
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy csproj and restore dependencies
|
|
COPY *.sln ./
|
|
COPY VRCAuthProxy/*.csproj ./VRCAuthProxy/
|
|
COPY Tests/*.csproj ./Tests/
|
|
RUN dotnet restore
|
|
|
|
# Copy the remaining files
|
|
COPY . ./
|
|
|
|
# Run tests
|
|
ENTRYPOINT ["dotnet", "test", "--logger:console"]
|
|
```
|
|
|
|
### Continuous Integration
|
|
|
|
The test suite is designed to be run in CI/CD pipelines. Include the following in your GitHub workflow:
|
|
|
|
```yaml
|
|
- name: Test
|
|
run: dotnet test --no-restore --verbosity normal /p:CollectCoverage=true /p:CoverletOutputFormat=lcov /p:CoverletOutput=./lcov.info
|
|
```
|
|
|
|
## LICENSE
|
|
MPL-2.0 with Addendum
|
|
|
|
## Upcoming Features
|
|
1. Environment variable configuration
|
|
2. Memcache / Redis authorization state session storage
|
|
3.
|
|
|
|
## Contributors
|
|
[](https://github.com/PrideVRInc/VRCAuthProxy/graphs/contributors)
|
|
|
|
Contributors list made with [contrib.rocks](https://contrib.rocks).
|
|
|
|
|
|
© 2025 [PrideVR, INC](https://pridevr.org)
|
|
|
|
A VR Pride Organization
|