APP下载

后勤支持管理系统ADFS认证集成的应用与研究

2021-09-24斯琦

科技尚品 2021年9期
关键词:后勤管理安全管理

斯琦

摘 要:后勤支持管理系统服务于整个渤海油田的后勤保障工作。渤海油田范围内的所有海上平台及基地等内、外部单位,均需使用该系统进行海上后勤管理的保障工作。故此,该系统不仅仅服务于企业内部,还有很多外部单位也需要访问。同时,随着渤海油田信息化建设的不断深入,以及国家对国有企业信息系统安全等保要求的逐步提升,原来基于内网环境下的LDAP协议的AD域登录模式,已经不能满足渤海油田信息化的安全要求。文章探讨如何采用基于SAML的ADFS联合身份验证,实现用户身份验证的安全性,保证渤海油田后勤支持管理系统的安全外网访问,以供参考。

关键词:ADFS;安全管理;后勤管理;渤海油田

中图分类号:TP311.52;TP309.2文献标识码:A文章编号:1674-1064(2021)09-0-04

DOI:10.12310/j.issn.1674-1064.2021.09.020

1 概况

后勤支持管理系统,服务于渤海油田的后勤业务管理,面向内外部单位提供后勤业务系统支撑。后勤支持管理系统通过PC、移动终端(手机)等途径采集后勤作业数据,通过PC端浏览器及移动端App向用户提供服务。系统采用PAAS云+IAAS云架构,应用服务器搭建在PAAS云,数据库服务器搭建在IAAS云,依托总公司PAAS云\IAAS云服务器资源,向系统提供计算、存储、网络、负载平衡等能力。

后勤支持管理系统采用业内主流的Java EE三层架构设计,PC端采用B/S方式实现。移动App端采用总公司移动云,系统通过数据接口与App端进行业务数据对接。

后勤支持管理系统主要使用以下核心技术:表现层采用Spring MVC做控制,HTML做页面展现,CSS样式做页面美化,ECharts做曲线,Ajax做数据交互。业务层主框架使用SpringBoot,使用流程工具,加入消息引擎做消息推送,项目根据业务情况,自主开发调控模型来做调控算法。持久层采用MybatisPlus做数据持久化,HikariCP建立数据库连接池。

2 现状与要求

后勤支持管理系统之前使用系统自己的用户密码管理体系,没有与AD对接。因为总公司系统安全等保的要求,如果需要提供外网访问的系统,均需要保证用户身份验证的安全性,必须采用基于SAML的ADFS联合身份验证方案。需要按照以下流程完成ADFS联合身份验证。

ADFS用户认证流程图中一共分三个角色,如图1所示:

Server Provider(SP):提供服务和资源的服务提供者;

Identity Provider(IDP):用来身份鉴别的服务器,主要是认证用户,同时生成ADFS服务器(SAML断言);

Client:用户访问服务的客户端,比如浏览器。

验证步骤要求主要如下:

用户尝试访问SP提供的服务。

SP根据配置生成一个SAML格式的身份验证请求数据包。配置包括ADFS服务器地址、证书、IDP返回SP消息数据的URL地址、身份认证协议等信息,通过浏览器重定向到ADFS服务器进行SAML身份认证。

IDP解码SAML请求,并对用户进行身份验证,IDP要求提供有效登录凭据以验证用户身份。

IDP生成一个SAML响应,其中包含经过验证的用户的用户名等信息。按照SAML 2.0规范,此响应将使用IDP的DSA/RSA公钥和私钥进行数字签名。

IDP将信息返回到用户的浏览器。根据配置的返回路径,浏览器将该信息转发到SP。

SP使用IDP的公钥验证SAML响应。如果成功验证该响应,SP则会将用户重定向到目标网址。当认证步骤中发生认证错误时,SP通过浏览器向当前用户显示明确的错误信息,如密码错误、密码过期、账号已锁定等。

用户成功登录系统[1]。

3 ADFS登录的方法

在用户访问站点(后勤支持管理系统网站)时,初始化时调用后勤项目的登录接口。

登录接口通过配置信息,生成数据包,并把地址转发到ADFS服务器登录地址。

使用ADFS界面作为登录界面,由用户开始填写登录信息。

执行登录时将登录信息发送到IDP服务中。

由IDP来做用户凭证的信息认证,经过验证信息后再生成数据包,响应给浏览器。

浏览器拿到IDP的响应后,去访问后勤系统的ssoLogin接口。

ssoLogin接口对密钥/公钥及token的数据处理后,然后使用公钥验证IDP服务的响应,如IDP服务响应并返回“成功”状态,将浏览器页面重定向到后勤系统首页并进行页面渲染;否则在浏览器页面渲染ADFS验证失败页面。

后勤支持管理系统向用户授权访问系统的权限。

4 ADFS集成配置说明

使用spring框架實现saml协议认证: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

[此數据只是虚构数据]

Metadata.xml文件中数据配置

<?xml version="1.0" encoding="UTF-8"?>

entityID="http://mock-idp" cacheDuration="P1Y">

MIIDEzCCAfugAwIBAgIJAKoK/heBjcOYMA0GCSqGSIb3DQEBBQUAMCAxHjAcBgNVBAoMFU9yZ2Fu

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=

urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

Location="http://localhost:8080/SingleSignOnService"/>

在初始化時整合这些配置数据,重定向发送到single_sign_on_service_location配置的地址中,由用户输入认证凭证,并提交。

完成凭证验证之后,携带需要响应的数据返回给前端。

前端通过调用后勤系统sso接口地址,将密钥/公钥及token传入后端,然后由后端对IDP系统进行验证。

通过后由后端跳转到系统页面当中完成认证操作。

5 结语

随着数字化和云计算进程的深入,企业信息安全的维度和边界越来越立体,越来越复杂。保障企业信息安全服务的时间,已经由原来的8小时,转变为现在的7*24小时,全年365天不间断提供服务。同时,也不再有物理地点的限制,数据泄露会对企业造成巨大的损失,身份认证是访问系统资源的入口,对于保障企业信息资源的安全极其重要。集团公司提供的统一的ADFS身份认证服务,通过多因素身份认证、弱密码监测、密码错误次数超限账号锁定策略、大数据分析等安全技术,可以提供非常安全地对信息资源的保护,同时还可以促进企业各信息系统数据共享,提升企业效率。渤海油田后勤系统与集团公司的基于SAML 2.0协议的、启用双因素认证的ADFS联合身份认证服务的集成,实现了后勤系统用户需要登录集团公司统一的ADFS单点登录页面进行AD身份认证。只有通过了短信或邮件接收的登录验证码和AD密码的双重认证后,才能访问后勤系统资源,极大提高了后勤支持管理系统身份认证的安全性,降低了后勤信息数据泄露的风险。同时,后勤系统也不再需要管理用户密码,减轻了系统工作量;后勤系统的用户也不再需要记忆和维护不同的用户账号和密码,提高了工作效率。渤海油田生产作业的正常运行与优质的后勤作业管理密不可分,后勤资源管理系统正是为了高效支持渤海油田后勤业务的运营而建设的,ADFS身份认证在后勤资源管理系统中的应用,为后勤系统提供了强有力的保障,具有极大的推广价值。

参考文献

[1] 灰信网.基于SAML的ADFS认证集成方案[EB/OL].https://www.freesion.com/article/8033848552,2021-8-20.

猜你喜欢

后勤管理安全管理
如何进行小学后勤管理工作的改革创新
学校总务后勤管理工作之我见
电力企业后勤管理工作信息化创新探讨
论加强建筑施工安全管理的措施
浅谈现代汽车检测技术与安全管理