Spring boot 如何在keydove中的签名JWT中获得client_断言

Spring boot 如何在keydove中的签名JWT中获得client_断言,spring-boot,jwt,keycloak,jwe,Spring Boot,Jwt,Keycloak,Jwe,我尝试使用签名JWT登录,我遵循以下示例 但是,当我尝试使用以下脚本获取带有curl的令牌时 KC_USERNAME=root KC_PASSWORD=casiopea KC_CLIENT_ID=jweclient KC_CLIENT_SECRET=418d630c-44cb-4f11-9dcc-a0c72dfc9f85 KC_ISSUER=http://localhost:8080/auth/realms/jwedemo KC_RESPONSE=$( curl -d “client_id=$

我尝试使用签名JWT登录,我遵循以下示例

但是,当我尝试使用以下脚本获取带有curl的令牌时

KC_USERNAME=root
KC_PASSWORD=casiopea
KC_CLIENT_ID=jweclient
KC_CLIENT_SECRET=418d630c-44cb-4f11-9dcc-a0c72dfc9f85
KC_ISSUER=http://localhost:8080/auth/realms/jwedemo

KC_RESPONSE=$(
curl
-d “client_id=$KC_CLIENT_ID”
-d “client_secret=$KC_CLIENT_SECRET”
-d “username=$KC_USERNAME”
-d “password=$KC_PASSWORD”
-d “client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer”
-d “grant_type=password”
-d “scope=profile openid”
-d “client_assertion=eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIyZTJlOWU4NC04Y2UxLTQ5NWEtOGY5Zi1jMWNiNDNhYmY5NzQifQ.eyJleHAiOjAsImlhdCI6MTU4OTgyMzEyMSwianRpIjoiOTg2NjVjYWYtY2RmMy00Y2JkLTgxYzUtODBiNGY3MWNmZDJhIiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwL2F1dGgvcmVhbG1zL2p3ZWRlbW8iLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjgwODAvYXV0aC9yZWFsbXMvandlZGVtbyIsInR5cCI6IlJlZ2lzdHJhdGlvbkFjY2Vzc1Rva2VuIiwicmVnaXN0cmF0aW9uX2F1dGgiOiJhdXRoZW50aWNhdGVkIn0.O0TG-CwW0vnyokrhzK9k3QKkt5n71P6FUheBD4hTpG8”
“$KC_ISSUER/protocol/openid-connect/token”
)
echo $KC_RESPONSE | jq -C .
总是扔

{ “错误”:“未经授权的\u客户端”, “错误描述”:“使用签名JWT的客户端身份验证失败:无法识别客户端。JWT令牌上缺少颁发者” }
我不知道如何获取client_断言,我尝试了不同的方法,但它不起作用。

您的client_断言缺少'sub'声明,其值应为'client_id'


位于的文档帮助我找到此api所需的声明。

您的客户端声明缺少“sub”声明,其值应为“client\u id”

上的文档帮助我找到了此api所需的声明