Class BearerAuthenticator


  • public class BearerAuthenticator
    extends Authenticator
    Die Klasse Authenticator authentifziert gemäß OAuth-Spezifikation "The OAuth 2.0 Authorization Framework: Bearer Token Usage" https://datatracker.ietf.org/doc/html/rfc6750 weitere Info-Links https://www.oauth.com/oauth2-servers/making-authenticated-requests/refreshing-an-access-token/ https://swagger.io/docs/specification/authentication/bearer-authentication/
    • Constructor Detail

      • BearerAuthenticator

        public BearerAuthenticator()
    • Method Detail

      • login

        public LoginResponse login​(HttpExchange e,
                                   String userId,
                                   String password)
        Anmelden
        Parameters:
        userId - die Kennung des Benutzers
        password - das Kennwort des Benutzers
        Returns:
        Token oder null, wenn die Anmeldung misslang
      • validateRefreshToken

        public String validateRefreshToken​(String refreshToken)
        Bis auf weiteres wird hier der Token nur darauf geprueft, ob er ein gueltiger JWT ist, der mit dem Schluessel dieses Authenticators erzeugt wurde. Evtl. wird es in Zukunft noch noetig, weitere Kriterien einzubauen, z.B. ob er zu einem Token aussgegeben wurde, der noch gilt.
        Parameters:
        refreshToken -
        Returns:
        die Benutzerkennung aus dem Refresh Token, wenn der Refresh Token fuer einen Token Refresh akzeptiert wird, null wenn nicht.
      • getWWWAuthRealm

        protected String getWWWAuthRealm​(HttpExchange exchange)
        Den Eintrag fuer das 'realm'-Attribut im WWW-Authenticate Header bestimmen
        Parameters:
        exchange -
        Returns:
        den Ausdruck fuer den WWW-Authenticate Header
      • getPrincipalAuthRealm

        protected String getPrincipalAuthRealm​(HttpExchange exchange)
        Den Namen des Realms bestimmen, wie er fuer authentifizierte Benutzer vom Principal ausgegeben wird
        Parameters:
        exchange -
        Returns:
        den Namen des Realms
      • unauthorizedExpired

        protected Authenticator.Result unauthorizedExpired​(HttpExchange exchange)
        Wenn die Anfrage eine Token enthaelt, der gemaess setRefreshSeconds abgelaufen ist und einen Refresh erfordert. HTTP/1.1 401 Unauthorized WWW-Authenticate: Bearer realm="example", error="invalid_token", error_description="The access token expired"
        Parameters:
        exchange -
        Returns:
      • unauthorized

        protected Authenticator.Result unauthorized​(HttpExchange exchange)
        Wenn die Anfrage keinen Token enthaelt HTTP/1.1 401 Unauthorized WWW-Authenticate: Bearer realm="example"
        Parameters:
        exchange -
        Returns:
        das Ergebnis
      • setRealm

        public void setRealm​(de.uhilger.httpserver.auth.realm.Realm realm)
        Den Realm dieses Authenticators setzen
        Parameters:
        realm - der Realm
      • hasRole

        public boolean hasRole​(String userId,
                               String roleId)
        Pruefen, ob ein Nutzer eine Rolle hat
        Parameters:
        userId - die Kennung des Nutzers
        roleId - die Rollen-ID des Nutzers
        Returns:
        true, wenn der Nutzer die Rolle hat, false wenn nicht
      • setWWWAuthRealm

        public void setWWWAuthRealm​(String wwwAuthRealm)
        Den Eintrag fuer das 'realm'-Attribut zur Nutzung im WWW-Authenticate Header setzen
        Parameters:
        wwwAuthRealm - der Text fuer das realm-Attribut im WWW-Autehnticate-Header
      • setPrincipalAuthRealm

        public void setPrincipalAuthRealm​(String principalAuthRealm)
        Den Namen des Realms setzen, wie er fuer authentifizierte Benutzer vom Principal ausgegeben werden soll
        Parameters:
        principalAuthRealm - der Name des Realms fuer authentifizierte Benutzer
      • setExpireSeconds

        public void setExpireSeconds​(long seconds)
        Die Dauer der Gueltigkeit einer Authentifizierung in Sekunden
        Parameters:
        seconds - die Sekunden, nach denen die Authentifizierung ungueltig wird
      • setRefreshSeconds

        public void setRefreshSeconds​(long seconds)
        Die Dauer bis eine Authentifizierung eine Erneuerung benoetigt in Sekunden
        Parameters:
        seconds - die Sekunden, nach denen die Authentifizierung eine Erneuerung benoetigt
      • setRefreshExpireSeconds

        public void setRefreshExpireSeconds​(long seconds)
        Die Dauer der Gueltigkeit eines Refresh-Token in Sekunden
        Parameters:
        seconds - die Anzhal Sekunden, die ein Refresh-Token gueltig ist