如何获取 Jwt_Token

  • Choerodon平台版本:0.6.0

  • 运行环境(如localhost或k8s):localhost

  • 遇到问题时的前置条件:本地后端服务搭建

  • 问题描述:

    请问后端开发文档中的 Jwt_Token 如何获取? api-gateway 服务的运行日志中并无文档中所述,可以找到 jwt_token 的值。

以下来自文档内容:

3. 然后通过 api-gateway 的输出日志,获取登录用户的 jwt_token 。然后添加请求头。

{
  "Jwt_Token": jwt_token
}

认证流程:
用户登录 - 跳转到oauth-server - 登录成功前端获取access_token - 前端发送请求到api-gateway - 网关将access_token转为JWT - zuul路由到真实服务。JWT其实是加密的CustomUserDetails。

  1. groovy代码生成JWT:
@Value('${choerodon.oauth.jwt.key:choerodon}')
String key

final ObjectMapper objectMapper = new ObjectMapper()

    static String createJWT(final String key, final ObjectMapper objectMapper) {
        Signer signer = new MacSigner(key)
        CustomUserDetails defaultUserDetails = new CustomUserDetails('default', 'unknown', Collections.emptyList())
        defaultUserDetails.setUserId(0L)
        defaultUserDetails.setOrganizationId(0L)
        defaultUserDetails.setLanguage('zh_CN')
        defaultUserDetails.setTimeZone('CCT')
        String jwtToken = null
        try {
            jwtToken = 'Bearer ' + JwtHelper.encode(objectMapper.writeValueAsString(defaultUserDetails), signer).getEncoded()
        } catch (IOException e) {
            e.printStackTrace()
        }
        return jwtToken
    }
  1. jwt官网, 输入正确的JWT秘匙和userDetail的json信息,生成的JWT添加 'Bearer '前缀
1 个赞