使用java库auth0 java为JitsiMeet生成jwt令牌

使用java库auth0 java为JitsiMeet生成jwt令牌,jwt,auth0,jitsi-meet,Jwt,Auth0,Jitsi Meet,关于此次github发行: 我需要了解如何使用JWT令牌管理复杂的索赔对象 我正试图为Jitsimeet生成一个JWt令牌,但我对如何使用javaapi有些怀疑 这里是我需要在jwt上编码的有效载荷: 标头(使用RS256公钥验证) 有效载荷 { "context": { "user": { "avatar": "https:/gravatar.com/avatar/abc123", "name": "John Doe", "email": "j

关于此次github发行:

我需要了解如何使用JWT令牌管理复杂的索赔对象

我正试图为Jitsimeet生成一个JWt令牌,但我对如何使用javaapi有些怀疑 这里是我需要在jwt上编码的有效载荷:

标头(使用RS256公钥验证)

有效载荷

{
  "context": {
    "user": {
      "avatar": "https:/gravatar.com/avatar/abc123",
      "name": "John Doe",
      "email": "jdoe@example.com",
      "id": "abcd:a1b2c3-d4e5f6-0abc1-23de-abcdef01fedcba"
    },
    "group": "a123-123-456-789"
  },
  "aud": "jitsi",
  "iss": "my_client",
  "sub": "meet.jit.si",
  "room": "*",
  "exp": 1500006923
}
这里是我的java代码

publicstaticstringgenerateFrom(字符串用户名、字符串电子邮件、字符串室、字符串appid、字符串主机名){
试一试{
dateexpirationdate=Date.from(ZonedDateTime.now().plusHours(24.toInstant());
Date issuedAt=Date.from(ZonedDateTime.now().toInstant());
用户=新用户();
user.setAvatar(“”);
user.setEmail(email);
user.setName(用户名);
user.setId(用户名);
上下文=新上下文();
setUser(用户);
JwtToken JwtToken=新JwtToken();
setContext(context);
jwtToken.setAud(appid);
jwtToken.setIss(appid);
jwtToken.setSub(主机名);
设置室(室);
jwtToken.setExp(String.valueOf(expirationDate.getTime());
//ClaimClaimUser=new com.auth0.jwt.JWTCreator.Builder()。
//标题
Map headerClaims=new HashMap();
headerClaims.put(publiclaims.KEY_ID,“jitsi/”+appid);/“kid”
headerClaims.put(publiclaims.ALGORITHM,“HS256”);/“alg
headerClaims.put(publiclaims.TYPE,“JWT”);/“typ”
//有效载荷
Map claims=newhashmap();
claims.put(“context”,jwtToken.getContext());
claims.put(“aud”,jwtToken.getAud());
claims.put(“iss”,jwtToken.getIss());
claims.put(“sub”,jwtToken.getSub());
claims.put(“room”,jwtToken.getRoom());
claims.put(“exp”,jwtToken.getExp());
//https://github.com/auth0/java-jwt
返回JWT.create()
.带标题(标题栏)
.withIssuer(jwtToken.getIss())
.withSubject(jwtToken.getSub())
.withAudience(jwtToken.getAud())
.已发布日期(已发布日期)
.到期日(到期日)
//主张
.withClaim(“aud”,jwtToken.getAud())
.withClaim(“iss”,jwtToken.getIss())
.withClaim(“sub”,jwtToken.getSub())
.withClaim(“room”,jwtToken.getRoom())
.withClaim(“exp”,jwtToken.getExp())
.withClaim(“context”,jwtToken.getContext().toString())
.sign(getAlgorithm());
}捕获(不支持编码异常| JWTCreationException ex){
抛出新的JWTCreationException(例如getMessage(),例如);
}
}
用于设置声明“context”的java代码是错误的。 我必须如何使用JavaAPI来实现这一点


您好。

根据您的要求,您需要在自定义声明中使用名称空间。我很好奇,您是否在使用auth0服务?如果是,为什么要生成令牌?auth0应该处理此问题。抱歉,Dan,我刚刚开始使用此库(以及jwt),因此可能我没有正确使用它。我需要生成并使用一个jwt令牌,如此url上所述,因此我不知道是否可以仅使用auth0服务。您能给我一个java示例说明您的意图吗?
{
  "context": {
    "user": {
      "avatar": "https:/gravatar.com/avatar/abc123",
      "name": "John Doe",
      "email": "jdoe@example.com",
      "id": "abcd:a1b2c3-d4e5f6-0abc1-23de-abcdef01fedcba"
    },
    "group": "a123-123-456-789"
  },
  "aud": "jitsi",
  "iss": "my_client",
  "sub": "meet.jit.si",
  "room": "*",
  "exp": 1500006923
}