注册 OAuth 客户机

OAuth 客户机或者第三方服务应用程序必须将其自身向 WebSphere® Application Server OAuth2 服务提供程序进行注册。已注册的客户机作为 XML 文件进行存储或者存储在数据库表中。

要将已注册的客户机作为 XML 文件进行存储,请创建一个称为 base.clients.xml 的 XML 文件。此 XML 文件必须放在 WebSphere Application Server 单元目录或者节点目录中的 oauth20 目录下。样本 base.clients.xml 文件位于 WebSphere Application Server 安装版本的 properties 目录中。

要将已注册的客户机存储在数据库表中,请使用以下用于创建表的 SQL 语句。
/*Client Table*/
CREATE TABLE OAuthDBSchema.OAUTH20CLIENTCONFIG (
    COMPONENTID VARCHAR(256) NOT NULL, /*Name of OAuth Provider and matches config.xml*/
    CLIENTID VARCHAR(256) NOT NULL,    /*ID of client*/
    CLIENTSECRET VARCHAR(256),         /*Client secret*/
    DISPLAYNAME VARCHAR(256) NOT NULL, /*Display name of the client*/
    REDIRECTURI VARCHAR(2048),         /*client redirect URI*/
    ENABLED INT                        /*int*/
);

创建用于存储文件和表的客户机之后,您可以直接添加、删除或修改客户机。还可以使用 WebSphere Application Server MBean 或编程 API 来管理客户机。

以下示例说明了使用客户机 API 进行客户机管理的样本代码:
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("<<provider_name>>");
OAuthComponentConfiguration oauthconfig = provider.getConfiguration();
CachedDBClientProvider clientProvider = new CachedDBClientProvider();  //if using Database for client store
//BaseClientProvider clientProvider = new BaseClientProvider();  //if using XML file for client store
clientProvider.init(oauthconfig);
// replace << .... >> with desired String
BaseClient newClient = new BaseClient(oauthconfig.getUniqueId(),
                                      "<<client_id>>",
                                      "<<client_secret>>",
                                      "<<client displayName>>",
                                      "<<redirect uri>>",
                                      true);
//add a new client
clientProvider.put(newClient);
//delete a client
clientProvider.delete("<<client_id>>");

//query all registered clients
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();
}
以下示例说明了使用 MBean API 进行客户机管理的样本代码:
//get OAuth client mBean OAuth20ClientMBean
ObjectName  objName     = new ObjectName ("WebSphere:type=OAuth20ClientMBean,*");
AdminClient adminClient = ....;
// add a new client
BaseClient newClient = new BaseClient(oauthconfig.getUniqueId(),
                                      "<<<<client_id>>",
                                      "<<client_secret>>",
                                      "<<client displayName>>",
                                      "<<redirect uri>>",
                                      true);
adminClient.invoke(objName,
                   "addClient",
                   new Object[]{newClient},
                   new String[]{newClient.getClass().getName()});

//delete a client by client id
adminClient.invoke(objName,
                   "removeClient", 
                   new Object[]{providerName, "<<client id>>"},
                   new String[]{providerName.getClass().getName(),
                   clientName.getClass().getName()});

指示主题类型的图标 概念主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwbs_oauthregisterclients
文件名:cwbs_oauthregisterclients.html