Skip to main content

Authentifizierung

Überblick

Generell

Da das Backend auf Spring (Boot) basiert, können dort alle Authentifizierungsmechanismen verwendet werden, die Spring bereitstellt.

JWT Token (JSON Web Token)

Das jadice web toolkit selbst bietet keine direkte Möglichkeit, ein JWT Token zu validieren. Hierfür kann Backend-seitig Spring Security verwendet werden.

Soll der Viewer ein JWT Token verwenden, um sich an einem Archiv-Backend zu authentifizieren, können hierfür die folgenden Schnittstellen verwendet werden:

Client (TypeScript/Angular)

ServerConnection.get().setAuthenticationInfo("eY...")

bzw.

Client (GWT)

import com.levigo.jadice.web.conn.client.ServerConnection;
...
ServerConnection.get().setAuthenticationInfo("eY...");

Um dieses Token im Backend verwenden zu können, wird die Client-ID benötigt. Der DocumentDataProvider muss hierfür auf eine Factory umgestellt werden.

Vorher

@UriScheme({"http", "https"})
@Component
public class HttpSchemeDocumentDataProvider implements UriBasedDocumentDataProvider {


@Override
public void read(Reader reader, UriSource source) throws JadiceException, IOException {
// Read from HTTP Endpoint
//...
}

Nachher

public class HttpSchemeDocumentDataProvider implements UriBasedDocumentDataProvider {

private String token;

public HttpSchemeDocumentDataProvider(String token) {
this.token = token;
}

@Override
public void read(Reader reader, UriSource source) throws JadiceException, IOException {
// Read from HTTP Endpoint with this.token
}
@Component
@UriScheme({"http", "https"})
public class HttpSchemeDocumentDataProviderFactory implements ContextualFactory<HttpSchemeDocumentDataProvider> {

@Override
public HttpSchemeDocumentDataProvider create(InvocationContext context) {
HttpSession session = null;
String token = AuthenticationInfoManager.getInstance().getAuthenticationInfo(context.getClientId());
if (context instanceof TransportInvocationContext transportInvocationContext) {
session = transportInvocationContext.getSession();
// Could do some stuff with HTTP session here
}
return new HttpSchemeDocumentDataProvider(token);
}
}