WWebSso

WWebSso

new WWebSso(WOrm, url, db, pathSettingsopt, optExtopt) → {Object}

Description:
  • WWebSso 單一登入(SSO)伺服器

    建立SSO web服務: 使用者登入/自動登入/登出, 自助註冊與email驗證, 變更/重設密碼與通知信, token發放/驗證/更新, 後台使用者/金鑰/IP管理與統計資訊, 以及供外部系統查驗token與使用者資訊之API

Source:
Parameters:
Name Type Attributes Default Description
WOrm function

輸入資料庫ORM函數

url String

輸入資料庫連線字串,例如w-orm-lmdb為'./db',或w-orm-mongodb為'mongodb://username:password@$127.0.0.1:27017'

db String

輸入資料庫名稱字串

pathSettings String <optional>
'./settings.json'

輸入設定檔案路徑字串,檔案為json5格式,非既存檔案則回退'./settings.json',預設'./settings.json'

optExt Object <optional>
{}

輸入額外設定物件,與設定檔內容合併且同名鍵以optExt為準,以下各鍵亦可直接寫於設定檔(各鍵之預設值與範例詳套件自帶settings.json),預設{}

Properties
Name Type Attributes Default Description
serverPort Integer <optional>
11007

輸入伺服器通訊port整數,預設11007

useCheckUser Boolean <optional>
false

輸入是否檢查使用者資訊布林值,預設false

getUserById function <optional>
null

輸入當useCheckUser=true時依照使用者ID取得使用者資訊物件函數,預設null

useExcludeWhenNotAdmin Boolean <optional>
false

輸入使用ORM的select方法時是否自動刪除數據內isActive欄位之布林值,預設false

webName Object <optional>
{}

輸入站台名稱物件,至少包含語系eng與cht鍵的名稱,預設{}

webDescription Object <optional>
{}

輸入站台描述物件,至少包含語系eng與cht鍵的名稱,預設{}

webLogo String <optional>
''

輸入站台logo字串,採base64格式,預設''

webBackgoundGradientColors Array <optional>
['#FFE0B2', '#FFCC80', '#FFF59D', '#F2D6A2', '#F0CC88']

輸入使用者登入頁顏色陣列,前3色為背景線性linear-gradient,第4色為登入區塊背景色,第5色為站台logo背景色,若不給則預設白色。預設['#FFE0B2', '#FFCC80', '#FFF59D', '#F2D6A2', '#F0CC88']

webKey String <optional>
''

輸入站台識別字串,預設''

salt String <optional>
''

輸入密碼加鹽字串,預設''

minExpired Integer <optional>
30

輸入創建或更新金鑰有效時間整數,單位分鐘(min),預設30

minForAccountLoginFailed Integer <optional>
10

輸入限制帳號最大登入失敗(密碼錯誤)次數之判準時間整數,單位分鐘(min),預設10

numForAccountLoginFailed Integer <optional>
3

輸入限制帳號最大登入失敗(密碼錯誤)之次數整數,預設3

minBlockForAccountLoginFailed Integer <optional>
30

輸入限制帳號最大登入失敗(密碼錯誤)次數之觸發後封鎖時間整數,單位分鐘(min),預設30

minForTokenCallApi Integer <optional>
10

輸入限制token最大調用API次數之判準時間整數,單位分鐘(min),預設10

numForTokenCallApi Integer <optional>
1000

輸入限制token最大調用API之次數整數,預設1000

minBlockForTokenCallApi Integer <optional>
30

輸入限制token最大調用API次數之觸發後封鎖時間整數,單位分鐘(min),預設30

minForIpCallApi Integer <optional>
10

輸入限制IP最大調用API次數之判準時間整數,單位分鐘(min),預設10

numForIpCallApi Integer <optional>
10000

輸入限制IP最大調用API之次數整數,預設10000

minBlockForIpCallApi Integer <optional>
30

輸入限制IP最大調用API次數之觸發後封鎖時間整數,單位分鐘(min),預設30

userLogo String <optional>
''

輸入使用者logo字串,採base64格式,預設''

subfolder String <optional>
''

輸入站台所在子目錄字串,提供站台位於內網採反向代理進行服務時,故需支援位於子目錄情形,預設''

mappingBy String <optional>
'email'

輸入外部系統識別使用者token後所提供之資料物件,與權限系統之使用者資料物件,兩者間查找之對應欄位,可選'id'、'email'、'name',預設'email'

kpLangExt Object <optional>
{}

輸入擴充前端語系物件,預設{}

logFd String <optional>
'./logs'

輸入log紀錄儲存位置字串,預設'./logs'

logInterval String <optional>
'hr'

輸入log紀錄檔案拆檔時長字串,預設'hr'

logNumKeep Integer <optional>
null

