Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java keydepeat:使用新创建的客户端和用户获取JWT_Java_Jboss_Jwt_Keycloak_Keycloak Services - Fatal编程技术网

Java keydepeat:使用新创建的客户端和用户获取JWT

Java keydepeat:使用新创建的客户端和用户获取JWT,java,jboss,jwt,keycloak,keycloak-services,Java,Jboss,Jwt,Keycloak,Keycloak Services,使用Java中的keydape管理客户端,我成功地创建了一个新客户端和一个新用户。但是,我似乎无法使用用户为客户端获取JWT 这是我的密码: //创建一个具有管理员权限的keydepot实例 钥匙斗篷钥匙斗篷= keydeposebuilder.builder() .serverUrl(“http://localhost:8080/auth") .grantType(OAuth2Constants.PASSWORD) .realm(“主”) .用户名(“管理员”) .密码(“adminPass”

使用Java中的
keydape管理客户端
,我成功地创建了一个新客户端和一个新用户。但是,我似乎无法使用用户为客户端获取JWT

这是我的密码:

//创建一个具有管理员权限的keydepot实例
钥匙斗篷钥匙斗篷=
keydeposebuilder.builder()
.serverUrl(“http://localhost:8080/auth")
.grantType(OAuth2Constants.PASSWORD)
.realm(“主”)
.用户名(“管理员”)
.密码(“adminPass”)
.clientId(“管理cli”)
.resteasyClient(新的ResteasyClientBuilderImpl().connectionPoolSize(10.build())
.build();
//编辑:创建领域“测试领域”
RealmRepresentation realmRep=新的RealmRepresentation();
realmRep.setRealm(“测试领域”);
realmRep.setEnabled(真);
keydape.realms().create(realmRep);
//创建客户端“测试客户端”
ClientRepresentation clientrepress=新的ClientRepresentation();
clientRep.setClientId(“测试客户端”);
clientRep.setSecret(UUID.randomuid().toString());
clientRep.setProtocol(“openid连接”);

//好吧,我的代码有多个问题。这些都是我必须做的事情来解决我的问题:

  • 我必须创建一个新的领域,而不是试图从默认的
    master
    领域获取JWT访问令牌。
  • 我的用户/客户端未启用。
    • clientRep.setEnabled(true)
    • userRep.setEnabled(true)
  • 我的客户是
    仅持币人
    ,只验证代币,不授予代币。
    • 可以使用
      public
      client(默认)或使用
      clientRep.setPublicClient(false)将其保密

  • .grantType(OAuth2Constants.PASSWORD)
    听起来您想使用直接访问授权流,但我看不到您的
    测试客户端中允许使用该流(
    clientRep
    )。这是一个很好的建议,但我尝试了这个,不幸的是,我仍然得到了
    400
    。我以后可能还需要它,所以我会留着以防万一。我发现了这个,我猜我可能需要创建一个新的领域。如果我理解链接答案的问题,您无法从
    master
    领域获得JWT。我尝试使用
    master
    以外的领域,有一段时间我认为我走对了,但我错了,我仍然得到了
    400
    。我不确定是否出于同样的原因,但我将很快更新我的代码片段,以反映我当前得到的内容
    realmRep.setEnabledEventTypes(列表(“登录错误”、“代码到令牌错误”、“客户端登录错误”)
    realmRep.setEventsPrivation(172800)也许在管理GUI中会弹出一些事件来帮助您。