Skip to content

概览

samlesa 的定位不是“只提供若干 XML helper”,而是把常见 SAML 2.0 接入拆成两层:

  • 高层实体层:ServiceProviderIdentityProvider
  • 低层能力层:SamlLibExtractorSoapUtility、schema validator

如果你的目标是做一个可落地的 SSO / SLO 集成,优先从高层实体 API 开始。只有在你已经明确需要自定义模板、单独验签或做库级二次封装时,再往低层走。

当前实现重点覆盖以下能力:

  • SP 发起登录请求,IdP 发起登录响应
  • IdP 解析登录请求,SP 解析登录响应
  • Redirect / POST / SimpleSign / Artifact Binding
  • Metadata 生成、导出、解析和部分增强元素支持
  • XML Signature 验证
  • Assertion 加密和解密
  • XML Schema 校验
  • SAML 2.0 增强元素构建与集成
  • redirect
  • post
  • simpleSign
  • artifact
  • redirect
  • post
  • Artifact Resolve / Artifact Response

实体构造默认值来自 src/entity.ts

配置项默认值
strictSecuritytrue
allowLegacySha1false
allowCertificateUsageMismatchfalse
messageSigningOrdersign-then-encrypt
allowCreatefalse
isAssertionEncryptedfalse
requestSignatureAlgorithmRSA_SHA512
dataEncryptionAlgorithmAES_256_GCM
keyEncryptionAlgorithmRSA_OAEP_MGF1P
relayState''

当前实现的默认安全组合是:

  • 消息签名:RSA_SHA512
  • 断言数据加密:AES_256_GCM
  • 会话密钥加密:RSA_OAEP_MGF1P

Constants.algorithmsurn.ts 中暴露了较完整的算法常量与映射:

  • 签名算法:RSA-SHA1/224/256/384/512、ECDSA-SHA256/384/512、RSA-PSS-SHA256、Ed25519、Ed448
  • 摘要算法:SHA-1 / SHA-224 / SHA-256 / SHA-384 / SHA-512
  • 数据加密:AES-CBC / AES-GCM / AES-CTR / TripleDES
  • 密钥加密:RSA-OAEP / RSA-1_5 / AES Key Wrap / AES GCM Key Wrap

如果你只做标准企业接入,文档和示例建议围绕默认的 RSA + AES-GCM + OAEP 组合展开。

当前版本默认已经包含这些安全收紧:

  • 拒绝 XXE、DOCTYPE、ENTITY 注入
  • 先做 schema 校验,再进入签名验证和业务字段校验
  • Response 只接受单个顶层 AssertionEncryptedAssertion
  • SOAP ArtifactResponse 只接受单个 resolved message
  • 默认拒绝 SHA-1 家族签名算法
  • 默认校验证书用途,不允许随意把 encryption cert 当 signing cert 用

适用于大多数应用:

  • ServiceProvider()
  • IdentityProvider()
  • createLoginRequest()
  • createLoginResponse()
  • parseLoginRequest()
  • parseLoginResponse()

适用于 metadata 管理和调试:

  • SPMetadata
  • IdPMetadata

适用于模板定制、验签、解密、调试和库级封装:

  • SamlLib
  • Extractor
  • Soap
  • Utility
  • validate()
  • validateMetadata()

如果你已经拿到了对端 metadata,优先使用 metadata 驱动配置,而不是手写 endpoint 和证书。这和当前实现的工作方式最一致,也最不容易把签名期望、证书用途和 endpoint 配错。