[16.0.0.3 以及更新版本]

開發 Liberty 的自訂使用者儲存庫

您可以在 Liberty 伺服器中實作 com.ibm.wsspi.security.wim.CustomRepository 介面,將自訂使用者登錄開發為一項使用者特性。 自訂儲存庫介面支援大部分類型的帳戶儲存庫。

適用於分散式平台

開始之前

如果您想利用開發人員工具來實作自訂儲存庫介面,請配置這些工具來使用 SPI,如 在開發人員工具中配置自訂使用者儲存庫 SPI 中所述。

程序

  1. 建立一個類別來實作自訂儲存庫介面 com.ibm.wsspi.security.wim.CustomRepository 這個類別提供儲存庫作業。 如需介面的相關資訊,請參閱 程式設計介面(API 與 SPI) 中或產品在 ${wlp.install.dir}/dev/spi/ibm/ 目錄中提供的 Java 說明文件其中的 com.ibm.websphere.appserver.spi.federatedRepository_1.0 SPI 資訊。

    如需介面的實作範例,請參閱儲存庫介面範例

  2. 將實作類別轉換成 OSGi 服務。 如需相關資訊,請參閱在「OSGi 宣告式服務」中宣告您的服務
  3. 將自訂使用者儲存庫包裝成 OSGi 軟體組,然後匯出使用者儲存庫服務。如需建立 OSGi 軟體組的相關資訊,請參閱建立 OSGi 服務軟體組
  4. 建立一份特性資訊清單檔來包含這個 OSGi 軟體組。如需相關資訊,請參閱產品延伸
  5. 將特性安裝到使用者產品延伸位置之後,在 server.xml 配置檔中新增您的自訂儲存庫特性。 另外,也要新增自訂儲存庫所需的 appSecurity-2.0federatedRegistry-1.0 特性。 例如:
    <featureManager>
    	...
    	<feature>usr:customRepositorySample-1.0</feature>
    	<feature>appSecurity-2.0</feature>
    	<feature>federatedRegistry-1.0</feature>
    </featureManager>
  6. 選擇性的: 如果您想定義使用者和群組的自訂屬性,請在 server.xml 檔中,將這些屬性配置在 federatedRepository 元素中。
    在下列範例中,定義了 PersonAccount 實體的 myProp 屬性,定義了 Group 實體的 myGroupProp 屬性。
    <federatedRepository>
       <primaryRealm name="sampleCustomRepositoryRealm">
           <participatingBaseEntry name="o=ibm,c=us"/>
       </primaryRealm>
       <extendedProperty dataType="String" name="myProp" entityType="PersonAccount"></extendedProperty>
       <extendedProperty dataType="String" name="myGroupProp" entityType="Group"></extendedProperty>
    </federatedRepository>

儲存庫介面範例

package com.myorg;

import java.util.Map;
import com.ibm.wsspi.security.wim.exception.WIMException;
import com.ibm.wsspi.security.wim.model.Root;
import com.ibm.wsspi.security.wim.CustomRepository;

public class MyCustomRepository implements CustomRepository {

    public CustomRepository() {
        System.out.println(“In my custom repository implementation”);
    }

    @Override
    public Root create(Root arg0) throws WIMException {
        System.out.println(“In my create method”);
        //Add your code here
    }

    @Override
    public Root delete(Root arg0) throws WIMException {
        System.out.println(“In my delete method”);
        //Add your code here
    }

    @Override
    public Root get(Root arg0) throws WIMException {
        System.out.println(“In my get method”);
        //Add your code here
    }

    @Override
    public String getRealm() {
        return "customRepository";
    }

    @Override
    public Root login(Root arg0) throws WIMException {
        System.out.println(“In my login method”);
        //Add your code here
    }

    @Override
    public Root search(Root arg0) throws WIMException {
        System.out.println(“In my search method”);
        //Add your code here
    }
 
    @Override
    public Root update(Root arg0) throws WIMException {
        System.out.println(“In my update method”);
        //Add your code here
    }

    @Override
    public Map<String, String> getRepositoryBaseEntries() {
        System.out.println(“In my getRepositoryBaseEntries method”);
        //Add your code here
    }

    @Override
    public String[] getRepositoriesForGroups() {
        System.out.println(“In my getRepositoriesForGroups method”);
        //Add your code here
    }
}

指示主題類型的圖示 作業主題



「時間戳記」圖示 前次更新: 2016 年 11 月 30 日
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_sec_cust_repository
檔名:twlp_sec_cust_repository.html