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.
/*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.
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()});