OAuth-Clients registrieren

Ein OAuth-Client oder eine Serviceanwendung eines anderen Anbieters muss sich beim OAuth2-Service-Provider von WebSphere Application Server registrieren. Die registrierten Clients werden entweder als XML-Datei oder in einer Datenbanktabelle gespeichert.

Zum Speichern registrierter Clients als XML-Datei können Sie eine XML-Datei mit dem Namen base.clients.xml erstellen. Die XML-Datei muss unter dem Verzeichnis oauth20 im Zellenverzeichnis oder Knotenverzeichnis von WebSphere Application Server gespeichert werden. Die Beispieldatei base.clients.xml ist im Eigenschaftsverzeichnis (properties) der Installation von WebSphere Application Server gespeichert.

Zum Speichern registrierter Clients in einer Datenbanktabelle verwenden Sie diese SQL-Anweisung zur Tabellenerstellung.
/*Clienttabelle*/
CREATE TABLE OAuthDBSchema.OAUTH20CLIENTCONFIG (
    COMPONENTID VARCHAR(256) NOT NULL, /*Name des OAuth-Providers, stimmt mit config.xml überein*/
    CLIENTID VARCHAR(256) NOT NULL,    /*ID des Clients*/
    CLIENTSECRET VARCHAR(256),         /*geheimer Schlüssel des Clients*/
    DISPLAYNAME VARCHAR(256) NOT NULL, /*Anzeigename des Clients*/
    REDIRECTURI VARCHAR(2048),         /*Umleitungs-URI des Clients*/
    ENABLED INT                        /*int*/
);

Nachdem die Clientspeicherdateien und -tabellen erstellt wurden können Sie einen Client direkt hinzufügen, löschen oder ändern. Außerdem können Sie Clients über# die MBean von WebSphere Application Server oder über Programmierungs-APIs verwalten.

Im folgenden Beispiel ist der Beispielcode für die Clientverwaltung mit der Client-API dargestellt:
import com.ibm.ws.security.oauth20.plugins.BaseClientProvider;
import com.ibm.ws.security.oauth20.plugins.BaseClient;
import com.ibm.ws.security.oauth20.api.OAuth20Provider;
import com.ibm.ws.security.oauth20.api.OAuth20ProviderFactory;
import com.ibm.ws.security.oauth20.plugins.db.CachedDBClientProvider;

OAuth20Provider provider = OAuth20ProviderFactory.getOAuth20Provider("<<Providername>>");
OAuthComponentConfiguration oauthconfig = provider.getConfiguration();
CachedDBClientProvider clientProvider = new CachedDBClientProvider();  //bei Verwendung der Datenbank als Clientspeicher
//BaseClientProvider clientProvider = new BaseClientProvider();  //bei Verwendung der XML-Datei als Clientspeicher
clientProvider.init(oauthconfig);
// << .... >> mit der gewünschten Zeichenfolge
BaseClient newClient = new BaseClient(oauthconfig.getUniqueId(),
                                      "<<Client-ID>>",
                                      "<<geheimer_Clientschlüssel>>",
                                      "<<Clientanzeigename>>",
                                      "<<Umleitungs-URI>>",
                                      true);
//neuen Client hinzufügen
clientProvider.put(newClient);
//Client löschen
clientProvider.delete("<<Client-ID>>");

//alle registrierten Clients abfragen
Collection<BaseClient> clients = clientProvider.getAll();
for (BaseClient client : clients) {
  String client_display_name = client.getDisplayName();
  String client_id = client.getClientId();
  String redirect_uri = client.getRedirectUri();
}
Im folgenden Beispiel ist der Beispielcode für die Clientverwaltung mit der MBean-API dargestellt:
//get OAuth client mBean OAuth20ClientMBean
ObjectName  objName     = new ObjectName ("WebSphere:type=OAuth20ClientMBean,*");
AdminClient adminClient = ....;
//neuen Client hinzufügen
BaseClient newClient = new BaseClient(oauthconfig.getUniqueId(),
                                      "<<<<Client-ID>>",
                                      "<<geheimer_Clientschlüssel>>",
                                      "<<Clientanzeigename>>",
                                      "<<Umleitungs-URI>>",
                                      true);
adminClient.invoke(objName,
                   "addClient",
                   new Object[]{newClient},
                   new String[]{newClient.getClass().getName()});

//Client nach Client-ID löschen
adminClient.invoke(objName,
                   "removeClient", 
                   new Object[]{providerName, "<<Client-ID>>"},
                   new String[]{providerName.getClass().getName(),
                   clientName.getClass().getName()});

Symbol, das den Typ des Artikels anzeigt. Konzeptartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwbs_oauthregisterclients
Dateiname:cwbs_oauthregisterclients.html