我想验证从keycloak检索到的访问令牌。
目标应用程序完全基于Tomcat。Spring框架不涉及,也不应作为依赖关系来提取。
是否存在哪些选项来验证该资源?
发布于 2022-06-14 04:53:11
首先将依赖项添加到pom中。
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-tomcat-adapter</artifactId>
<version>x.x.x</version>
您应该使用哪个版本取决于两件事:
对于我们的例子,一个版本+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服务器及其领域中提取公钥。密钥将存储在缓存中,只有在缓存的ttl过期时才会再次被提取。然后,将根据keycloak部署检查交付的令牌,并验证令牌签名。
https://stackoverflow.com/questions/72617327
复制