Skip to content

Commit

Permalink
Added oidc cache extension template
Browse files Browse the repository at this point in the history
Signed-off-by: Cem Nura <[email protected]>
  • Loading branch information
cemnura committed Oct 3, 2021
1 parent fdb9f5e commit dda8d67
Show file tree
Hide file tree
Showing 8 changed files with 183 additions and 0 deletions.
5 changes: 5 additions & 0 deletions bom/application/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -723,6 +723,11 @@
<artifactId>quarkus-oidc</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-oidc-cache</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-test-oidc-server</artifactId>
Expand Down
43 changes: 43 additions & 0 deletions extensions/oidc-cache/deployment/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-oidc-cache-parent</artifactId>
<version>999-SNAPSHOT</version>
</parent>
<artifactId>quarkus-oidc-cache-deployment</artifactId>
<name>Quarkus - OpenID Cache - Deployment</name>
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-arc-deployment</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-oidc-cache</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5-internal</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-extension-processor</artifactId>
<version>${project.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package io.quarkus.oidc.cache.deployment;

import io.quarkus.arc.deployment.AdditionalBeanBuildItem;
import io.quarkus.deployment.Capabilities;
import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.deployment.builditem.FeatureBuildItem;
import io.quarkus.oidc.runtime.CacheTokenStateManager;

class OidcCacheProcessor {

private static final String FEATURE = "oidc-cache";

@BuildStep
FeatureBuildItem feature() {
return new FeatureBuildItem(FEATURE);
}

AdditionalBeanBuildItem cacheTokenStateManager(Capabilities capabilities) {

AdditionalBeanBuildItem.Builder builder = AdditionalBeanBuildItem.builder().setUnremovable();

builder.addBeanClass(CacheTokenStateManager.class);

return builder.build();
}

}
19 changes: 19 additions & 0 deletions extensions/oidc-cache/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-extensions-parent</artifactId>
<version>999-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>quarkus-oidc-cache-parent</artifactId>
<packaging>pom</packaging>
<name>Quarkus - OpenID Cache - Parent</name>
<modules>
<module>deployment</module>
<module>runtime</module>
</modules>
</project>
46 changes: 46 additions & 0 deletions extensions/oidc-cache/runtime/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-oidc-cache-parent</artifactId>
<version>999-SNAPSHOT</version>
</parent>
<artifactId>quarkus-oidc-cache</artifactId>
<name>Quarkus - OpenID Cache - Runtime</name>
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-arc</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-oidc</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-cache</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-bootstrap-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-extension-processor</artifactId>
<version>${project.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package io.quarkus.oidc.runtime;

import io.quarkus.cache.CacheInvalidate;
import io.quarkus.cache.CacheKey;
import io.quarkus.cache.CacheResult;
import io.quarkus.oidc.AuthorizationCodeTokens;
import io.quarkus.oidc.OidcRequestContext;
import io.quarkus.oidc.OidcTenantConfig;
import io.quarkus.oidc.TokenStateManager;
import io.smallrye.mutiny.Uni;
import io.vertx.ext.web.RoutingContext;

import javax.enterprise.context.ApplicationScoped;

@ApplicationScoped
public class CacheTokenStateManager implements TokenStateManager {
@Override
public Uni<String> createTokenState(RoutingContext routingContext, OidcTenantConfig oidcConfig, AuthorizationCodeTokens tokens, OidcRequestContext<String> requestContext) {
return TokenStateManager.super.createTokenState(routingContext, oidcConfig, tokens, requestContext);
}

@Override
@CacheResult(cacheName = "tokenState")
public Uni<AuthorizationCodeTokens> getTokens(RoutingContext routingContext, OidcTenantConfig oidcConfig, @CacheKey String tokenState, OidcRequestContext<AuthorizationCodeTokens> requestContext) {
return TokenStateManager.super.getTokens(routingContext, oidcConfig, tokenState, requestContext);
}

@Override
@CacheInvalidate(cacheName = "tokenState")
public Uni<Void> deleteTokens(RoutingContext routingContext, OidcTenantConfig oidcConfig, @CacheKey String tokenState, OidcRequestContext<Void> requestContext) {
return TokenStateManager.super.deleteTokens(routingContext, oidcConfig, tokenState, requestContext);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
name: Oidc Cache
#description: OpenID Cache ...
metadata:
# keywords:
# - oidc-cache
# guide: ...
# categories:
# - "miscellaneous"
# status: "preview"
1 change: 1 addition & 0 deletions extensions/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@
<module>smallrye-jwt</module>
<module>oidc-common</module>
<module>oidc</module>
<module>oidc-cache</module>
<module>oidc-token-propagation</module>
<module>oidc-client</module>
<module>oidc-client-filter</module>
Expand Down

0 comments on commit dda8d67

Please sign in to comment.