輸入log檔保留數上限正整數,超出者自最舊刪除,未給採w-syslog預設(hr模式365*24、day模式365),預設null

emSrcEmail String <optional>
null

輸入email寄信用email字串,預設null

emSrcPW String <optional>
null

輸入email寄信用密碼字串,預設null

emSrcHost String <optional>
null

輸入email寄信用host字串,預設null

emSrcPort String <optional>
null

輸入email寄信用port整數,預設null

allowUserRegistration Boolean <optional>
false

輸入是否開放使用者自助註冊布林值,新功能採opt-in,須明確給true才啟用,預設false

siteUrl String <optional>
''

輸入站台前端網址字串,選填(目前僅保留供未來使用,尚無功能讀取),預設''

verifyBaseUrl String <optional>
''

輸入後端API base URL字串,用於組出註冊驗證信內之連結,當allowUserRegistration=true且部署於非本機環境時必填,不給則回退'http://localhost:{serverPort}'(僅本機開發可用),預設''

passwordPolicy Object <optional>
{詳見server/defaultPasswordPolicy.mjs}

輸入密碼政策物件,不給則採程式內建預設;有給則以內建預設為底淺層merge(可只給欲調整之欄位如minLength,未給欄位沿用內建),merge後13個子欄位(minLength、maxLength、requireLetter、requireUppercase、requireLowercase、requireDigit、requireSpecial、noSpace、onlyAscii、forbiddenChars、noConsecutiveCharsFromAccount、consecutiveCharsMinMatch、commonPasswordBlacklist)逐欄驗證,型別錯即啟動時throw,預設內建政策

cleanKpIpCallApiForIps Array <optional>
['127.0.0.1','::1','::ffff:127.0.0.1']

輸入允許呼叫/api/cleanKpIpCallApi的連線IP白名單陣列,預設本機IP

cleanKpIpCallApiForToken String <optional>
''

輸入呼叫/api/cleanKpIpCallApi須附帶之識別token字串,預設''

cleanKpAccountLoginFailedForIps Array <optional>
['127.0.0.1','::1','::ffff:127.0.0.1']

輸入允許呼叫/api/cleanKpAccountLoginFailed的連線IP白名單陣列,預設本機IP

cleanKpAccountLoginFailedForToken String <optional>
''

輸入呼叫/api/cleanKpAccountLoginFailed須附帶之識別token字串,預設''

pathTemplate String <optional>
''

輸入自訂結果頁模板資料夾路徑字串,內放verifyEmailResult.html即覆寫內建結果頁模板(缺檔回退套件內建),不給則採內建模板,預設''

chpwEmTitle Object <optional>
{}

輸入變更密碼通知信標題物件,逐語系鍵(eng、cht)各自給文字,或給檔案路徑(絕對或基於啟動路徑之相對,檔案存在即讀檔作為文字,不存在則原樣視為文字),未給之語系採內建語系文字,預設{}

chpwEmContent Object <optional>
{}

輸入變更密碼通知信內容物件,逐語系鍵(eng、cht)各自給HTML字串或檔案路徑(檔案存在即讀檔作為內容),支援{sender}與{name}置換符,未給之語系採內建語系文字,預設{}

regVerifyEmTitle Object <optional>
{}

輸入註冊驗證信標題物件,逐語系鍵(eng、cht)各自給文字或檔案路徑(檔案存在即讀檔作為文字),未給之語系採內建語系文字,預設{}

regVerifyEmContent Object <optional>
{}

輸入註冊驗證信內容物件,逐語系鍵(eng、cht)各自給HTML字串或檔案路徑(檔案存在即讀檔作為內容),支援{sender}、{name}與{verifyUrl}置換符,未給之語系採內建語系文字,預設{}

resetPwEmTitle Object <optional>
{}

輸入重設密碼通知信標題物件,逐語系鍵(eng、cht)各自給文字或檔案路徑(檔案存在即讀檔作為文字),未給之語系採內建語系文字,預設{}

resetPwEmContent Object <optional>
{}

輸入重設密碼通知信內容物件,逐語系鍵(eng、cht)各自給HTML字串或檔案路徑(檔案存在即讀檔作為內容),支援{sender}、{name}、{account}與{newPassword}置換符,未給之語系採內建語系文字,預設{}

verifyEmailResultContent String <optional>
''

輸入註冊驗證結果頁HTML字串或檔案路徑(檔案存在即讀檔作為內容),支援{title}與{message}置換符({message}依請求lang代入對應語系文字故單一模板即可),未給採pathTemplate之verifyEmailResult.html(缺檔回退套件內建模板),預設''

Returns:

回傳物件,其內server為hapi伺服器實體,wsrv為w-converhp的伺服器事件物件,wsds為w-serv-webdata的伺服器事件物件,可監聽error事件

Type
Object