Class RestLoginService

java.lang.Object
at.letto.service.rest.RestClient
at.letto.login.restclient.RestLoginService
All Implemented Interfaces:
LoginService, MicroService

public class RestLoginService extends RestClient implements LoginService
  • Constructor Details

    • RestLoginService

      public RestLoginService(String baseURI)
      Erzeugt ein REST-Client Verbindung zu einem Microservice
      Parameters:
      baseURI - Basis-URI des Microservices zb: https://localhost:9091
    • RestLoginService

      public RestLoginService(String baseURI, String user, String password)
  • Method Details

    • ping

      public boolean ping()
      Description copied from interface: MicroService
      Schickt eine Ping an das Service
      Specified by:
      ping in interface MicroService
    • version

      public String version()
      Description copied from interface: MicroService
      Liefert die Version des Microservices als String
      Specified by:
      version in interface MicroService
    • info

      public String info()
      Description copied from interface: MicroService
      Liefert einen allgemeinen Informationsstring zu dem Microservice
      Specified by:
      info in interface MicroService
    • admininfo

      public AdminInfoDto admininfo()
      Description copied from interface: MicroService
      Liefert Information über das Rest-Service
      Specified by:
      admininfo in interface MicroService
    • jwtLogin

      public String jwtLogin(String username, String password, String school, String fingerprint, String ipaddress, String service, String infos, String userAgent)
      Description copied from interface: LoginService
      Prüft Benutzernamen und Passwort über das Loginservice
      Specified by:
      jwtLogin in interface LoginService
      Parameters:
      username - Benutzername
      password - Passwort unverschlüsselt
      school - Schulkennung welche auch in der URL verwendet wird (eindeutig am Server)
      fingerprint - Fingerabdruck des Users (z.B. Fingerabdruck des Smartphones)
      ipaddress - IP-Adresse des Users
      service - Service welcher die Authentifizierung anfordert, z.B. "letto-login", "letto-edit", "letto-admin" etc.
      infos - zusätzliche Informationen über den Client, wer, was, wo, warum
      userAgent - User-Agent des Clients, z.B. "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
      Returns:
      gültiger token als String oder null
    • jwtLettoLogin

      public TokenLoginResult jwtLettoLogin(String username, String password, String school, String fingerprint, String ipaddress, String service, String infos, String userAgent)
      Description copied from interface: LoginService
      Prüft Benutzernamen und Passwort über das Loginservice und liefert einen LettoToken zurück
      Specified by:
      jwtLettoLogin in interface LoginService
      Parameters:
      username - Benutzername
      password - Passwort unverschlüsselt
      school - Schulkennung welche auch in der URL verwendet wird (eindeutig am Server)
      fingerprint - Fingerabdruck des Users (z.B. Fingerabdruck des Smartphones)
      ipaddress - IP-Adresse des Users
      service - Service welcher die Authentifizierung anfordert, z.B. "letto-login", "letto-edit", "letto-admin" etc.
      infos - zusätzliche Informationen über den Client, wer, was, wo, warum
      userAgent - User-Agent des Clients, z.B. "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
      Returns:
      gültiger LettoToken oder null
    • jwtRefresh

      @Deprecated public TokenLoginResult jwtRefresh(LettoToken lettoToken)
      Deprecated.
      Description copied from interface: LoginService
      Aktualisiert einen gültigen Token
      Specified by:
      jwtRefresh in interface LoginService
      Parameters:
      lettoToken - Token der aktualisiert werden muss
      Returns:
      gültiger LeTTo-Token oder null
    • jwtRefresh

      @Deprecated public String jwtRefresh(String token)
      Deprecated.
      Description copied from interface: LoginService
      Aktualisiert einen gültigen Token
      Specified by:
      jwtRefresh in interface LoginService
      Parameters:
      token - Token der aktualisiert werden muss
      Returns:
      gültiger JWT-Token oder null
    • jwtRefresh

      public String jwtRefresh(String token, String fingerprint)
      Description copied from interface: LoginService
      Aktualisiert einen gültigen Token
      Specified by:
      jwtRefresh in interface LoginService
      Parameters:
      token - Token der aktualisiert werden muss
      Returns:
      gültiger JWT-Token oder null
    • jwtRefresh

      public TokenLoginResult jwtRefresh(LettoToken lettoToken, String fingerprint)
      Description copied from interface: LoginService
      Aktualisiert einen gültigen Token
      Specified by:
      jwtRefresh in interface LoginService
      Parameters:
      lettoToken - Token der aktualisiert werden muss
      Returns:
      gültiger LeTTo-Token oder null
    • jwtLogout

      public boolean jwtLogout(String token)
      Description copied from interface: LoginService
      Führt einen Logout des Tokens durch und vernichtet den Token im Token-Store - danach ist kein Token-Refresh dieses Tokens mehr möglich!
      Specified by:
      jwtLogout in interface LoginService
      Parameters:
      token - Token der ausgeloggt werden soll
      Returns:
      true wenn der logout erfolgreich war, sonst false
    • logout

      public boolean logout(String token, String username, String school)
      Description copied from interface: LoginService
      Entfernt alle Tokens des Benutzers sodass kein Token-Refresh für diese Tokens mehr möglich ist!
      Specified by:
      logout in interface LoginService
      Parameters:
      token - Token des Benutzers(Lehrer,Admin) der den Benutzer username ausloggen möchte
      username - Benutzername
      school - Schulenkennung welche auch in der URL verwendet wird (eindeutig am Server)
      Returns:
      true wenn der logout erfolgreich war, sonst false
    • jwtValidate

      public TokenValidationResult jwtValidate(String token, String fingerprint)
      Description copied from interface: LoginService
      Überprüft die Gültigkeit eines Tokens
      Specified by:
      jwtValidate in interface LoginService
      Parameters:
      token - Token der geprüft werden muss
      Returns:
      true wenn der Token gültig ist, sonst false
    • lettoTokenFromTokenString

      public TokenLoginResult lettoTokenFromTokenString(String token)
      Description copied from interface: LoginService
      Liefert einen kompletten LettoToken aus einem Tokenstring wenn der Token gültig ist
      Specified by:
      lettoTokenFromTokenString in interface LoginService
      Parameters:
      token - Token der geprüft werden muss
      Returns:
      gültiger LeTTo-Token oder null
    • jwtGetTempTokenUri

      public String jwtGetTempTokenUri(LettoToken lettoToken)
      Specified by:
      jwtGetTempTokenUri in interface LoginService
      Parameters:
      lettoToken - gültiger Token
      Returns:
      Liefert eine URI mit einem temporären Token zur Weiterleitung an LeTTo
    • jwtGetTempToken

      public String jwtGetTempToken(LettoToken lettoToken)
      Description copied from interface: LoginService
      Liefert aus einem gültigen Token einen Temptoken für einen neuen refreshten Token
      Specified by:
      jwtGetTempToken in interface LoginService
      Parameters:
      lettoToken - gültiger Token
      Returns:
      Temptoken
    • jwtGetTempToken

      public String jwtGetTempToken(String token)
      Description copied from interface: LoginService
      Liefert aus einem gültigen Token einen Temptoken für einen neuen refreshten Token
      Specified by:
      jwtGetTempToken in interface LoginService
      Parameters:
      token - gültiger Token
      Returns:
      Temptoken
    • jwtGetTempTokenUri

      public String jwtGetTempTokenUri(String token)
      Specified by:
      jwtGetTempTokenUri in interface LoginService
      Parameters:
      token - gültiger Token
      Returns:
      Liefert eine URI mit einem temporären Token zur Weiterleitung an LeTTo
    • tokenInfo

      public TokenInfoResponseDto tokenInfo(String token)
      Description copied from interface: LoginService
      Liefert Information über den Token
      Specified by:
      tokenInfo in interface LoginService
      Parameters:
      token - aktueller Token
      Returns:
      Information über den Token
    • getAliasToken

      public String getAliasToken(String token, String username)
      Description copied from interface: LoginService
      Liefert einen neuen Token um eine Alias-Rolle annehmen zu können
      Specified by:
      getAliasToken in interface LoginService
      Parameters:
      token - aktueller Token
      username - neuer Benutzername in der gleichen Schule für den Alias-Benutzer
      Returns:
      gültiger JWT-Token oder null
    • tempLogin

      public boolean tempLogin(String username, String tempPassword, String school, String fingerprint, String ipaddress)
      Description copied from interface: LoginService
      Schickt Benutzername, Passwort und Schule an den Endpoint und liefert ok wenn das Passwort dem Temp-Passwort entspricht ENDPOINT : LoginEndpoint.templogin
      Specified by:
      tempLogin in interface LoginService
      Parameters:
      username - Benutzername
      tempPassword - temporäres Passwort
      school - Schulkürzel
      fingerprint - Fingerabdruck des Users (z.B. Fingerabdruck des Smartphones)
      ipaddress - IP-Adresse des Users
      Returns:
      true, wenn das Passwort ok ist, ansonsten false
    • setPassword

      public boolean setPassword(String username, String school, String oldPassword, String newPassword, boolean tempPassword)
      Description copied from interface: LoginService
      Setzt ein neues Benutzerpasswort eines Users an einer Schule und liefert ok wenn das Passwort gesetzt wurde ENDPOINT : LoginEndpoint.setpassword
      Specified by:
      setPassword in interface LoginService
      Parameters:
      username - Benutzername
      school - Schulkürzel
      oldPassword - altes Passwort
      newPassword - neues Passwort
      tempPassword - true wenn das alte Passwort das Temp-Passwort ist, false wenn es das aktuelle normale Passwort ist
      Returns:
      true wenn das Passwort korrekt gesetzt werden konnte
    • jwtTokenFromTempToken

      public String jwtTokenFromTempToken(String tempToken, String serverSecret)
      Description copied from interface: LoginService
      Liefert einen gültigen JWT-Token aus einem gültigen TempToken
      Specified by:
      jwtTokenFromTempToken in interface LoginService
      Parameters:
      tempToken - tempToken der über Get-mitgeschickt wurde
      serverSecret - gemeinsames Secret des Servers ( Nicht das JWT-Secret!!)
      Returns:
      gültiger JWT-Token
    • pingStudent

      public boolean pingStudent(String token)
      Specified by:
      pingStudent in interface LoginService
    • pingTeacher

      public boolean pingTeacher(String token)
      Specified by:
      pingTeacher in interface LoginService
    • pingAdmin

      public boolean pingAdmin(String token)
      Specified by:
      pingAdmin in interface LoginService
    • getServerToken

      public String getServerToken(GetServerTokenRequest request)
      Description copied from interface: LoginService
      Erzeugt einen neuen Servertoken mit dem Login-Service entsprechend den Angaben im Request
      Endpoint ist User-Authentificatet als User admin
      Specified by:
      getServerToken in interface LoginService
      Parameters:
      request - Konfigration des neuen ServerTokens
      Returns:
      neuen Servertoken als String
    • getServerTokenList

      public ServerTokenListDto getServerTokenList()
      Description copied from interface: LoginService
      Liefert eine Liste aller Token die erzeugt wurden und noch gültig sind
      Specified by:
      getServerTokenList in interface LoginService
      Returns:
      Liste der Tokenstrings
    • removeServerToken

      public boolean removeServerToken(long tokenID)
      Description copied from interface: LoginService
      deaktiviert einen bestehenden Token indem er von der Liste gelöscht wird.
      Specified by:
      removeServerToken in interface LoginService
      Parameters:
      tokenID - Token-ID des Token
      Returns:
      true wenn es funktioniert hat
    • activateServerToken

      public boolean activateServerToken(long tokenID)
      Description copied from interface: LoginService
      aktiviert einen bestehenden Token .
      Specified by:
      activateServerToken in interface LoginService
      Parameters:
      tokenID - Token-ID des Token
      Returns:
      true wenn es funktioniert hat
    • deactivateServerToken

      public boolean deactivateServerToken(long tokenID)
      Description copied from interface: LoginService
      deaktiviert einen bestehenden Token durch eine Markierung .
      Specified by:
      deactivateServerToken in interface LoginService
      Parameters:
      tokenID - Token-ID des Token
      Returns:
      true wenn es funktioniert hat
    • loadServerToken

      public GeneratedServerToken loadServerToken(long tokenID)
      Description copied from interface: LoginService
      Liefert wichtige Informationen zu einem gültigen ServerToken
      Specified by:
      loadServerToken in interface LoginService
      Parameters:
      tokenID - Token-ID des Token
      Returns:
      Informationen über den Token
    • refreshServerToken

      public String refreshServerToken(String oldTokenString)
      Description copied from interface: LoginService
      aktualisiert eine bestehenden Servertoken
      Specified by:
      refreshServerToken in interface LoginService
      Parameters:
      oldTokenString - alter Servertoken
      Returns:
      neuer Servertoken oder Leerstring wenn nicht erfolgreich
    • serverTokenInfo

      public HashMap<String,String> serverTokenInfo(String serverTokenString)
      Description copied from interface: LoginService
      Liefert wichtige Informationen zu einem gültigen ServerToken
      Specified by:
      serverTokenInfo in interface LoginService
      Parameters:
      serverTokenString - ServerToken
      Returns:
      Informationen über den Token
    • getUserToken

      public String getUserToken(String serverTokenString, String userTokenFremd, String language, String backlink, boolean tempToken, String fingerprint, String ipaddress)
      Description copied from interface: LoginService
      Erzeugt einen neuen UserToken auf dem Remote-Server mit dem auf den Remotserver zugegriffen werden kann
      Specified by:
      getUserToken in interface LoginService
      Parameters:
      serverTokenString - ServerToken für die Verbindung zum Fremdserver
      userTokenFremd - lokaler User-Token
      language - Sprache welche verwendet werden soll
      backlink - Link welcher zurück zum Fremdserver führt
      tempToken - true wenn ein TempToken statt einem UserToken erzeugt werden soll
      fingerprint - Fingerabdruck des Users (z.B. Fingerabdruck des Smartphones)
      ipaddress - IP-Adresse des Users
      Returns:
      UserToken oder Temptoken
    • getUserTokenDirect

      public String getUserTokenDirect(UserTokenRequestDto userTokenRequestDto)
      Description copied from interface: LoginService
      Erzeugt einen neuen UserToken auf dem Remote-Server mit dem auf den Remotserver zugegriffen werden kann
      Specified by:
      getUserTokenDirect in interface LoginService
      Parameters:
      userTokenRequestDto - ServerToken für die Verbindung zum Fremdserver und Benutzerdaten
      Returns:
      UserToken auf dem Remote-Server
    • createMessage

      public String createMessage(String sender, String receiver, String topic, Object message, long lifetimeSeconds, boolean single, String messageSecret)
      Generiert eine Nachricht an ein Service welche in der REDIS-Datenbank gespeichert wird
      Specified by:
      createMessage in interface LoginService
      Parameters:
      sender - Kennung des Senders
      receiver - Kennung des Empfängers
      topic - Thema der Nachricht
      message - Nachricht als Objekt welches als JSON gespeichert wird!!
      lifetimeSeconds - Lebensdauer der Nachricht in Sekunden bis sie gelöscht wird
      single - true wenn die Nachricht nur einmal abgeholt werden kann und dann sofort gelöscht wird
      messageSecret - Secret damit nur Services eine Nachricht senden können welche das Secret kennen. - Sollte das ServerSecret sein!!
      Returns:
      Kennung der Nachricht als String welcher auch als get-Parameter verwendet werden kann
    • getMessage

      public MessageDto getMessage(String messageID)
      Lädt eine Nachricht aus der REDIS-Datenbank und löscht falls sie single ist sofort
      Specified by:
      getMessage in interface LoginService
      Parameters:
      messageID - Kennung der Nachricht
      Returns:
      Nachricht als Object oder null wenn die Nachricht nicht existiert