authenticator

module
v0.0.0-...-400427c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 25, 2019 License: GPL-3.0

README

authenticator

An authentication server.

Table of Contents

  1. Technologies

  2. Authentication

  3. API

    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.1. List application users

    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

  1. Only API users can create applications.

Parameters

Name Type Required
name string yes
description string yes
email 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

  1. Only admins can create other admins.
  2. Only API users and admins can create other API users.

Parameters

Name Type Required Default
username string yes
password string yes
email 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

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL