欢迎光临
我们一直在努力

大型制造业企业统一身份认证平台建设方案

大型制造业企业统一身份认证平台建设方案

一、项目背景与目标

1.1 现状与痛点

某大型制造业企业在长期信息化建设过程中,先后上线了ERP、MES、PLM、CRM、OA、SCM、HR等十余套业务系统。这些系统由不同厂商在不同时期建设,技术栈涵盖Java、Python、C#/.NET、PHP等多种语言,形成了典型的“系统烟囱”格局:

  • 账号体系分散:员工需要在多个系统中维护不同的账号密码,记忆负担重,密码管理混乱
  • 认证方式各异:各系统独立实现登录认证,有Form表单登录、Windows集成认证、Token认证等多种方式,缺乏统一标准
  • 权限管理割裂:用户权限在各系统中分别配置,员工调岗或离职时难以在多个系统中同步更新权限
  • 安全风险突出:部分老旧系统仍使用弱密码策略,缺乏多因素认证和审计能力
  • 对接成本高昂:新系统上线需要逐个与现有系统进行接口对接,重复建设严重

1.2 建设目标

本次统一身份认证平台建设需达成以下核心目标:

  • 统一身份源:建立企业级唯一的身份数据源,所有系统的用户信息从此平台同步
  • 统一登录门户:提供集中式的登录入口和“一键直达”的应用导航门户
  • 多协议兼容:同时支持CAS、OAuth 2.0、OIDC、SAML 2.0等主流认证协议,适配不同技术栈的系统
  • 异构系统对接:Java、Python、C#等不同语言开发的系统均能平滑接入
  • 安全合规:支持多因素认证(MFA)、审计日志、密码策略等安全能力
  • 高可用可扩展:支持集群部署,满足制造业7×24小时连续生产对系统稳定性的要求
  • 1.3 技术选型:为什么选择MaxKey

    结合目标客户“大型制造业”的特点和需求,推荐采用MaxKey作为统一身份认证平台的核心。

    评估维度MaxKeyKeycloakCasdoorApereo CAS
    协议支持全面性 ★★★★★(8大协议) ★★★★ ★★★★ ★★★★★
    制造业案例 ★★★★★(中国航空制造技术研究院等) ★★★ ★★ ★★★
    国内生态与支持 ★★★★★(中文文档完善) ★★★ ★★★★ ★★
    异构系统集成 ★★★★(Java生态+标准协议) ★★★★ ★★★★(多语言SDK) ★★★
    身份同步能力 ★★★★★(SCIM 2.0+Connector) ★★★★ ★★★ ★★
    部署运维复杂度 ★★★★ ★★★ ★★★★★ ★★★
    多租户支持 ★★★★★ ★★★★ ★★★★ ★★★

    MaxKey的核心优势在于:

    • 已有多家制造业成功案例:包括中国航空制造技术研究院等标杆客户,说明其在制造业场景中经过了生产验证
    • 协议支持最为全面:支持OAuth 2.x/OpenID Connect、SAML 2.0、JWT、CAS、SCIM 2.0等8大标准协议,能够覆盖企业内部各种异构系统的接入需求
    • 国内开源IAM第一品牌:中文文档完善,社区响应及时,符合“自主可控”的政策导向
    • 开箱即用的身份连接器:预置了与Active Directory、LDAP、JDBC、SCIM 2.0、企业微信、钉钉、飞书等系统的同步器,大幅降低对接存量系统的开发工作量
    • 基于Java EE微服务架构:采用Spring、MySQL、Tomcat、Redis、Kafka等成熟技术栈,与企业现有Java技术栈匹配度高,便于二次开发和运维

    二、总体架构设计

    2.1 逻辑架构

    ┌─────────────────────────────────────────────────────────────────────────────┐
    │ 统一登录门户 (Portal) │
    │ SSO登录页 | 应用导航 | 自助服务 | MFA │
    └─────────────────────────────────────────────────────────────────────────────┘


    ┌─────────────────────────────────────────────────────────────────────────────┐
    │ MaxKey 统一身份认证平台 │
    ├─────────────────────────────────────────────────────────────────────────────┤
    │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
    │ │ 认证服务 │ │ 令牌服务 │ │ 会话管理 │ │ 审计日志 │ │
    │ │ (maxkey-web)│ │ (Token) │ │ (Session) │ │ (Audit) │ │
    │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │
    │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
    │ │ 协议适配层 │ │ 用户管理 │ │ 权限管理 │ │ 多租户管理 │ │
    │ │ (Protocols) │ │ (IDM) │ │ (RBAC) │ │ (Multi-tenant)│ │
    │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │
    ├─────────────────────────────────────────────────────────────────────────────┤
    │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
    │ │ OAuth2.0 │ │ OIDC │ │ SAML 2.0 │ │ CAS │ │ JWT │ │
    │ │ 适配器 │ │ 适配器 │ │ 适配器 │ │ 适配器 │ │ 适配器 │ │
    │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
    └─────────────────────────────────────────────────────────────────────────────┘


    ┌─────────────────────────────────────────────────────────────────────────────┐
    │ 身份同步层 (Synchronizer) │
    │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
    │ │LDAP/AD │ │ JDBC │ │ SCIM 2.0 │ │ 企业微信 │ │ 钉钉/飞书 │ │
    │ │ Connector│ │ Connector│ │ Connector│ │ Connector│ │ Connector│ │
    │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
    └─────────────────────────────────────────────────────────────────────────────┘


    ┌─────────────────────────────────────────────────────────────────────────────┐
    │ 企业身份数据源 │
    │ HR系统 │ AD域控 │ LDAP │ 企业微信 │ 钉钉 │ 飞书 │
    └─────────────────────────────────────────────────────────────────────────────┘

    2.2 部署架构

    ┌─────────────────────────────────┐
    │ 用户 (Web/移动端) │
    └───────────────┬─────────────────┘
    │ HTTPS

    ┌─────────────────────────────────┐
    │ Nginx / F5 负载均衡器 │
    │ (SSL终结、路由分发、健康检查) │
    └───────────────┬─────────────────┘

    ┌─────────────────────────┼─────────────────────────┐
    │ │ │
    ▼ ▼ ▼
    ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
    │ MaxKey认证节点1 │ │ MaxKey认证节点2 │ │ MaxKey认证节点3 │
    │ (maxkey-web) │ │ (maxkey-web) │ │ (maxkey-web) │
    └────────┬────────┘ └────────┬────────┘ └────────┬────────┘
    │ │ │
    └───────────────────────┼───────────────────────┘

    ┌────────────┴────────────┐
    │ │
    ▼ ▼
    ┌─────────────────┐ ┌─────────────────────┐
    │ Redis集群 │ │ MySQL主从集群 │
    │ (会话共享/缓存) │ │ (用户/应用/权限数据) │
    └─────────────────┘ └─────────────────────┘
    │ │
    ▼ ▼
    ┌─────────────────────────────────────────┐
    │ Kafka / RocketMQ 集群 │
    │ (身份同步消息队列) │
    └─────────────────────────────────────────┘

    2.3 核心组件说明

    组件用途生产建议
    MaxKey认证服务 处理登录认证、票据颁发、单点登录 至少3节点集群
    MaxKey管理服务 后台管理(用户、应用、权限配置) 与认证服务分离部署
    Nginx/F5 负载均衡、SSL终结、静态资源缓存 配置健康检查
    MySQL主从集群 存储用户、组织、应用、权限等核心数据 主从复制+定期备份
    Redis集群 分布式会话存储、缓存加速 至少6节点(3主3从)
    Kafka/RocketMQ 身份同步事件消息分发 3节点集群

    三、统一登录门户设计

    3.1 门户功能架构

    统一登录门户是员工日常访问所有业务系统的入口,需要提供良好的用户体验。

    ┌─────────────────────────────────────────────────────────────────┐
    │ 🔐 企业统一身份认证平台 [语言切换] [帮助] │
    ├─────────────────────────────────────────────────────────────────┤
    │ │
    │ ┌─────────────────────────┐ │
    │ │ 欢迎回来,张工 │ │
    │ │ 请输入您的凭证继续 │ │
    │ │ │ │
    │ │ 👤 用户名/工号 │ │
    │ │ [________________] │ │
    │ │ │ │
    │ │ 🔒 密码 │ │
    │ │ [________________] │ │
    │ │ │ │
    │ │ 📷 验证码 │ │
    │ │ [____] [验证码图片] │ │
    │ │ │ │
    │ │ [ 登 录 ] │ │
    │ │ │ │
    │ │ 🔑 扫码登录 │ SSO │ │
    │ │ 企业微信/钉钉 │ │
    │ └─────────────────────────┘ │
    │ │
    │ 忘记密码? | 首次登录引导 │
    └─────────────────────────────────────────────────────────────────┘

    3.2 登录后应用导航(门户首页)

    ┌─────────────────────────────────────────────────────────────────┐
    │ 🔐 企业统一身份认证平台 张工 (生产部) [退出] │
    ├─────────────────────────────────────────────────────────────────┤
    │ │
    │ 📊 我的应用 │
    │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │
    │ │ ERP │ │ MES │ │ PLM │ │ CRM │ │ OA │ │ 邮件 │ │
    │ │生产管理│ │制造执行│ │产品管理│ │客户管理│ │办公自动化│ │企业邮箱│ │
    │ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ │
    │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │
    │ │ SCM │ │ BI │ │ HR │ │ 更多 │ │
    │ │供应链 │ │商业智能│ │人事管理│ │ + │ │
    │ └──────┘ └──────┘ └──────┘ └──────┘ │
    │ │
    │ 📌 最近访问 │
    │ • ERP系统 – 生产工单审批 (刚刚) │
    │ • MES系统 – 产线报表查看 (10分钟前) │
    │ │
    │ 🔔 待办提醒 (3) │
    │ • 您有2条ERP生产工单待审批 │
    │ • 您有1条OA报销流程待处理 │
    │ │
    │ 🛡️ 安全状态: ✅ 已启用MFA | 上次登录: 2026-08-09 08:30 │
    └─────────────────────────────────────────────────────────────────┘

    3.3 门户技术实现

    登录门户采用前后端分离架构:

    • 前端:基于React/Ant Design构建,支持响应式布局,适配PC和移动端
    • 后端:MaxKey认证服务提供RESTful API,支持标准OAuth 2.0/OIDC登录流程
    • 应用图标与跳转:每个应用配置图标、名称和SSO跳转URL,用户点击后通过对应协议(CAS/OAuth2/OIDC/SAML)自动完成登录跳转

    四、多协议支持与异构系统集成

    4.1 协议适配矩阵

    MaxKey支持8大标准认证协议,可根据不同系统的技术栈和接入需求灵活选择:

    协议适用场景典型系统类型MaxKey支持度
    OAuth 2.0/OIDC 现代Web应用、移动App、API网关 新开发系统、微服务 ★★★★★
    CAS 传统Java Web应用 老旧Java系统、高校/科研类系统 ★★★★★
    SAML 2.0 企业级应用、跨国集团系统 Oracle、SAP等商业软件 ★★★★★
    JWT 无状态API认证、微服务间认证 RESTful API、微服务 ★★★★★
    FormBased 传统表单登录系统 定制开发的B/S系统 ★★★★
    TokenBased 桌面应用、移动应用 C/S架构系统 ★★★★
    SCIM 2.0 身份供给同步 HR系统、云应用 ★★★★★

    4.2 多语言应用集成方案

    针对企业内部Java、Python、C#等不同语言开发的系统,MaxKey提供多种集成方式:

    4.2.1 Java应用集成(OAuth 2.0/OIDC)

    // Spring Boot应用集成MaxKey OIDC
    @Configuration
    @EnableWebSecurity
    public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
    http
    .oauth2Login(oauth2 -> oauth2
    .loginPage("https://maxkey.company.com/login")
    .clientRegistrationRepository(clientRegistrationRepository())
    .authorizationEndpoint(auth -> auth
    .baseUri("/oauth2/authorization"))
    .redirectionEndpoint(redir -> redir
    .baseUri("/login/oauth2/code/*"))
    )
    .oauth2Client(withDefaults());
    }

    @Bean
    public ClientRegistrationRepository clientRegistrationRepository() {
    return new InMemoryClientRegistrationRepository(
    ClientRegistration.withRegistrationId("maxkey")
    .clientId("your-client-id")
    .clientSecret("your-client-secret")
    .clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_BASIC)
    .authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
    .redirectUri("{baseUrl}/login/oauth2/code/{registrationId}")
    .scope("openid", "profile", "email")
    .authorizationUri("https://maxkey.company.com/auth/authorize")
    .tokenUri("https://maxkey.company.com/auth/token")
    .userInfoUri("https://maxkey.company.com/auth/userinfo")
    .jwkSetUri("https://maxkey.company.com/auth/jwks")
    .issuerUri("https://maxkey.company.com")
    .userNameAttributeName("sub")
    .build()
    );
    }
    }

    4.2.2 Python应用集成(OAuth 2.0/OIDC)

    # Django应用集成MaxKey OIDC
    # 使用 django-oauth-toolkit 或 python-social-auth

    import requests
    from authlib.integrations.django_client import OAuth

    oauth = OAuth()
    oauth.register(
    name='maxkey',
    client_id='your-client-id',
    client_secret='your-client-secret',
    server_metadata_url='https://maxkey.company.com/.well-known/openid-configuration',
    client_kwargs={
    'scope': 'openid profile email'
    }
    )

    # 登录视图
    def login(request):
    redirect_uri = request.build_absolute_uri('/auth/callback')
    return oauth.maxkey.authorize_redirect(request, redirect_uri)

    # 回调处理
    def callback(request):
    token = oauth.maxkey.authorize_access_token(request)
    user_info = oauth.maxkey.parse_id_token(request, token)
    # 创建/更新本地用户会话
    request.session['user'] = user_info
    return redirect('/dashboard')

    4.2.3 C#/.NET应用集成(OAuth 2.0/OIDC)

    // ASP.NET Core 集成MaxKey OIDC
    using Microsoft.AspNetCore.Authentication.OpenIdConnect;
    using Microsoft.IdentityModel.Protocols.OpenIdConnect;

    public void ConfigureServices(IServiceCollection services)
    {
    services.AddAuthentication(options =>
    {
    options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
    })
    .AddCookie()
    .AddOpenIdConnect(options =>
    {
    options.Authority = "https://maxkey.company.com";
    options.ClientId = "your-client-id";
    options.ClientSecret = "your-client-secret";
    options.ResponseType = OpenIdConnectResponseType.Code;
    options.Scope.Add("openid");
    options.Scope.Add("profile");
    options.Scope.Add("email");
    options.SaveTokens = true;
    options.GetClaimsFromUserInfoEndpoint = true;
    });
    }

    public void Configure(IApplicationBuilder app)
    {
    app.UseAuthentication();
    app.UseAuthorization();
    // …
    }

    4.2.4 传统CAS协议应用接入

    对于仍在使用CAS协议的老旧Java应用,MaxKey提供CAS协议适配器:

    <!– 在web.xml中配置CAS Client –>
    <filter>
    <filter-name>CAS Authentication Filter</filter-name>
    <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
    <init-param>
    <param-name>casServerLoginUrl</param-name>
    <param-value>https://maxkey.company.com/cas/login</param-value>
    </init-param>
    <init-param>
    <param-name>serverName</param-name>
    <param-value>https://app.company.com</param-value>
    </init-param>
    </filter>

    4.3 身份同步方案

    4.3.1 多源身份数据聚合

    制造业企业通常存在多个身份数据源(HR系统、AD域控、企业微信等)。MaxKey通过身份同步层实现多源数据聚合:

    ┌─────────────────────────────────┐
    │ MaxKey 身份同步层 │
    │ (Synchronizer) │
    └─────────────────────────────────┘

    ┌───────────────────────┼───────────────────────┐
    │ │ │
    ▼ ▼ ▼
    ┌───────────────┐ ┌───────────────┐ ┌───────────────┐
    │ HR系统 │ │ AD域控 │ │ 企业微信 │
    │ (JDBC同步器) │ │ (LDAP同步器) │ │ (API同步器) │
    │ 员工主数据 │ │ 域账号/密码 │ │ 组织/通讯录 │
    └───────────────┘ └───────────────┘ └───────────────┘

    同步策略:

    • HR系统为权威数据源:员工入职、离职、调岗信息从HR系统同步(每日凌晨全量+实时增量)
    • AD域控同步:Windows域账号与MaxKey用户关联,支持Kerberos/SPNEGO域认证
    • 企业微信/钉钉同步:组织架构和通讯录双向同步,支持扫码登录
    4.3.2 SCIM 2.0标准供给

    对于支持SCIM 2.0协议的云应用或第三方系统,MaxKey提供标准的SCIM 2.0接口进行身份供给:

    MaxKey ──(SCIM 2.0)──► 云应用A (如Salesforce)
    ──(SCIM 2.0)──► 云应用B (如Workday)
    ──(SCIM 2.0)──► 第三方SaaS平台

    4.4 单点登录流程(OIDC标准模式)

    以员工访问ERP系统为例,完整SSO流程如下:

    ERP系统MaxKey认证服务统一登录门户员工ERP系统MaxKey认证服务统一登录门户员工#mermaid-svg-9xkCBb84gS3bhsZg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-9xkCBb84gS3bhsZg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-9xkCBb84gS3bhsZg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-9xkCBb84gS3bhsZg .error-icon{fill:#552222;}#mermaid-svg-9xkCBb84gS3bhsZg .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-9xkCBb84gS3bhsZg .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-9xkCBb84gS3bhsZg .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-9xkCBb84gS3bhsZg .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-9xkCBb84gS3bhsZg .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-9xkCBb84gS3bhsZg .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-9xkCBb84gS3bhsZg .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-9xkCBb84gS3bhsZg .marker{fill:#333333;stroke:#333333;}#mermaid-svg-9xkCBb84gS3bhsZg .marker.cross{stroke:#333333;}#mermaid-svg-9xkCBb84gS3bhsZg svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-9xkCBb84gS3bhsZg p{margin:0;}#mermaid-svg-9xkCBb84gS3bhsZg .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-9xkCBb84gS3bhsZg text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-9xkCBb84gS3bhsZg .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-9xkCBb84gS3bhsZg .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-9xkCBb84gS3bhsZg .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-9xkCBb84gS3bhsZg .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-9xkCBb84gS3bhsZg #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-9xkCBb84gS3bhsZg .sequenceNumber{fill:white;}#mermaid-svg-9xkCBb84gS3bhsZg #sequencenumber{fill:#333;}#mermaid-svg-9xkCBb84gS3bhsZg #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-9xkCBb84gS3bhsZg .messageText{fill:#333;stroke:none;}#mermaid-svg-9xkCBb84gS3bhsZg .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-9xkCBb84gS3bhsZg .labelText,#mermaid-svg-9xkCBb84gS3bhsZg .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-9xkCBb84gS3bhsZg .loopText,#mermaid-svg-9xkCBb84gS3bhsZg .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-9xkCBb84gS3bhsZg .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-9xkCBb84gS3bhsZg .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-9xkCBb84gS3bhsZg .noteText,#mermaid-svg-9xkCBb84gS3bhsZg .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-9xkCBb84gS3bhsZg .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-9xkCBb84gS3bhsZg .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-9xkCBb84gS3bhsZg .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-9xkCBb84gS3bhsZg .actorPopupMenu{position:absolute;}#mermaid-svg-9xkCBb84gS3bhsZg .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-9xkCBb84gS3bhsZg .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-9xkCBb84gS3bhsZg .actor-man circle,#mermaid-svg-9xkCBb84gS3bhsZg line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-9xkCBb84gS3bhsZg :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}alt[未登录][已登录]访问门户首页检查登录状态(验证Session/TGT)返回未登录展示登录页面输入账号密码+MFA提交认证请求验证凭证、创建会话返回Token/票据展示应用导航会话有效展示应用导航点击ERP系统图标请求ERP的SSO票据生成ST/Code返回票据携带票据跳转 (OIDC Authorization Code)后台验证票据 (Token Exchange)返回用户身份信息建立本地会话展示ERP首页(无需再次登录)

    五、安全设计

    5.1 多因素认证(MFA)

    MaxKey支持多种MFA方式,可根据安全等级灵活配置:

    MFA方式适用场景安全等级
    TOTP时间令牌 全员标配(Google Authenticator/Microsoft Authenticator)
    短信验证码 备用方式、移动端场景
    邮件验证码 低风险操作
    扫码登录 企业微信/钉钉/飞书扫码
    域认证 Windows域环境(Kerberos/SPNEGO)

    MFA策略配置:

    • 全员强制开启TOTP + 短信验证码双因素
    • 财务系统、ERP核心模块等敏感应用额外触发二次密码校验
    • 非信任网络/IP触发增强验证

    5.2 二次密码登录

    MaxKey特有的二次密码登录功能,针对关键系统提供额外保护:

    针对特定用户、特定应用进行二次密码校验,防止关键系统因账号代理导致的信息泄露,如财务系统或个人工资账单。

    配置示例:

    • 所有用户访问财务系统时,需额外输入一次独立密码
    • 生产主管访问MES系统修改工艺参数时触发二次确认

    5.3 审计与合规

    • 全生命周期审计:对用户从创建到注销的全过程进行记录追溯
    • 访问行为审计:记录每次登录时间、IP、设备、访问的应用
    • 安全风险预警:异常登录检测(异地登录、非工作时间登录、暴力破解)
    • IP地理定位:支持Ip2region或GeoLite2精准IP定位
    • SIEM对接:审计日志可导出至企业SIEM系统进行集中监控

    5.4 密码策略

    • 最小长度、复杂度要求(大小写+数字+特殊字符)
    • 定期更换(如90天)
    • 历史密码防重用(如最近5次不可重复)
    • 首次登录强制修改初始密码
    • 自助密码重置服务

    六、实施路线图

    6.1 分阶段实施计划

    阶段周期核心任务交付物
    第一阶段:基础平台建设 第1-2月 MaxKey平台部署、高可用集群搭建、基础配置 生产环境可用的MaxKey集群
    第二阶段:身份数据整合 第2-3月 HR系统同步器开发、AD域控对接、企业微信同步 统一身份数据源
    第三阶段:门户与核心应用接入 第3-4月 统一登录门户上线、ERP/MES/OA等核心系统SSO接入 核心系统SSO可用
    第四阶段:全面推广 第4-6月 剩余系统接入、MFA推广、培训与文档 全系统覆盖

    6.2 应用接入优先级

    优先级系统接入协议说明
    P0 ERP、MES OIDC 最核心业务系统,优先接入
    P0 OA、企业邮箱 OIDC/CAS 高频使用系统
    P1 PLM、CRM OIDC/SAML 产品数据与客户管理
    P1 SCM、HR OIDC/JWT 供应链与人事管理
    P2 BI、报表系统 OIDC 数据分析类系统
    P2 其他辅助系统 按需适配 根据实际情况选择协议

    6.3 风险与应对

    风险影响应对措施
    老旧系统不支持标准协议 无法直接接入SSO 使用MaxKey ExtendApi适配器或FormBased适配器进行封装
    身份数据不一致 同步后用户信息冲突 确立HR系统为权威数据源,制定数据清洗和映射规则
    业务中断风险 切换期间影响生产 采用灰度发布策略,新旧认证方式并行运行一段时间
    员工适应成本 初期使用不习惯 充分培训、制作操作手册、设立支持热线

    七、二次开发指南

    7.1 开发环境搭建

    # 克隆MaxKey源码
    git clone https://gitee.com/dromara/MaxKey.git
    cd MaxKey

    # 配置JDK和Gradle环境
    # 修改 set_maxkey_env.sh 中的安装路径

    # 构建项目
    ./gradlew clean build

    7.2 自定义协议适配器

    对于企业内部特有的非标准认证系统,可通过MaxKey的ExtendApi进行扩展:

    // 参考:org.maxkey.authz.exapi.endpoint.adapter.ExtendApiTimestampSignAdapter
    public class CustomExtendApiAdapter extends AbstractAuthorizeAdapter {

    @Override
    public boolean authenticate(AuthorizeRequest request) {
    // 实现自定义认证逻辑
    // 例如:对接企业内部的Token验证服务
    String token = request.getParameter("token");
    return validateWithInternalService(token);
    }

    private boolean validateWithInternalService(String token) {
    // 调用企业内部认证API
    // 返回验证结果
    }
    }

    7.3 自定义身份同步器

    对接企业特有的身份源系统:

    // 在 maxkey-synchronizers 模块下创建新的同步器
    public class CustomHrSyncSynchronizer implements Synchronizer {

    @Override
    public void sync() {
    // 1. 从HR系统拉取用户和组织数据
    List<User> users = fetchFromHrSystem();

    // 2. 转换为MaxKey用户模型
    List<UserModel> maxKeyUsers = convert(users);

    // 3. 通过Kafka/RocketMQ分发同步事件
    sendToMessageQueue(maxKeyUsers);
    }
    }

    7.4 二次开发注意事项

  • 保持与上游同步:定期合并MaxKey官方仓库的更新,获取安全补丁和新功能
  • 模块化修改:尽量在独立的模块中进行定制,避免修改核心代码
  • 充分测试:每次修改后执行完整的回归测试
  • 文档记录:详细记录所有定制化修改,便于后续维护
  • 八、总结

    本方案基于MaxKey开源项目,为大型制造业企业设计了一套完整的统一身份认证平台。方案的核心价值在于:

  • 打破系统烟囱:通过统一身份认证和单点登录,消除多系统间的认证壁垒
  • 多协议兼容:同时支持OAuth 2.0/OIDC、CAS、SAML 2.0、JWT等8大标准协议,适配Java、Python、C#等不同技术栈的系统
  • 统一身份源:通过身份同步层整合HR系统、AD域控、企业微信等身份数据源,建立单一可信身份源
  • 安全合规:提供MFA、二次密码登录、审计日志等完整安全能力
  • 国产自主可控:基于Apache 2.0许可证开源,符合企业自主可控要求
  • 制造业验证:已在中国航空制造技术研究院等制造业标杆企业中得到生产验证
  • 该方案的实施将显著提升企业的身份管理效率、降低安全风险、改善员工体验,为企业的数字化转型奠定坚实的身份基础设施。

    赞(0)
    未经允许不得转载:171主机测评 » 大型制造业企业统一身份认证平台建设方案
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址