OAuth 클라이언트 등록
OAuth 클라이언트 또는 써드파티 서비스 애플리케이션은 자신을 WebSphere® Application Server OAuth2 서비스 제공자에 등록해야 합니다. 등록된 클라이언트는 XML 파일로 저장되거나 데이터베이스 테이블에 있습니다.
등록된 클라이언트를 XML 파일로 저장하기 위해 base.clients.xml이라는 XML 파일을 작성합니다. 이 XML 파일은 WebSphere Application Server 셀 디렉토리 또는 노드 디렉토리의 oauth20 디렉토리에 위치해야 합니다. 샘플 base.clients.xml 파일은 WebSphere Application Server 설치의 특성 디렉토리에 있습니다.
등록된 클라이언트를 데이터베이스 테이블에 저장하려면 이 테이블 작성
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()});