2016-04-18 2 views
3

Ich habe (endlich) ein gültiges Zugriffstoken für eine Anwendung mithilfe der API mit WSO2 API Manager 1.10.0 erhalten. Es ist mir jedoch unklar, wie ich dieses Token aktualisieren soll.Wie wird das Zugriffstoken einer Anwendung mit dem WSO2 API Manager 1.10.0 aktualisiert?

bekam ich die Arbeitszugriffstoken https://myapi.mydomain.com/api/am/store/v0.9/applications/generate-keys?applicationId=2b205ee5-5891-4913-96e0-b4952d7d2a4c mit der folgenden Nutzlast

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

Das Ergebnis sieht wie folgt durch den Aufruf:

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' } } 

es nicht so scheint, wie ich die Gewährung habe auffrischen mein Zugriffstoken. In der Dokumentation wird jedoch nur erwähnt, wie dies zu tun ist, wenn Sie ein Aktualisierungstoken haben, das in der Antwort fehlt. Was mache ich falsch?

+0

Warum verwenden Sie nicht Token-API https://docs.wso2.com/display/AM1100/Token+API? – ajanthan

Antwort

2

Sie können das Token in API Store (Entwickler-Portal) aktualisieren, wenn Sie sich auf die Registerkarte Abonnements klicken und dort entweder:

  • manuell klicken Sie auf die Neugenerieren Taste jetzt aktualisieren, oder
  • Klicken Sie auf die cURL Taste, um den Befehl zu generieren, die Sie programmatisch aktualisieren verwenden können:

Use cURL button on Subscriptions tab to generate token refresh call

Hinweise:

+0

Danke. Der einzige Nachteil ist, dass dieser Anruf nicht erlaubt, die Gültigkeitszeit anzugeben. Scheint so, als müsste ich [einen benutzerdefinierten oauth-Handler] schreiben (http://stackoverflow.com/questions/31653771/wso2-api-manager-1-9-0-set-expire-date-validity-time-via-curl) um das zu tun ... –

2

Die API, die Sie zum Generieren von Token verwendet haben, ist nicht die API für Ihre Aufgabe. Die API 'applications/generate-keys' generiert anwendungsbezogene Schlüssel (Client secret und client id). Das für generierte Token hat einen client_credential-Grant-Typ. Deshalb erhalten Sie kein Refresh-Token. Dieses Token wird mithilfe der Client-ID und des geheimen Schlüssels generiert.

Ich sehe, Sie haben den Grant-Typ als "Passwort" in der Nutzlast gesendet, aber diese Parameter sind nicht gültig, mit zu beginnen. dass die API den Namen des Grant-Typs nicht akzeptiert. (Api ist es, die Anwendungsschlüssel zu generieren. So gewähren Typ ist nicht erforderlich)

Tatsächliche Probe Nutzlast (siehe https://docs.wso2.com/display/AM1100/apidocs/store/#!/operations#ApplicationindividualApi#applicationsGenerateKeysPost)

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

die Token zu erzeugen, benutzen Sie bitte das Token api verwenden (https://docs.wso2.com/display/AM1100/Token+API). Diese APIs werden gemäß den OAuth2-Spezifikationen implementiert. Sie erhalten ein Aktualisierungstoken, wenn Sie 'password' verwenden Grant-Typ mit diesen Token apis

Verwandte Themen