斯琦
摘 要:后勤支持管理系統(tǒng)服務(wù)于整個渤海油田的后勤保障工作。渤海油田范圍內(nèi)的所有海上平臺及基地等內(nèi)、外部單位,均需使用該系統(tǒng)進(jìn)行海上后勤管理的保障工作。故此,該系統(tǒng)不僅僅服務(wù)于企業(yè)內(nèi)部,還有很多外部單位也需要訪問。同時,隨著渤海油田信息化建設(shè)的不斷深入,以及國家對國有企業(yè)信息系統(tǒng)安全等保要求的逐步提升,原來基于內(nèi)網(wǎng)環(huán)境下的LDAP協(xié)議的AD域登錄模式,已經(jīng)不能滿足渤海油田信息化的安全要求。文章探討如何采用基于SAML的ADFS聯(lián)合身份驗(yàn)證,實(shí)現(xiàn)用戶身份驗(yàn)證的安全性,保證渤海油田后勤支持管理系統(tǒng)的安全外網(wǎng)訪問,以供參考。
關(guān)鍵詞:ADFS;安全管理;后勤管理;渤海油田
中圖分類號:TP311.52;TP309.2文獻(xiàn)標(biāo)識碼:A文章編號:1674-1064(2021)09-0-04
DOI:10.12310/j.issn.1674-1064.2021.09.020
1 概況
后勤支持管理系統(tǒng),服務(wù)于渤海油田的后勤業(yè)務(wù)管理,面向內(nèi)外部單位提供后勤業(yè)務(wù)系統(tǒng)支撐。后勤支持管理系統(tǒng)通過PC、移動終端(手機(jī))等途徑采集后勤作業(yè)數(shù)據(jù),通過PC端瀏覽器及移動端App向用戶提供服務(wù)。系統(tǒng)采用PAAS云+IAAS云架構(gòu),應(yīng)用服務(wù)器搭建在PAAS云,數(shù)據(jù)庫服務(wù)器搭建在IAAS云,依托總公司PAAS云\IAAS云服務(wù)器資源,向系統(tǒng)提供計算、存儲、網(wǎng)絡(luò)、負(fù)載平衡等能力。
后勤支持管理系統(tǒng)采用業(yè)內(nèi)主流的Java EE三層架構(gòu)設(shè)計,PC端采用B/S方式實(shí)現(xiàn)。移動App端采用總公司移動云,系統(tǒng)通過數(shù)據(jù)接口與App端進(jìn)行業(yè)務(wù)數(shù)據(jù)對接。
后勤支持管理系統(tǒng)主要使用以下核心技術(shù):表現(xiàn)層采用Spring MVC做控制,HTML做頁面展現(xiàn),CSS樣式做頁面美化,ECharts做曲線,Ajax做數(shù)據(jù)交互。業(yè)務(wù)層主框架使用SpringBoot,使用流程工具,加入消息引擎做消息推送,項(xiàng)目根據(jù)業(yè)務(wù)情況,自主開發(fā)調(diào)控模型來做調(diào)控算法。持久層采用MybatisPlus做數(shù)據(jù)持久化,HikariCP建立數(shù)據(jù)庫連接池。
2 現(xiàn)狀與要求
后勤支持管理系統(tǒng)之前使用系統(tǒng)自己的用戶密碼管理體系,沒有與AD對接。因?yàn)榭偣鞠到y(tǒng)安全等保的要求,如果需要提供外網(wǎng)訪問的系統(tǒng),均需要保證用戶身份驗(yàn)證的安全性,必須采用基于SAML的ADFS聯(lián)合身份驗(yàn)證方案。需要按照以下流程完成ADFS聯(lián)合身份驗(yàn)證。
ADFS用戶認(rèn)證流程圖中一共分三個角色,如圖1所示:
Server Provider(SP):提供服務(wù)和資源的服務(wù)提供者;
Identity Provider(IDP):用來身份鑒別的服務(wù)器,主要是認(rèn)證用戶,同時生成ADFS服務(wù)器(SAML斷言);
Client:用戶訪問服務(wù)的客戶端,比如瀏覽器。
驗(yàn)證步驟要求主要如下:
用戶嘗試訪問SP提供的服務(wù)。
SP根據(jù)配置生成一個SAML格式的身份驗(yàn)證請求數(shù)據(jù)包。配置包括ADFS服務(wù)器地址、證書、IDP返回SP消息數(shù)據(jù)的URL地址、身份認(rèn)證協(xié)議等信息,通過瀏覽器重定向到ADFS服務(wù)器進(jìn)行SAML身份認(rèn)證。
IDP解碼SAML請求,并對用戶進(jìn)行身份驗(yàn)證,IDP要求提供有效登錄憑據(jù)以驗(yàn)證用戶身份。
IDP生成一個SAML響應(yīng),其中包含經(jīng)過驗(yàn)證的用戶的用戶名等信息。按照SAML 2.0規(guī)范,此響應(yīng)將使用IDP的DSA/RSA公鑰和私鑰進(jìn)行數(shù)字簽名。
IDP將信息返回到用戶的瀏覽器。根據(jù)配置的返回路徑,瀏覽器將該信息轉(zhuǎn)發(fā)到SP。
SP使用IDP的公鑰驗(yàn)證SAML響應(yīng)。如果成功驗(yàn)證該響應(yīng),SP則會將用戶重定向到目標(biāo)網(wǎng)址。當(dāng)認(rèn)證步驟中發(fā)生認(rèn)證錯誤時,SP通過瀏覽器向當(dāng)前用戶顯示明確的錯誤信息,如密碼錯誤、密碼過期、賬號已鎖定等。
用戶成功登錄系統(tǒng)[1]。
3 ADFS登錄的方法
在用戶訪問站點(diǎn)(后勤支持管理系統(tǒng)網(wǎng)站)時,初始化時調(diào)用后勤項(xiàng)目的登錄接口。
登錄接口通過配置信息,生成數(shù)據(jù)包,并把地址轉(zhuǎn)發(fā)到ADFS服務(wù)器登錄地址。
使用ADFS界面作為登錄界面,由用戶開始填寫登錄信息。
執(zhí)行登錄時將登錄信息發(fā)送到IDP服務(wù)中。
由IDP來做用戶憑證的信息認(rèn)證,經(jīng)過驗(yàn)證信息后再生成數(shù)據(jù)包,響應(yīng)給瀏覽器。
瀏覽器拿到IDP的響應(yīng)后,去訪問后勤系統(tǒng)的ssoLogin接口。
ssoLogin接口對密鑰/公鑰及token的數(shù)據(jù)處理后,然后使用公鑰驗(yàn)證IDP服務(wù)的響應(yīng),如IDP服務(wù)響應(yīng)并返回“成功”狀態(tài),將瀏覽器頁面重定向到后勤系統(tǒng)首頁并進(jìn)行頁面渲染;否則在瀏覽器頁面渲染ADFS驗(yàn)證失敗頁面。
后勤支持管理系統(tǒng)向用戶授權(quán)訪問系統(tǒng)的權(quán)限。
4 ADFS集成配置說明
使用spring框架實(shí)現(xiàn)saml協(xié)議認(rèn)證:spring-security-saml2-core。
信息配置:
sp:
# base url
base_url: http://localhost:9090
# Entity ID of the SP
entity_id: http://mock-sp
# Private key used to sign the SAML response
private_key: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDQRsCf6qU0DYkoFIJUhNlMxJFKMPsEvK+u3rcaBIZcyWX4Cv5OU3xtcCAg6mqRwMRFYFDNdGgR0XLTaHAOcJpR7cXYnYc0Wa6Kh8KSstgZrCl+WdqCtuUS6bMrrAdSq6HpoAPwo1JyOqyC9ccRZ9ysjhYdWQS1ELSjUHjEuxxRoEgwKfrF7kxbo89dixQ7oF9E9CgeWtftJfMtDxGtMhmtaIurHjjcfOPWR8TND0b1Lp1pLkzPn6GdI2aRWqV3tNsljKoXP9omDInhP9xrzoLiXISbekfnLrfFQW+rmylCBiu6ZqKv0weg1V6b7B6rAyV3nIcXInLuKXSlQx0nnPOdAgMBAAECggEAOrAlKSqyYIeL5XpZ+zzwCly9X/2LThtpGcpyJ+esgMrTa+CVJjcKMcBNnVjQrL93zuDEBBDQHm05gO7F3JvIMFviyxYgehTnROvaXQH+OMW1b4AcPYcR55Foxl6UNaxdVHqdgZpT6hI0eDaPYI02tnzXKG/kDq1laTuMvErJQQp6Cd611yyAhBvpX1ibpAYvex10sfTkj0GRKmOrGqwVXibN29szaRei7Xeg/RStdVBgrYJoR5/4++dkGapa27oRdOh4VJUChRfXuJtH6pyxC7uay1fMRcmo2u6NcWAT6qMOvxLcuesnNFrbSlPoZaxWNiZRX/SVqeieyRAA0WS7IQKBgQDoywh4DkdL+SPrkA/sB0rOQF3kJjlzWibk9OM17In1P+obQk37kSRYKfBvsk48VWdG1fN33Up05Pxe+f36F//AZ8mp7uTmBtd6CAoR/005WxwkCSihF6LaDiB3VtxlpcfRA/TUZ10PMud43w0AeG30AG0KpCokfIiY87OpyTjJWQKBgQDlCgsgZ9rL3Wm7FbEDZ4f2uTB5rlT0Vz80paV0OOJdUQECrZW1PjemQpqIJocr8yoNupkrZKPSi4mbNoMFF1wXIydOjLq6iQ6KWIKRdsvmeXL++tWg6TiD8nDpBxuKzjRhwMcQN2lakb/SusoXnmG8qq12PCFUvpbhoZRqRPWv5QKBgQC8jUasxxPka0U21RawXC+w4t2pn3RFBC4goGEwGgibxkr+DTRQoHzJlB6Uud04bQwbicuLuIdIKvhmjSGzYaDa3LWwmDh6P+xjgQN3FEweOreOUITCBfz3lR2iy430HtS7bPLu31G2r8pgUnmbee/FBFtNlS41I1EYYbuRt9Pw8QKBgD6aPSpRWKtqTHD3X9e3X6FfQtGvhcb3Ze5E7HFU7wJklqsduRK9+8X05HocVcv8fd0cyKrkqiZtP2JuRueIWAJ2+FJvAsbjmVbVFHMgDmFjhrwM4YFG3cyq4pO+/pc0/3pMj9xt2N0Jg23c4koMX1iLKjhr/QxFv8XSPVfCm4jFAoGALfejdx4PpFgTWpbm5ZWRxukhZRhmfCIAWifYeJbsGTB5y7bheVxKmTpP9mKEqGL+gh3cLVPcZ557HWpc4d6NetdyrHffEhWULh4NWYDKC5BRCr9HjLKydBUQUMCFeJs3XZQTtN+CZORcuaI2ISH2QvfYki9ns4ujeH8OjzfHpvI=
# Public certificate to verify the signature of the SAML response
certificate: MIIDEzCCAfugAwIBAgIJAKoK/heBjcOYMA0GCSqGSIb3DQEBBQUAMCAxHjAcBgNVBAoMFU9yZ2FuaXphdGlvbiwgQ049T0lEQzAeFw0xNTExMTExMDEyMTVaFw0yNTExMTAxMDEyMTVaMCAxHjAcBgNVBAoMFU9yZ2FuaXphdGlvbiwgQ049T0lEQzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANBGwJ/qpTQNiSgUglSE2UzEkUow+wS8r67etxoEhlzJZfgK/k5TfG1wICDqapHAxEVgUM10aBHRctNocA5wmlHtxdidhzRZroqHwpKy2BmsKX5Z2oK25RLpsyusB1KroemgA/CjUnI6rIL1xxFn3KyOFh1ZBLUQtKNQeMS7HFGgSDAp+sXuTFujz12LFDugX0T0KB5a1+0l8y0PEa0yGa1oi6seONx849ZHxM0PRvUunWkuTM+foZ0jZpFapXe02yWMqhc/2iYMieE/3GvOguJchJt6R+cut8VBb6ubKUIGK7pmoq/TB6DVXpvsHqsDJXechxcicu4pdKVDHSec850CAwEAAaNQME4wHQYDVR0OBBYEFK7RqjoodSYVXGTVEdLf3kJflP/sMB8GA1UdIwQYMBaAFK7RqjoodSYVXGTVEdLf3kJflP/sMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADNZkxlFXh4F45muCbnQd+WmaXlGvb9tkUyAIxVL8AIu8J18F420vpnGpoUAE+Hy3evBmp2nkrFAgmr055fAjpHeZFgDZBAPCwYd3TNMDeSyMta3Ka+oS7GRFDePkMEm+kH4/rITNKUF1sOvWBTSowk9TudEDyFqgGntcdu/l/zRxvx33y3LMG5USD0x4X4IKjRrRN1BbcKgi8dq10C3jdqNancTuPoqT3WWzRvVtB/q34B7F74/6JzgEoOCEHufBMp4ZFu54P0yEGtWfTwTzuoZobrChVVBt4w/XZagrRtUCDNwRpHNbpjxYudbqLqpi1MQpV9oht/BpTHVJG2i0ro=
# Passphrase of the keystore
passphrase: secret
# Resource URL for the idp metadata
idp_metadata_url: classpath:metadata/mujina.local.idp.metadata.xml
# SingleSignOnServiceLocation
single_sign_on_service_location: http://localhost:8080/SingleSignOnService
# ACS location
acs_location_path: /saml/SSO
# Protocol binding
protocol_binding: urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST
# Do we sign the authnRequest
needs_signing: true
# Are endpoints compared. If so then pay notice to the base_url when behind a load balancer
compare_endpoints: true
[此數(shù)據(jù)只是虛構(gòu)數(shù)據(jù)]
Metadata.xml文件中數(shù)據(jù)配置
<?xml version="1.0" encoding="UTF-8"?>
entityID="http://mock-idp" cacheDuration="P1Y"> aXphdGlvbiwgQ049T0lEQzAeFw0xNTExMTExMDEyMTVaFw0yNTExMTAxMDEyMTVaMCAxHjAcBgNV BAoMFU9yZ2FuaXphdGlvbiwgQ049T0lEQzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ANBGwJ/qpTQNiSgUglSE2UzEkUow+wS8r67etxoEhlzJZfgK/k5TfG1wICDqapHAxEVgUM10aBHR ctNocA5wmlHtxdidhzRZroqHwpKy2BmsKX5Z2oK25RLpsyusB1KroemgA/CjUnI6rIL1xxFn3KyO Fh1ZBLUQtKNQeMS7HFGgSDAp+sXuTFujz12LFDugX0T0KB5a1+0l8y0PEa0yGa1oi6seONx849ZH xM0PRvUunWkuTM+foZ0jZpFapXe02yWMqhc/2iYMieE/3GvOguJchJt6R+cut8VBb6ubKUIGK7pm oq/TB6DVXpvsHqsDJXechxcicu4pdKVDHSec850CAwEAAaNQME4wHQYDVR0OBBYEFK7RqjoodSYV XGTVEdLf3kJflP/sMB8GA1UdIwQYMBaAFK7RqjoodSYVXGTVEdLf3kJflP/sMAwGA1UdEwQFMAMB Af8wDQYJKoZIhvcNAQEFBQADggEBADNZkxlFXh4F45muCbnQd+WmaXlGvb9tkUyAIxVL8AIu8J18 F420vpnGpoUAE+Hy3evBmp2nkrFAgmr055fAjpHeZFgDZBAPCwYd3TNMDeSyMta3Ka+oS7GRFDeP kMEm+kH4/rITNKUF1sOvWBTSowk9TudEDyFqgGntcdu/l/zRxvx33y3LMG5USD0x4X4IKjRrRN1B bcKgi8dq10C3jdqNancTuPoqT3WWzRvVtB/q34B7F74/6JzgEoOCEHufBMp4ZFu54P0yEGtWfTwT zuoZobrChVVBt4w/XZagrRtUCDNwRpHNbpjxYudbqLqpi1MQpV9oht/BpTHVJG2i0ro=
Location="http://localhost:8080/SingleSignOnService"/>
在初始化時整合這些配置數(shù)據(jù),重定向發(fā)送到single_sign_on_service_location配置的地址中,由用戶輸入認(rèn)證憑證,并提交。
完成憑證驗(yàn)證之后,攜帶需要響應(yīng)的數(shù)據(jù)返回給前端。
前端通過調(diào)用后勤系統(tǒng)sso接口地址,將密鑰/公鑰及token傳入后端,然后由后端對IDP系統(tǒng)進(jìn)行驗(yàn)證。
通過后由后端跳轉(zhuǎn)到系統(tǒng)頁面當(dāng)中完成認(rèn)證操作。
5 結(jié)語
隨著數(shù)字化和云計算進(jìn)程的深入,企業(yè)信息安全的維度和邊界越來越立體,越來越復(fù)雜。保障企業(yè)信息安全服務(wù)的時間,已經(jīng)由原來的8小時,轉(zhuǎn)變?yōu)楝F(xiàn)在的7*24小時,全年365天不間斷提供服務(wù)。同時,也不再有物理地點(diǎn)的限制,數(shù)據(jù)泄露會對企業(yè)造成巨大的損失,身份認(rèn)證是訪問系統(tǒng)資源的入口,對于保障企業(yè)信息資源的安全極其重要。集團(tuán)公司提供的統(tǒng)一的ADFS身份認(rèn)證服務(wù),通過多因素身份認(rèn)證、弱密碼監(jiān)測、密碼錯誤次數(shù)超限賬號鎖定策略、大數(shù)據(jù)分析等安全技術(shù),可以提供非常安全地對信息資源的保護(hù),同時還可以促進(jìn)企業(yè)各信息系統(tǒng)數(shù)據(jù)共享,提升企業(yè)效率。渤海油田后勤系統(tǒng)與集團(tuán)公司的基于SAML 2.0協(xié)議的、啟用雙因素認(rèn)證的ADFS聯(lián)合身份認(rèn)證服務(wù)的集成,實(shí)現(xiàn)了后勤系統(tǒng)用戶需要登錄集團(tuán)公司統(tǒng)一的ADFS單點(diǎn)登錄頁面進(jìn)行AD身份認(rèn)證。只有通過了短信或郵件接收的登錄驗(yàn)證碼和AD密碼的雙重認(rèn)證后,才能訪問后勤系統(tǒng)資源,極大提高了后勤支持管理系統(tǒng)身份認(rèn)證的安全性,降低了后勤信息數(shù)據(jù)泄露的風(fēng)險。同時,后勤系統(tǒng)也不再需要管理用戶密碼,減輕了系統(tǒng)工作量;后勤系統(tǒng)的用戶也不再需要記憶和維護(hù)不同的用戶賬號和密碼,提高了工作效率。渤海油田生產(chǎn)作業(yè)的正常運(yùn)行與優(yōu)質(zhì)的后勤作業(yè)管理密不可分,后勤資源管理系統(tǒng)正是為了高效支持渤海油田后勤業(yè)務(wù)的運(yùn)營而建設(shè)的,ADFS身份認(rèn)證在后勤資源管理系統(tǒng)中的應(yīng)用,為后勤系統(tǒng)提供了強(qiáng)有力的保障,具有極大的推廣價值。
參考文獻(xiàn)
[1] 灰信網(wǎng).基于SAML的ADFS認(rèn)證集成方案[EB/OL].https://www.freesion.com/article/8033848552,2021-8-20.