[精讚] [會員登入]
686

縣市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: 認證程式更新 認證程式更新

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

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

solution for selinux issue while installing zabbix agent on centos7 install zabbix agent as service will raise selinux issue on some centos 7.3.1611

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

更新程式環境到wildfly18+openjdk11-phase2: update IDEA to jdk11 更新IDEA 編譯環境

我有話要說

>>

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

訪客留言

[無留言]

隨機好文

debian安裝drupal細節 設定apache2的細節

setup jira using ssl on apache reverse proxy 設定jira使用https連線

更新IDP程式以新增及修正本地管理帳號登入 add locallogin page and function with local authorized account

在windows環境下強制刪除無法以檔案總管刪除的檔案或目錄 how to remove directories or files that cannot be deleted by default file manager

在apache http server停用TLS 1.0/1.1 and SSL 2.0/3.0 How to disable outdated versions of SSL/TLS on Apache