README
¶
authenticator
An authentication server.
Table of Contents
-
3.1. List system users
3.2. List applications
3.3. Create a application
3.4. Create a user
3.5. Get a user
3.6. Update a user
3.7. Delete a user
3.8. Get a application
3.9. Update a application
4.0. Delete a application
4.2. Login
Technologies
- GoLang 1.11.4
- MySQL 5.7.25
Authentication
- HTTP Basic (RFC 7617)
- OAuth2 (Coming soon)
API
This application exposes a restful API that you can use to interface with it. All requests must be
authenticated by including the HTTP Basic header Authentication: bearer 1231ewqw.... The bearer token is
the username and password separated by a colon, base 64 encoded.
When the application is started a temporary user is available with the username temp and password temp.
Use this temporary login to create your own user account, after which you should delete the temp user.
List system users
Endpoint
GET /system/users
Response
[
{
"id": 1,
"username": "user1",
"password": "password",
"email": "user1@email.com",
"application_id": 0,
"active": true,
"deleted": false,
"api": true,
"admin": false,
"created": "2018-11-07 16:59:06",
"created_by": "temp",
"last_updated": "2018-11-07 16:59:06",
"last_updated_by": "user"
},
{
"id": 2,
"username": "user2",
"password": "password",
"email": "user2@email.com",
"application_id": 0,
"active": true,
"deleted": false,
"api": true,
"admin": false,
"created": "2018-11-07 16:59:06",
"created_by": "temp",
"last_updated": "2018-11-07 16:59:06",
"last_updated_by": "user"
}
]
List applications
Endpoint
GET /system/applications
Response
[
{
"id": "1",
"name": "example",
"description": "description",
"url": "https://example.com/",
"active": true,
"deleted": false,
"created": "2018-11-07 16:59:06",
"created_by": "user1",
"last_updated": "2018-11-07 16:59:06",
"last_updated_by": "user1"
},
{
"id": "2",
"name": "another",
"description": "description",
"url": "https://another.com/",
"active": true,
"deleted": false,
"created": "2018-11-07 16:59:06",
"created_by": "user1",
"last_updated": "2018-11-07 16:59:06",
"last_updated_by": "user1"
}
]
Create a application
Rules
- Only API users can create applications.
Parameters
| Name | Type | Required |
|---|---|---|
| name | string | yes |
| description | string | yes |
| string | yes |
Endpoint
POST /application/create
Payload
{
"name": "example",
"description": "description",
"url": "https://example.com/"
}
Response
{
"id": "1",
"name": "example",
"description": "description",
"url": "https://example.com/",
"active": true,
"deleted": false,
"created": "2018-11-07 16:59:06",
"created_by": "user1",
"last_updated": "2018-11-07 16:59:06",
"last_updated_by": "user1"
}
Create a user
Rules
- Only admins can create other admins.
- Only API users and admins can create other API users.
Parameters
| Name | Type | Required | Default |
|---|---|---|---|
| username | string | yes | |
| password | string | yes | |
| string | yes | ||
| application_id | int | yes | |
| api | bool | no | false |
| admin | bool | no | false |
| active | bool | no | false |
Endpoint
POST /user
Payload
{
"username": "user",
"password": "password",
"email": "user@email.com",
"api": false,
"admin": false,
"active": true,
"application_id": 1
}
Response
{
"id": 1,
"username": "user",
"password": "password",
"email": "user@email.com",
"application_id": 1,
"active": true,
"deleted": false,
"api": false,
"admin": false,
"created": "2018-11-07 16:59:06",
"created_by": "temp",
"last_updated": "2018-11-07 16:59:06",
"last_updated_by": "user"
}
Get a user
Endpoint
GET /user/{id}
Response
{
"id": 1,
"username": "user",
"password": "password",
"application_id": 1,
"email": "user@email.com",
"active": true,
"deleted": false,
"api": false,
"admin": false,
"created": "2018-11-07 16:59:06",
"created_by": "temp",
"last_updated": "2018-11-07 16:59:06",
"last_updated_by": "user"
}
Update a user
Endpoint
PUT /user/{id}
Payload
{
"username": "user",
"password": "password",
"application_id": 1,
"email": "user@email.com",
"api": false,
"admin": false,
"active": true
}
Response
{
"id": 1,
"username": "user",
"password": "password",
"application_id": 1,
"email": "user@email.com",
"active": true,
"deleted": false,
"api": false,
"admin": false,
"created": "2018-11-07 16:59:06",
"created_by": "temp",
"last_updated": "2018-11-07 16:59:06",
"last_updated_by": "user"
}
Delete a user
DELETE /user/{id}
Response
200 OK
Get a application
Endpoint
GET /application/{id}
Response
{
"id": "1",
"name": "example",
"description": "description",
"url": "https://example.com/",
"active": true,
"deleted": false,
"created": "2018-11-07 16:59:06",
"created_by": "user1",
"last_updated": "2018-11-07 16:59:06",
"last_updated_by": "user1"
}
Update a application
Endpoint
PUT /application/{id}
Payload
{
"name": "changed",
"description": "description",
"url": "https://changed.com/",
"active": true
}
Response
{
"id": "1",
"name": "changed",
"description": "description",
"url": "https://changed.com/",
"active": true,
"deleted": false,
"created": "2018-11-07 16:59:06",
"created_by": "user1",
"last_updated": "2018-11-07 16:59:06",
"last_updated_by": "user1"
}
Delete a application
Endpoint
DELETE /application/{id}
Response
200 OK
List application users
Endpoint
GET /application/users/{id}
Response
[
{
"id": 1,
"username": "user1",
"password": "password",
"email": "user1@email.com",
"application_id": 1,
"active": true,
"deleted": false,
"api": false,
"admin": false,
"created": "2018-11-07 16:59:06",
"created_by": "temp",
"last_updated": "2018-11-07 16:59:06",
"last_updated_by": "user"
},
{
"id": 2,
"username": "user2",
"password": "password",
"email": "user2@email.com",
"application_id": 1,
"active": true,
"deleted": false,
"api": false,
"admin": false,
"created": "2018-11-07 16:59:06",
"created_by": "temp",
"last_updated": "2018-11-07 16:59:06",
"last_updated_by": "user"
}
]
Login
Endpoint
POST /login
Payload
{
"username": "username",
"password": "password"
}
Response
200 OK