Api 使用WSO2-AM处理JWT

Api 使用WSO2-AM处理JWT,api,oauth,wso2,jwt,wso2-am,Api,Oauth,Wso2,Jwt,Wso2 Am,我们计划引入一个API管理解决方案,目前正在使用WSO2 AM进行概念验证。我们希望使用WSO2 API网关来检查是否允许某个消费者应用程序使用API并限制请求速率。 我从事身份工作流,我想知道一个消费应用程序如何将JWT令牌传递到后端服务,WSO2-AM介于两者之间 首先,这是我们目前的情况: 消费应用程序从身份提供者处为其碳用户获取JWT令牌。JWT包含一些关于用户的声明,例如他/她所属的角色 应用程序调用服务并在Authorization-HTTP头中传递JWT令牌,如:Authoriz

我们计划引入一个API管理解决方案,目前正在使用WSO2 AM进行概念验证。我们希望使用WSO2 API网关来检查是否允许某个消费者应用程序使用API并限制请求速率。 我从事身份工作流,我想知道一个消费应用程序如何将JWT令牌传递到后端服务,WSO2-AM介于两者之间

首先,这是我们目前的情况:

  • 消费应用程序从身份提供者处为其碳用户获取JWT令牌。JWT包含一些关于用户的声明,例如他/她所属的角色
  • 应用程序调用服务并在Authorization-HTTP头中传递JWT令牌,如:Authorization:Bearer
  • 该服务验证JWT的颁发者和签名,并从中检索索赔
  • 所以,这是非常直截了当的。现在,我们在应用程序和服务之间放置了一个API网关:

  • 消费应用程序从身份提供者处为其碳用户获取JWT令牌
  • 消费应用程序使用OAuth2为以下API调用获取访问令牌。我们可以使用client_凭证授予类型,只需传递客户端id和客户端密码。我还没有尝试过,但是我们可以使用JWT授权类型(请参阅),并使用JWT将用户信息传递给API网关
  • 当使用JWT授权类型时,API网关根据身份提供程序的公钥验证JWT
  • 将访问令牌返回到应用程序
  • 应用程序向网关发送API请求,并在授权HTTP头中传递访问令牌
  • 网关验证访问令牌
  • 网关将API请求转发给服务
  • 我的问题是:JWT如何从1/2开始。被传递到服务

    有一个关于“使用JWT将终端用户属性传递到后端”的文档(请参阅),但这将引入一个由WSO2-AM发布和签署的新JWT,我不确定该JWT是否包含用于创建访问令牌(甚至原始JWT)的JWT的所有信息

    我可以想到的另一种方法是使用自定义HTTP头通过网关将JWT传递给服务。我不能使用授权标头(就像我们在没有API网关的情况下所做的那样),因为WSO2-AM需要该标头中的访问令牌

    由于我对这两种解决方案都不满意,我想问专家们:你们将如何解决这个问题

    谢谢,
    Torsten

    我能想到的唯一可能性是在后端服务的自定义头中发送JWT令牌

    我也认为这是最合适的方法。一个月后,我想知道你最终是如何解决的:-)我知道这是一个日志,但你是如何解决的?我知道有可能按照您发布的链接将jwt传递到后端,但是用户角色呢?我想在SpringBoot微服务中从JWT索赔处获得它。