[精讚] [會員登入]
427

縣市IDP新增API功能

修改IDP程式增加API介面

分享此文連結 //n.sfs.tw/12259

分享連結 縣市IDP新增API功能@外行中的外行
(文章歡迎轉載,務必尊重版權註明連結來源)
2018-10-25 12:11:47 最後編修
2018-03-18 00:51:28 By jung
 

 

1.先在原本IDP(XXauth)程式新增下列檔案及內容,POM的cnclibs更新至0.0.6.8

1-1: 新增package再加入xxscopes.java檔案

src/main/java/scopes/xxscopes.java

               

 

1-2: 新增檔案scopes.spi.CNCScopes

src/main/resources/META-INF/services/scopes.spi.CNCScopes

內容目前只有一行:scopes.XXscopes

 

1-3: 新增src/main/java/scopes/XXscopes.java檔案內容,將相關字詞改為自己的xxscopes

package scopes;

import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import scopes.spi.CNCScopes;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;


/**
 * 臺中市客制化的Scopes
 */
public class tcscopes implements CNCScopes {

    private static final Logger logger = LoggerFactory.getLogger(tcscopes.class);
    public static final Map<String, String> ASMapping;

    static {
        ASMapping = new HashMap();
        try {
            PropertiesConfiguration properties;
            properties = new PropertiesConfiguration("tcscopes.properties");
            //properties.setReloadingStrategy(new FileChangedReloadingStrategy());
            Iterator<String> it = properties.getKeys();
            while (it.hasNext()) {
                String key = it.next();
                ASMapping.put(key, properties.getString(key, ""));
            }
        } catch (ConfigurationException ex) {
            logger.error(ex.getLocalizedMessage());
        }
    }


    @Override
    public Map<String, String> getCNCScopes() {
        return this.ASMapping;
    }
}

1-4: 新增API讀取客製化欄位名稱檔案

src/main/resources/XXscopes.properties

xxscopes.properties內容為:

scope欄位英文名=scope欄位中文名

例如: xxstuffdata=某縣市服務

(scope名稱不可以和內建的scope名相同,否則mongo讀取錯誤就死了~沒錯就是我這個白癡)

1-5: 新增測試程式

src/test/java/TestScopes.java

內容為:

import org.junit.Test;
import scopes.CNCScopeService;

import java.util.Map;

public class TestScopes {
    @Test
    public void doTest(){
        CNCScopeService service = CNCScopeService.getInstance();
        Map<String,String> scopes = service.getCNCScopes();
        System.out.println(scopes.get("tcstaffdata"));
    }
}

將scopes.get("改為xxscopes.properties裡寫入的英文欄位名")

IDP的部分就改完了,重新編譯發布authserver成功就做完一半( 我就是死在這裡@@)

2.下載CncResource程式,新增分支xx_resource

修改CNCAPIResource.java程式,將不需要的scope去掉或新增自訂的scope

並在POM檔案中納入自己的xxauth專案程式

重新編譯發布,會在IDP主機跑一個獨立的程式讓外部應用服務呼叫

3.測試

3-1:下載cncdefault程式,POM納入自己的xxauth專案程式

3-2: 修改client.properties檔案,brandname可自訂,其他設定要配合igogo大神開發的localApp測試程式先不做修改

brandname=API檢測
redirecturi=https://localhost:8443/app/callback
contactname=愛狗狗
contactemail=igogo@edu.tw
contactphone=0910
allowingscopes=openid,openid2,email,profile,guid
creator=igogo

3-3: 上傳到IDP主機執行jar,以取得client id & secret用作測試

要把client.properties檔案拉出來到跟cncdefault.jar放在一起,才執行下列指令

clientid 是由brandname計算出來, 目前brandname 不可重覆

執行指令: java -jar cncdefault-0.0.1.jar ./client.properties

建立後,查詢mongo指令
mongo
show databases

use XXstore

show collections

db.cncspstore.find()

紀錄查詢到的id&secrets

4. 本地端程式檢測

需參考igogo的localApp

4-1: 將各IDP使用的cert憑証轉換成 jks  放到cert中  (需使用java keytool程式,所在位置依照各作業系統JAVA安裝目錄有所不同)

"C:\Program Files\Java\jre1.8.0_161\bin\keytool.exe" -importcert -file "XX.cer" -keystore XX.jks -alias XX.sso.edu.tw

密碼請打changeit

修改idpconfig.json檔案,將剛才取到的client id & secret修改加入

各項scope的endpoint改為自己IDP的網域名

4-2: 執行

4-2-1:如果已預先載入cert的jks
java  -jar localApp.jar --idp.config=idpconfig.json
4-2-2:或手動指定載入jks的路徑
java -jar localApp.jar --idp.config=idpconfig.json --jks=.\cert\tp.jks

4-3: 在本地端打開瀏覽器輸入網址localhost

如果看到IDP帳密登入首頁,再輸入帳密取到scope資料就成功了

 

 

 

END

你可能感興趣的文章

更新程式環境到wildfly18+openjdk11-phase4: 認證程式更新 認證程式更新

縣市IDP更換SSL憑證及修改servername+wildfly等設定 縣市IDP更換SSL

新增IDP程式使用google防機器人的驗證功能 身份認證程式新增google防機器人v2

縣市端新增師生關係API程式 在縣市端建立可由教育部主機撈取縣市資料庫師生關係的API 程式

更新程式取消google recaptcha改用輸入驗證碼 update cnclibs to 0.0.8.6

縣市端IdP新增自訂首頁內容功能 合併本部主程式,手動於mongo內新增管理使用者資料

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

[網管心得]qnap+proxmox 韌體更新及nfs掛載或變更

縣市IDP新增API功能 修改IDP程式增加API介面

如何在ubuntu 18.04上設定一開機就啟動virtualbox某個vm a way to setup ubuntu18.04 for start vm on boot

how to resolve memory allocation issue on proxmox when creating vm, sometimes the log shows fail message of Cannot_allocate_memory