2016-07-22 3 views
0

Ich habe WSO2 API Manager auf einem eigenständigen Rechner. Ich habe einen Java-Client (PSVM) mit der notwendigen Client-ID und dem geheimen Passwort der registrierten Anwendung auf APIM. Können wir das Träger-Token nur mit der Client-ID und dem geheimen Schlüssel in Java erhalten?Bearer Token erhalten, nur mit Client ID und Secret. Ist es möglich

Hilfe bitte, bitte.

Ich habe folgenden Code, aber es erfordert Benutzername und Passwort.

öffentlichen Token getToken (String username, String password, String Tive) {

String submitUrl = GenarateAccessTokenConfiguration.getInstance().getLoginURL(); 
    String consumerKey = GenarateAccessTokenConfiguration.getInstance().getConsumerKey(); 
    String consumerSecret = GenarateAccessTokenConfiguration.getInstance().getConsumerSecret(); 

    try { 
     String applicationToken = consumerKey + ":" + consumerSecret; 
     BASE64Encoder base64Encoder = new BASE64Encoder(); 
     applicationToken = "Basic " + base64Encoder.encode(applicationToken.getBytes()).trim(); 

     String payload = "grant_type=password&username="+username+"&password="+password+"&scope="+scopes; 
     HttpResponse httpResponse = httpClient.doPost(submitUrl,applicationToken, 
       payload,"application/x-www-form-urlencoded"); 
     if (httpResponse.getStatusLine().getStatusCode() != 200) { 
      return null; 
     } 
     String response = httpClient.getResponsePayload(httpResponse); 


     System.out.println("JSON Response : "+response); 


     return JSONClient.getAccessToken(response); 
    } catch (IOException e) { 
     e.printStackTrace(); 
     return null; 
    } 
} 

public Token getTokenWithScopes(String username, String password, String scopes){ 
    String submitUrl = GenarateAccessTokenConfiguration.getInstance().getLoginURL(); 
    String consumerKey = GenarateAccessTokenConfiguration.getInstance().getConsumerKey(); 
    String consumerSecret = GenarateAccessTokenConfiguration.getInstance().getConsumerSecret(); 
    try { 
     String applicationToken = consumerKey + ":" + consumerSecret; 
     BASE64Encoder base64Encoder = new BASE64Encoder(); 
     applicationToken = "Basic " + base64Encoder.encode(applicationToken.getBytes()).trim(); 

     String payload = "grant_type=password&username="+username+"&password="+password+"&scope="+scopes; 
     HttpResponse httpResponse = httpClient.doPost(submitUrl,applicationToken, 
       payload,"application/x-www-form-urlencoded"); 
     if (httpResponse.getStatusLine().getStatusCode() != 200) { 
      return null; 
     } 
     String response = httpClient.getResponsePayload(httpResponse); 
     return JSONClient.getAccessToken(response); 
    } catch (IOException e) { 
     e.printStackTrace(); 
     return null; 
    } 
} 

Antwort

0

Sie in seine token API aussehen:

Benutzerzugriffstoken benötigen APIs unter einer Anwendung abonniert aufzurufen. Zugriffstoken werden beim Aufrufen von APIs im HTTP-Header übergeben. Der API-Manager stellt eine Token-API bereit, mit der Sie Benutzer- und Anwendungszugriffstoken generieren und erneuern können. Die Antwort der Token-API ist eine JSON-Nachricht. Sie extrahieren das Token aus dem JSON und übergeben es mit einem HTTP-Autorisierungsheader, um auf die API zuzugreifen.

Im folgenden Thema wird erläutert, wie Sie Zugriffstoken generieren/erneuern und sie autorisieren. Der WSO2-API-Manager unterstützt die vier gebräuchlichsten Berechtigungsgewährungstypen und Sie können auch zusätzliche Typen definieren.

  • Austausch SAML2 Bearer Tokens mit OAuth2 - SAML-Erweiterung Grant Typ
  • Generieren von Zugriffstoken mit Autorisierungscode - Autorisierungscode Grant Typ
  • Generieren von Zugriffstoken mit NT LAN Manager - NTLM Grant Typ
  • Generieren von Zugriffs Token mit Benutzeranmeldeinformationen - Kennwortvergabe Typ
0

Wenn Sie die Oauth2-Grant-Typen überprüfen, können Sie eine Antwort darauf finden. Der WSO2-API-Manager unterstützt alle Berechtigungstypen (Autorisierungscode, Implizit, Anmeldeinformationen des Ressourceneigentümerkennworts, Clientanmeldeinformationen, die in OAuth 2.0 spec erwähnt werden). Jeder Berechtigungstyp hat einen unterschiedlichen Ablauf, um ein Zugriffstoken zu generieren.

Kennwort-Berechtigungsnachweis des Ressourceninhaber-Kennworts (oder Kennwort-Berechtigungstyp), den Sie verwenden, benötigt jetzt Benutzername und Kennwort, um das Token zu generieren. Wenn Sie Client-Schlüssel und Client-ID verwenden möchten, können Sie den Client-Berechtigungsnachweis-Berechtigungstyp verwenden. siehe client credential grant type section

Verwandte Themen