# BPM网站单点登录实现指南

# 一. 概述

本文档介绍如何在BPM网站中实现单点登录(SSO)功能,包括配置统一登录页面和使用身份验证提供程序。

# 二. 配置统一登录页面

# 2.1 修改配置文件

  1. 文件位置:BPM网站项目的WEB根目录下的appsettings.json
  2. 找到Cookie配置节:
    "Cookie": {
      "LoginPath": "单点登录页面URL",
      "LogoutPath": "单点登录登出URL"
    }
    
  3. LoginPathLogoutPath替换为公司的单点登录系统地址。

# 2.2 效果验证

  • 访问BPM网站时将自动跳转到指定SSO登录页
  • 登出操作也将重定向到SSO系统的登出页面

# 三. 自定义身份验证程序

# 3.1 准备工作

  1. 打开BPM网站项目(建议使用VisualStudio)
  2. 打开根目录下的Program.cs文件
  3. 查找与单点登录相关的代码(可搜索"单点登录"关键词)
    • 找到168行代码,把它放出来
    • 找到190行代码,也把它放出来

# 3.2 修改处理程序

我们看到单点登录程序叫:SSOAuthHandler,现在我们去修改它。

  1. 展开BPM子目录,再展开sso子目录
  2. 找到SSOAuthHandler.cs文件并打开
  3. 转到38行,这里就是单点登录的实现
  4. 重点关注根据ssotoken转换为BPM账号的逻辑(示例中为49行)

重要提示:示例中的转换逻辑为直接使用,实际应用时需根据实际业务需求修改此部分代码,确保ssotoken能正确转换为有效的BPM账号。

# 3.3 测试流程

  1. 不带令牌访问 → 应跳转登录页

    • 关闭当前浏览器,重新打开
    • 输入网址,如https://localhost:5001/index,由于未携带单点登录信息,系统会要求登录
  2. 带令牌访问 → 应直接进入系统

    • 关闭当前浏览器,重新打开
    • 输入网址,如https://localhost:5001/index?ssotoken=99199,BPM网站打开了且未出现登录界面

# 四. 使用现有身份验证提供程序

# 4.1 微软官方支持的提供程序

  1. 参考文档:ASP.NET Core 外部身份验证提供程序 (opens new window)
  2. 支持的提供程序:Google、Facebook、Microsoft、Twitter等
  3. 配置示例:
    services.AddAuthentication()
        .AddMicrosoftAccount(microsoftOptions => { ... })
        .AddGoogle(googleOptions => { ... })
        .AddTwitter(twitterOptions => { ... })
        .AddFacebook(facebookOptions => { ... });
    

# 4.2 查找更多提供程序

通过NuGet包管理器,可找到更多官方和第三方提供的身份验证程序包,操作步骤:

  1. 在VisualStudio中打开BPM网站项目
  2. 右键点击WEB目录下的"依赖项"
  3. 选择"管理NuGet程序包"
  4. 在"浏览"页签,使用关键字(如Microsoft.AspNetCore.Authentication)搜索。

# 五. 注意事项

  1. 自定义验证程序

    • 不要直接修改原始文件,应创建副本进行修改
    • 避免升级时自定义代码被覆盖
  2. 安全考虑

    • ssotoken到账号的转换逻辑需要严格实现
    • 生产环境中令牌应有有效期和验证机制
  3. 部署前检查

    • 全面测试单点登录流程
    • 验证令牌失效时的处理逻辑
    • 确保错误页面友好且不泄露敏感信息

通过以上步骤,即可实现BPM网站的单点登录功能,既可以使用自定义验证程序,也可以集成现有的身份验证提供程序。