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);
}
}