WSO2 APIM-使用客户端凭据方法的子索赔问题

WSO2 APIM-使用客户端凭据方法的子索赔问题,wso2,wso2-am,apim,Wso2,Wso2 Am,Apim,我试图使用密码和客户端凭据方法从WSO2令牌端点生成JWT,但并没有发现子声明值的差异。它总是只指向用户id,它不应该在JWT的子声明中使用客户端凭据方法生成应用程序id/客户端id吗 例: 使用密码授权获得的令牌: 请求: 职位https://localhost:8243/token HTTP/1.1 内容类型:application/x-www-form-urlencoded 授权:基本 Unnoywy5AMS2mercm2TXQ292ZGZEZNRTWKLVYTOXU0ALG1BW5YV2

我试图使用密码和客户端凭据方法从WSO2令牌端点生成JWT,但并没有发现子声明值的差异。它总是只指向用户id,它不应该在JWT的子声明中使用客户端凭据方法生成应用程序id/客户端id吗

例:

  • 使用密码授权获得的令牌:
  • 请求:

    职位https://localhost:8243/token HTTP/1.1

    内容类型:application/x-www-form-urlencoded
    授权:基本 Unnoywy5AMS2mercm2TXQ292ZGZEZNRTWKLVYTOXU0ALG1BW5YV2LBT3BKYJRREFHMS09VN1LH
    主机:localhost:8243
    内容长度:53

    授权类型=密码和用户名=api3dev和密码=api3dev

    JWT回应 {“类型”:“JWT”,“alg”:“RS256”,“x5t”:“NTDMZJM4ZDK3NJY0YZC5MMZMODGWMTE3MWYWNDEMWRLZDG4NZC4ZA=”} {“澳元”:”http://org.wso2.apimgt/gateway“,“子”:”api3dev@carbon.super,“应用程序”:{“所有者”:“api2dev”,“层次引用类型”:“请求计数”,“层次”:“无限”,“名称”:“demoapp_oriKeymgr”,“id”:68,“uuid”:null},“范围”:“默认”,“iss”:https://localhost:9443/oauth2/token,“tierInfo”:{“无限”:{“tierQuotaType”:“requestCount”,“stopOnQuotaReach”:true,“spikeArrestLimit”:0,“spikeArrestUnit”:null}},,“keytype”:“PRODUCTION”,“SubscribedAPI”:[{“subscriberTenantDomain”:“carbon.super”,“name”:“PizzaShackAPI”,“context”:“/pizzashack/1.0.0”,“publisher”:“admin”,“version”:“1.0.0”,“Subscribptiontier”:“Unlimited”}],“consumerKey”:“RSNAF9JK60DB3KWCOVDFSZIOA”,“exp”:160050664,“iat”“:1600499064,“jti”:“426d64a9-932b-4f0c-b396-202fd03dd960”

  • 使用客户端凭据获得的令牌:
  • 请求:

    职位https://localhost:8243/token HTTP/1.1
    内容类型:application/x-www-form-urlencoded
    授权:基本非诺伊WY5AMS2MERCM2TXQ292ZGZEZNRTKLVYTOXU0ALG1BW5YV2LBT3BKYJRREFHMS09VN1LH
    主机:localhost:8243
    内容长度:29

    授予\类型=客户端\凭据

    JWT回应 {“类型”:“JWT”,“alg”:“RS256”,“x5t”:“NTDMZJM4ZDK3NJY0YZC5MMZMODGWMTE3MWYWNDEMWRLZDG4NZC4ZA=”} {“澳元”:”http://org.wso2.apimgt/gateway“,“子”:”api2dev@carbon.super,“应用程序”:{“所有者”:“api2dev”,“tierQuotaType”:“请求计数”,“层”:“无限”,“名称”:“demoapp\u oriKeymgr”,“id”:68,“uuid”:null},“作用域”:“am\u应用程序\u作用域默认值”,“iss”:https://localhost:9443/oauth2/token“,“tierInfo”:{“无限”:{“tierQuotaType”:“requestCount”,“stopOnQuotaReach”:true,“spikeArrestLimit”:0,“spikeArrestUnit”:null}}},“keytype”:“PRODUCTION”,“SubscribedAPI”:[{“SubscribertEntDomain”:“carbon.super”,“name”:“PizzaShackAPI”,“context”:“/pizzashack/1.0.0”,“publisher”:“admin”,“version”:“1.0.0”,“subscriptionTier”:“Unlimited”}],“consumerKey”:“RSNAF9JK60DB3KOVDFTFSZIOA”,“exp”“:160050788,“iat”:1600499188,“jti”:“8091497e-9978-4541-99b9-efca50b16868”}


    在上面的示例中,您可以看到子声明始终只有用户id。

    在WSO2 API管理器中,当您使用客户端凭据生成访问令牌时,子声明由应用程序的所有者(服务提供商)填充。我不确定在客户端凭据中,子声明是否应该填充Oauth2应用程序的客户端id,因为客户端凭据是没有用户凭据的机器authz进程,所以子(主题)声明应该是用户,在本例中是所有者。对我来说,这是一个正确的值。

    您使用的API-M版本是什么?是的,理想情况下,使用客户端凭据获得的令牌的子声明值应为客户端id。在API-M 3.2中,使用WSO2的JWTTokenIssuer,因此这应在中固定。请创建git问题。