arj*_*wal 3 spring-boot spring-cloud keycloak
我在我的应用程序中使用带有Spring-Boot的Keycloak。我的浏览器客户端请求keycloak生成JWT,然后将此JWT发送到我的ZUUL服务器,该服务器使用keycloak-spring适配器验证JWT,然后编写了预过滤器以解码JWT有效负载并提取用户名。我正在使用com.auth0.java-jwt库来解码JWT,如下面的代码片段所示
DecodedJWT dJWT=JWT.decode(header);
String username=dJWT.getClaim("preferred_username").asString();
Run Code Online (Sandbox Code Playgroud)
我想知道是否仍然可以在不使用外部库的情况下做到这一点。我想使用keycloak库显式解码JWT。我怎样才能做到这一点?
您必须将keycloak的核心库包含到您的依赖项中。
摇篮:compileOnly 'org.keycloak:keycloak-core:3.4.2.Final'
然后使用org.keycloak.RSATokenVerifier解析令牌。
例:
try
{
AccessToken token = RSATokenVerifier.create(tokenString).getToken();
System.out.printf("iss = %s%n", token.getIssuer());
System.out.printf("sub = %s%n", token.getSubject());
System.out.printf("typ = %s%n", token.getType());
}
catch (VerificationException e)
{
// some error handling
}
Run Code Online (Sandbox Code Playgroud)
您还可以通过设置公钥来激活RSATokenVerifier上的各种验证,尤其是签名验证:
RSATokenVerifier.create(tokenString).checkActive(true).publicKey(key).verify().getToken()
| 归档时间: |
|
| 查看次数: |
4411 次 |
| 最近记录: |