Как обновить токен доступа приложения с помощью WSO2 API Manager 1.10.0?

Мне (наконец-то) удалось получить действительный токен доступа для приложения, использующего API с WSO2 API Manager 1.10.0. Однако мне непонятно, как обновить этот токен.

Я получил рабочий токен доступа, позвонив 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' } }

Так что, похоже, у меня есть разрешение на обновление моего токена доступа. Однако в документации упоминается только то, как это сделать, когда у вас есть токен обновления, который отсутствует в ответе. Что я делаю не так?


person Bram Vandewalle    schedule 18.04.2016    source источник
comment
Почему вы не используете API токенов docs.wso2.com/display/AM1100/Token+ API ?   -  person ajanthan    schedule 18.04.2016


Ответы (2)


Вы можете обновить токен в магазине API (портал разработчика), если вы нажмете на вкладку Подписки и там:

  • Вручную нажмите кнопку Повторно создать обновить прямо сейчас или
  • Нажмите кнопку cURL, чтобы сгенерировать команду, которую можно использовать для программного обновления:

Используйте кнопку cURL на вкладке

Примечания:

  • Вы также можете прочитать дополнительную информацию об Token API в документации,
  • Для снимка экрана я использовал размещенную версию API Manager — WSO2 API Cloud.
person DSotnikov    schedule 19.04.2016
comment
Спасибо. Единственным недостатком является то, что этот вызов не позволяет мне указать время действия. Похоже, мне нужно написать пользовательский обработчик oauth для этого... - person Bram Vandewalle; 20.04.2016

API, который вы использовали для создания токенов, не является API для вашей работы. API «applications/generate-keys» предназначен для генерации ключей, связанных с приложением (секрет клиента и идентификатор клиента). Сгенерированный для этого токен имеет тип гранта client_credential. вот почему вы не получаете токен обновления. Этот токен генерируется с использованием идентификатора клиента и секрета.

Я вижу, вы отправили тип гранта как «пароль» в полезной нагрузке, но эти параметры недействительны для начала. этот 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). Эти API реализованы в соответствии со спецификациями OAuth2. Вы получите токен обновления, когда используете тип гранта «пароль», используя эти API-интерфейсы токенов.

person Chamila Adhikarinayake    schedule 20.04.2016