[精讚] [會員登入]
449

縣市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

你可能感興趣的文章

回應 修正pom.xml,

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

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

縣市端新增syncdata spi功能 為了讓部裡主機可以透過OAUTH2流程,呼叫縣市同步SYNCDATA 的API

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

更新程式環境到wildfly18+openjdk11-phase1: upgrade mongodb server 更新程式環境到wildfly18+openjdk11-phase1: upgrade mongodb server to version 3.6

我有話要說

>>

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

訪客留言

[無留言]

隨機好文

[java]縣市IDP建置 使用NetBeans建置IDP程式

在virtualbox如何壓縮vdi檔 using commands to reduce virtualbox's vdi file space

centos7 apache ssl.conf設定狀況 在apache更新或重啟後可能遇到ssl.conf衝突問題

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

在windows server建立radius服務使用active directory帳號驗證 setup windows server to add radius service using active directory accounts for authentication