首页 文章

如何使用WSO2 API Manager 1.10.0刷新应用程序的访问令牌?

提问于
浏览
3

我(最终)设法使用带有WSO2 API Manager 1.10.0的API获取应用程序的有效访问令牌 . 但是,我不清楚如何刷新此令牌 .

我通过使用以下有效负载调用https://myapi.mydomain.com/api/am/store/v0.9/applications/generate-keys?applicationId=2b205ee5-5891-4913-96e0-b4952d7d2a4c获得了工作访问令牌

var payload = {
    'grant_type': 'password',
    'username': username, 
    'password': password,
    "validityTime": validityTime,
    "keyType": "PRODUCTION",
    "accessAllowDomains": [ domain ]
}

结果如下:

Generating application keys for application with id '2b205ee5-5891-4913-96e0-b4952d7d2a4c'
{ consumerKey: '5k7UDuFTV0UE7mESHerEIm2Nj3ga',
  consumerSecret: 'm1hS_SNfHF25l9lP9YjYpf977VUa',
  keyState: 'APPROVED',
  keyType: 'PRODUCTION',
  supportedGrantTypes:
   [ 'urn:ietf:params:oauth:grant-type:saml2-bearer',
     'iwa:ntlm',
     'refresh_token',
     'client_credentials',
     'password' ],
  token:
   { tokenScopes: [ 'am_application_scope', 'default' ],
     validityTime: 2678400,
     accessToken: 'be8661550ee51b7682902e58a58108f6' } }

所以看起来我有资金刷新我的访问令牌 . 如果您有一个刷新令牌,文档只会提到如何执行此操作,而回复中缺少该令牌 . 我究竟做错了什么?

2 回答

  • 3

    如果单击 Subscriptions 选项卡,则可以在API Store(开发人员门户)中刷新令牌,并且:

    • 立即手动单击 Re-generate 按钮刷新,或

    • 单击 cURL 按钮以生成可用于以编程方式刷新的命令:

    Use cURL button on Subscriptions tab to generate token refresh call

    笔记:

  • 2

    您用于生成令牌的API不是您工作的API . API'applications / generate-keys'用于生成与应用程序相关的密钥(客户机密钥和客户机ID) . 为此生成的令牌具有client_credential授权类型 . 这就是为什么你没有获得刷新令牌 . 该令牌是使用客户端ID和密码生成的 .

    我发现您已在有效负载中将授权类型作为“密码”发送,但这些参数无效 . api不接受授权类型名称 . (api用于生成应用程序密钥 . 因此不需要授予类型)

    实际样本有效负载(参见https://docs.wso2.com/display/AM1100/apidocs/store/#!/operations#ApplicationindividualApi#applicationsGenerateKeysPost

    { 
      "validityTime": "3600",
      "keyType": "PRODUCTION",
      "accessAllowDomains": ["ALL"
      ]
    }
    

    要生成令牌,请使用令牌api(https://docs.wso2.com/display/AM1100/Token+API) . 那些apis是根据OAuth2规范实现的 . 使用这些令牌api使用'password' grant类型时,您将获得刷新令牌

相关问题