2.Spring Security SAML 更新内容

2.更新内容

本节包含已发布的Spring SAML版本的重要更改概述。

2.1 1.0.1.FINAL中的新功能,改进和修复

版本1.0.1.FINAL完全向后兼容1.0.0.FINAL并包含以下更改:

  • 添加了对Spring Security 4.0的支持
  • 添加了与Okta的集成指南
  • MaxAuthenticationAge时间支持的有效期超过21天
  • 现在支持不使用JKS密钥库的部署
  • 服务提供者现在可以使用相同的绑定定义多个断言使用者端点
  • 次要修复和文档改进

2.2 1.0.0.FINAL中的新功能,改进和修复

最终版本与之前的RC版本不直接兼容,请确保根据以下指南和更改迁移您的代码:

  • 元数据签名现在支持自定义keyInfoGenerator和signingAlgorithm,签名可以按实体启用
  • SAMLContextProvider为PKIXTrustEvaluator,PKIXInformationResolver和MetadataResolver提供了新的自定义功能
  • CertPathPKIXTrustEvaluator支持安全提供程序的自定义和证明路径的显式验证
  • MetadataCredentialResolver可以配置为从XML元数据和/或ExtendedMetadata加载数据
  • PKIXInformationResolver具有CRL群的扩展点
  • 对日志记录和错误处理的改进,配置文件实现现在抛出过滤器对象中记录的异常并且使用ServletExceptions失败,示例应用程序新显示处理这些错误
  • 使用的OpenSAML版本已更新至2.6.1
  • SAMLDefaultLogger现在记录其他信息,例如NameID
  • 为ArtifactResolution启用在HttpClient对象中设置的默认值(例如ProxySettings)
  • JKSKeyManager现在支持没有密码的密钥库
  • SAMLContextProviderLB现在支持空的contextPath,并包含请求的pathInfo数据
  • 现在可以在MetadataGenerator中单独设置实体ID和EntityDescriptor ID
  • ECP现在优先于SAMLEntryPoint中的发现
  • 现在,在显示之前完成对本地元数据的签名,这允许手动修改本地文件中的元数据
  • ArtifactResolutionProfileImpl现在支持通过扩展定制已使用的SocketFactory
  • 生成的元数据中的ID现在在null时自动创建,ID基于清理的entityID以符合xsd:ID(和xsd:NCName)类型,通过下划线替换所有非法字符来清除EntityID
  • 支持工件解析中的主机名验证
  • 完成的文件
  • 可以从Authentication对象中排除SAML凭据
  • ParserPool的已禁用延迟节点扩展,可提高解析小型XML文档的性能
  • HttpSessionStorage现在在成功接收消息后被清除,以节省内存
  • 可以仅包含经过身份验证的断言或所有断言的属性
  • 从HTTPS加载元数据期间用于信任验证的新套接字工厂
  • 可以禁用对IDP初始化SSO的支持
  • 现在,元数据别名的使用是可选的
  • 示例应用程序的新外观
  • 清除MetadataGenerator和ExtendedMetadata中的重复值
  • SAMLCredential现在包含用于处理String SAML属性的工具方法

2.3 1.0.0.FINAL中的重要代码更改

以下是自Spring SAML 1.0 RC2以来主要代码和结构更改的概述,可能会影响向后兼容性。

模块名称

  • 模块saml2-core被重命名为core,jar和maven工件名称保持不变
  • 模块saml2-sample被重命名为sample,jar和maven artifact名称保持不变
  • 模块src被重命名为docs,jar和maven artifact名称保持不变

描述符securityContext.xml

  • 文件saml2-sample / src / main / resources / security / securityContext.xml已移至sample / src / main / webapp / WEB-INF / securityContext.xml
  • UI的管理部分现在使用用户名/密码进行保护
  • 更新ParserPool的初始化以禁用延迟节点扩展
  • ArtifactResolution中的HttpClient是线程安全的
  • 添加了新的失败处理程序(failureRedirectHandler)
  • MetadataGenerator bean现在演示了ExtendedMetadata的用法
  • FilesystemMetadataProvider已替换为ResourceBackedMetadataProvider
  • 文件sample / src / main / resources / security / idp.xml已移至sample / src / main / resources / metadata / idp.xml

ArtifactResolutionProfileBase

  • 在检查工件响应问题时立即抛出SAMLException而不是CredentialExpiredException

HttpSessionStorage

  • 现在,成功收到消息后,存储将被清除

MetadataDisplayFilter

  • 新强制属性KeyManager(自动装配)

MetadataGenerator

  • 生成的元数据不再默认签名(在ExtendedMetadata.signMetadata中启用)并禁用IDP发现(在ExtendedMetadata.includeDiscovery中启用)
  • 以下字段已从MetadataGenerator移至ExtendedMetadata:entityAlias - >别名signMetadata - > signMetadatasigningKey - > signingKeyencryptionKey - > encryptionKeytlsKey - > tlsKeyincludeDiscovery - > idpDiscoveryEnabledcustomDiscoveryURL - > idpDiscoveryURLcustomDiscoveryResponseURL - > idpDiscoveryResponseURL
  • 删除方法signSAMLObject(移至SAMLUtil)和getKeyInfoGeneratorName(移至ExtendedMetadata)
  • 默认情况下,第一个结合是现在HTTP-POST而不是HTTP神器,终点为Web SSO不再包括PAOS绑定,设置属性bindingsSSO与价值观“神器”,“后”,“PAOS”的向后兼容性
  • 默认情况下,不再包含Web SSO持有者密钥的端点,将属性bindingsHoKSSO设置为值“artifact”和“post”以实现向后兼容性
  • 默认情况下,MetadataGeneratorFilter不再将属性entityAlias设置为值defaultAlias,手动设置值以实现向后兼容性

SAMLAuthenticationProvider

  • property forcePrincipalAsString现在默认设置为true

SAMLCredential

  • 方法getAttributeByName已重命名为getAttribute

SAMLDiscovery

  • 使用ServletException而不是SAMLRuntimeException失败

SAMLLogoutProcessingFilter

  • 在接受LogoutRequest而不是SAMLRuntimeException期间抛出ServletException错误

SAMLUtil

  • 删除了未使用的getDefaultBinding方法

SingleLogoutProfileImpl

  • sendLogoutResponse签名已更改
  • 更改了错误处理,抛出由Filter处理的SAMLStatusException,记录并发送SAML响应

WebSSOProfileImpl

  • 在上下文中丢失数据时抛出SAMLException而不是SAMLRuntimeException

WebSSOProfileConsumerImpl

  • 新属性includeAllAttributes,对于原始行为设置为true
  • 在检查响应问题即时和断言问题时抛出SAMLException而不是CredentialExpiredException


(1)