@ 当机密的OIDC客户端需要向keycloak发送请求(比如请求token, refresh token),就需要被Keycloak验证。有两种方法:
- Clinet ID和Client Secret
这是传统的OAuth2方式
secret是从keycloak admin console生成的,放到adapter配置的credentials里
1 | "credentials": |
- Client authentication with signed JWT
这是基于RFC7523,工作原理:
- 客户端需要有private key和certificate。这可以从keystore文件获取。
- 当客户度启动,它允许你从http://myhost/myapp/k_jwks 下载public key。
- 在验证过程中,客户端用private key签名,生成JWT token,用client_assertion参数发给keycloak
- keycloak必须有public key或客户端的certificate,用来验证JWT的签名。在keycloak admin console, client,Credentials页签,需要把验证方式改为Signed JWT。可以设置JWKS URLhttp://myhost/myapp/k_jwks 。这样keycloak会自动下载新的key。
- 也可以上传jks文件,也可以在admin console生成新文件,放到客户端里。
在keycloak.json文件里:
1 | "credentials": { |
如果不用classpath:,可以指定任意路径的文件
@ 增加自己的客户端验证方式
需要实现客户端和服务端的providers在Server Developer Guide的Authentication SPI有详细介绍。