如何验证基于tomcat的keycloak的accesstoken ?



我想验证从keycloak中检索到的访问令牌。

目标应用程序完全基于Tomcat。Spring Boot框架不涉及,不应该作为依赖项拉出。

存在哪些选项来验证accesstoken?

首先将依赖项添加到您的pom

<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-tomcat-adapter</artifactId>
<version>x.x.x</version>

你应该使用哪个版本取决于两件事:

  1. keycloak的版本和
  2. 您正在使用的tomcat库的版本。

对于我们的示例,版本+16就足够了。

接下来,您需要配置KeycloakDeployment。

HttpClientBuilder clientBuilder = new HttpClientBuilder();
HttpClient client = clientBuilder.build();
AdapterConfig config = new AdapterConfig();
// pointing to your keycloak
config.setAuthServerUrl(url);
JWKPublicKeyLocator locator = new JWKPublicKeyLocator();
KeycloakDeployment deployment = new KeycloakDeployment();
// for sending requests
deployment.setClient(client);
deployment.setAuthServerBaseUrl(config);
// to store your public key
deployment.setPublicKeyLocator(locator);
// how long settings should live in your cache
deployment.setPublicKeyCacheTtl(ttl);
deployment.setRealm(realm);

最后,您可以检查您的令牌。

TokenVerifier<JsonWebToken> verifier = AdapterTokenVerifier
.createVerifier(token, deployment, true, JsonWebToken.class);
verifier.verify();

这段代码做什么?

它将动态地从所服务的auth-server及其域中提取公钥。密钥将存储在缓存中,只有在缓存的ttl过期时才会再次提取。然后将根据keycloak部署检查交付的令牌,并验证令牌签名。

最新更新