30 Oct 2020

Externalized Authorization using OPA and Spring Security

While OAuth2 and OIDC have become the de-facto standard for authentication and are very popular, existing authorization standards (e.g. XACML, UMA) are difficult to implement and even use, so developers continue to roll their own solutions, which is time-consuming and increases maintenance costs.
In this tutorial, we are going to look at how to simplify authorization by externalizing access control decisions using Open Policy Agent and Spring Security.

26 Jan 2020

Authorization Code Flow with PKCE in Spring Security OAuth

RFC 7636: Proof Key for Code Exchange (PKCE, pronounced “pixy”) describes an extension to the Authorization Code flow to protect public clients from authorization code interception attack.
In this tutorial, we are going to look at how to implement this extension in an OAuth 2.0 authorization server built using Spring Security OAuth, which does not support it out of the box.

24 Nov 2019

Client-Side Load Balancing in gRPC Java

Load balancing is the process of distributing network traffic between multiple servers, used to improve the performance and reliability of websites, applications, databases and other services. Using a centralized load balancer is the most traditional approach for this, but client-side load balancing still has some advantages and is also quite common.
In this tutorial, we are going to look at how to implement client-side load balancing in gRPC Java client.

19 Oct 2019

Unified GraphQL API for gRPC microservices using Rejoiner and Spring Boot

Rejoiner is a fairly young framework with the goal of bringing together two powerful and increasingly popular technologies, GraphQL and gRPC. It creates a unified GraphQL schema for gRPC microservices and provides DSL to modify it.
In this tutorial, we are going to create several gRPC microservices and see how we can use Rejoiner to expose them via a single GraphQL API.

28 Sep 2019

Schema-based multi-tenancy with Spring Data, Hibernate and Flyway

Multi-tenancy is an architectural pattern that allows multiple tenants to use a single instance of software, the purpose of which is to provide each tenant with a dedicated share of the instance but to isolate the information belonging to each tenant.
In this tutorial, we are going to look at how to implement schema-based multi-tenancy in Spring Boot application.