BOM-Dateien mit Gradle benutzen

Dieser Blog-Post soll einen kurzen Überblick darüber geben, was BOMs sind, warum man diese verwenden möchte und wie dies mit Gradle funktioniert.

Was ist eine BOM?

Bei einer BOM (Bill Of Materials) handelt es sich um eine Maven POM, welche einen <dependencyManagement> Block enthält. Mithilfe von diesem können für Abhängigkeiten deren Version festgelegt werden.

Continue reading
Posted in Build, config and deploy | Tagged | Leave a comment

Gradle 5.1

Vor einigen Wochen wurde Gradle 5.1 fertiggestellt. Zeit, sich einmal kurz die drei wichtigsten Änderungen (für Java Entwickler) anzuschauen.

Continue reading
Posted in Build, config and deploy | Tagged | Leave a comment

Grpc als Alternative zu REST

Wenn es darum geht, eine Technologie auszuwählen, um eine API zu bauen, wird heutzutage oft ohne weiter zu evaluieren REST gewählt. Es gibt auch viele gute Gründe, warum REST der De-Facto-Standard für APIs ist. Es gibt jedoch Fälle, in denen auch andere Technologien einen Blick wert sind.

Im folgenden stelle ich GRPC als Alternative vor.

Continue reading
Posted in SOA / Webservices | Tagged , , | Leave a comment

OAuth2 mit Java: Versenden eines Tweets über die Twitter-API

In diesem Artikel werden die Grundlagen zu OAuth2 und das Setup einer OAuth2-Anwendung aus den letzten Artikeln anhand eines neuen Beispiels angewendet. Das beispielhafte Java-Programm in diesem Artikel soll sich automatisch bei Twitter authentifizieren und anschließend einen Tweet versenden können. Der Benutzer kann die Authentifizierungs-Anfrage bestätigen und den Authorization Code an das Programm weitergeben, welches ihn dann ein Access-Token umtauschen kann.

Continue reading
Posted in Web as a Platform | Tagged , , , | Leave a comment

OAuth2 – PKCE

PKCE ist eine Erweiterung von OAuth2, um die Authorization-Code Methode in Szenarien verwenden zu können, bei denen Nachrichten auf dem Rückkanal abgefangen werden könnten. Dies kann etwa bei Public Clients auf Smartphones der Fall sein.

Zur Wiederholung: Ein Client gilt als Confidential Client, wenn er kryptographische Geheimnisse bewahren kann und nicht, wie etwa bei einer reinen JavaScript-Anwendung, im Klartext vorliegt. Ein Public Client kann dagegen keine Geheimnisse bewahren.

PKCE erweitert das allgemeine Authorization-Code-Verfahren, welches bereits in diesem Blog-Post beschrieben wurde. Es beinhaltet zwei Stufen: Zunächst wird ein Authorization-Code angefordert, welcher dann im nächsten Schritt gegen ein Access-Token getauscht wird. Mit diesem Access-Token kann dann auf die API zugegriffen werden.
Continue reading

Posted in Security | Tagged , , , | Leave a comment

OAuth2 in der Praxis: Anwendungssetup mit GitHub

OAuth2 ist inzwischen sicherlich einigen Lesern ein Begriff. Dazu beigetragen haben auch die vorherigen Artikel auf diesem Blog zu Single-Sign-On allgemein und OAuth2 im Konkreten. Daher soll in diesem Artikel einmal das grundlegende Setup einer OAuth2-Anwendung am Beispiel der GitHub-OAuth2-API durchgespielt werden.

Setup einer OAuth2-Anwendung

Um eine OAuth2-Anwendung aufzusetzen, muss diese zunächst beim betreffenden Service (in diesem Beispiel GitHub) registriert werden. Dabei wird neben einem Namen für die Anwendung und einer Website auch eine Callback-URL angegeben. Anschließend wird dann die öffentliche ClientId und ein privates Client Secret generiert. ClientId und Client Secret müssen der entsprechenden Client-Anwendung natürlich mitgeteilt werden, damit diese sich authentifizieren kann. Ein Beispiel, wie dieses Setup aussehen könnte, ist im folgenden, reduzierten Screenshot von GitHub zu sehen:

GitHub: Setup einer OAuth2-App

GitHub: Setup einer OAuth2-App

Continue reading

Posted in Security | Tagged , , , | 1 Comment

How to use JUnit 5 @MethodSource-parameterized tests with Kotlin

When you use JUnit 5 for writing unit tests for your Kotlin code, there are a few things to be aware of to make this work smoothly. One of those things affect parameterized tests with @MethodSource. In this blog post, I’m going to show you an error you might encounter in such a setup and how to work around it. The current Kotlin version used is 1.3 and for JUnit it is 5.3.1.

Continue reading

Posted in Other languages for the Java VM | Tagged , | 6 Comments