Sign inSign up

semtech/mu-login-service

By semtech

Updated over 3 years ago

Login microservice using a triple store in the backend

Image
2

3.0K

semtech/mu-login-service repository overview

Login microservice

Login microservice running on mu.semte.ch.

Tutorials

Add the login service to a stack

Add the following snippet to your docker-compose.yml to include the login service in your project.

login:
  image: semtech/mu-login-service:2.9.0
  links:
    - database:database

The triplestore used in the backend is linked to the login service container as database.

Next, add the following rules in ./config/dispatcher/dispatcher.ex to dispatch requests to the login service. E.g.

  match "/sessions/*path", @any do
    Proxy.forward conn, path, "http://login/sessions/"
  end

The host login in the forward URL reflects the name of the login service in the docker-compose.yml file as defined above.

More information how to setup a mu.semte.ch project can be found in mu-project.

Reference

Configuration

The following enviroment variables can be set on the login service:

  • USERS_GRAPH : graph in which the person and account resources will be stored. E.g. http://mu.semte.ch/graphs/users. Defaults to http://mu.semte.ch/application.
  • SESSIONS_GRAPH : graph in which the session resources will be stored. E.g. http://mu.semte.ch/graphs/sessions. Defaults to http://mu.semte.ch/application.
  • MU_APPLICATION_SALT : strengthen the password hashing by configuring an application wide salt. This salt will be concatenated with a salt generated per user to hash the user passwords. By default the application wide salt is not set. If you configure this salt, make sure to configure the registration microservice with the same salt. Setting the salt makes account resources non-shareable with stacks containing a login-service configured with another salt.
Model

This section describes the minimal required model for the login service. These models can be enriched with additional properties and/or relations.

The graphs is which the resources are stored, can be configured via environment variables.

Used prefixes
Accounts
Class

foaf:OnlineAccount

Properties
NamePredicateRangeDefinition
accountNamefoaf:accountNamexsd:stringAccount name / nickname
passwordaccount:passwordxsd:stringHashed password of the account
saltaccount:saltxsd:stringSalt used to hash the password
statusaccount:statusrdfs:ResourceStatus of the account. Only active (<http://mu.semte.ch/vocabularies/account/status/active>) accounts are taken into account on login.
Sessions
Class

None

Properties
NamePredicateRangeDefinition
accountsession:accountfoaf:OnlineAccountAccount related to the session
API
POST /sessions

Log in, i.e. create a new session for an account specified by its nickname and password.

Request body
{
  "data": {
    "type": "sessions",
    "attributes": {
      "nickname": "john_doe",
      "password": "secret"
    }
  }
}
Response
201 Created

On successful login with the newly created session in the response body:

{
  "links": {
    "self": "sessions/current"
  },
  "data": {
    "type": "sessions",
    "id": "b178ba66-206e-4551-b41e-4a46983912c0"
  },
  "relationships": {
    "account": {
      "links": {
        "related": "/accounts/f6419af0-c90f-465f-9333-e993c43e6cf2"
      },
      "data": {
        "type": "accounts",
        "id": "f6419af0-c90f-465f-9333-e993c43e6cf2"
      }
    }
  }
}
400 Bad Request
  • if session header is missing. The header should be automatically set by the identifier.
  • if combination of nickname and password is incorrect.
  • if account is inactive.
DELETE /sessions/current

Log out the current user, i.e. remove the session associated with the current user's account.

Response
204 No Content

On successful logout

400 Bad Request

If session header is missing or invalid. The header should be automatically set by the identifier.

Tag summary

Content type

Image

Digest

sha256:96cbcd7cc

Size

346.2 MB

Last updated

over 3 years ago

docker pull semtech/mu-login-service