Java中的SAML集成

Java中的SAML集成,java,spring,saml,Java,Spring,Saml,我正在从事一个项目,在该项目中我必须执行SAML实施,我有一些疑问: 什么是元数据文件,它在SAML中如何有用 SAML如何确保在运输途中中间的恶意用户不改变来自IDP的响应?验证恶意用户的身份 可用的SAML xml模式的数量。如何使用它在java中生成模拟SAML请求 我已经成功地用过了。它使用了spring安全性的基本概念,并添加了对SAML的支持 元数据文件及其在SAML中的用途? 元数据包含有关服务提供商或身份提供商的基本信息。有关示例,请参见 SAML如何确保IDP中的响应在传

我正在从事一个项目,在该项目中我必须执行SAML实施,我有一些疑问:

  • 什么是元数据文件,它在SAML中如何有用
  • SAML如何确保在运输途中中间的恶意用户不改变来自IDP的响应?验证恶意用户的身份
  • 可用的SAML xml模式的数量。如何使用它在java中生成模拟SAML请求
  • 我已经成功地用过了。它使用了spring安全性的基本概念,并添加了对SAML的支持

    元数据文件及其在SAML中的用途?

    元数据包含有关服务提供商或身份提供商的基本信息。有关示例,请参见

    <强> SAML如何确保IDP中的响应在传输过程中没有被恶意用户更改?< /强>

    SAML断言由私钥签名。收到后,将对其进行验证(使用公钥)。因为私钥是秘密的,所以没有人能够修改SAML文档并对其签名

    如何使用它在java中生成模拟SAML请求?

    对于模拟SAML请求,您可以发布硬编码的XML文档(SAML断言)。要使这种方法发挥作用,您需要进行以下更改 1) 更新该模拟文档中的时间戳 2) 将Spring SAML配置为使用非原始SAML断言。此解决方案仅适用于开发


    另一个选项在(使用Spring SAML示例应用程序)

    中描述,我将扩展Bartosz的答案。我将假设您想要实现一个服务提供者并使用SAMLWebsso概要文件

    什么是元数据文件,它在SAML中如何有用

    元数据允许自动导入IdP或SP信息(其EntityID、端点、证书、支持的绑定)

    SAML如何确保响应的到来 来自IdP的信息不会被中的恶意用户更改 中途?验证恶意用户的身份

    这是一个非常重要的部分。Basicali-数据由发行人的私钥签名。有两种选择——整体 消息已签名或断言已签名(或两者都已签名)。服务提供商必须检查发卡机构的id(EntityID)、有效期和签名。在这里,我建议您使用成熟的框架(spring security或OpenSAML),并检查所用版本的安全论坛,因为某些版本容易受到“签名注入”攻击

    以下是可用的SAML xml模式列表 . 我将如何使用它来生成模拟SAML java中的请求

    当然,您应该了解SAML身份验证流和传递的消息以及不同的选项(例如,重定向绑定使用压缩和编码的消息,后期绑定仅编码)


    我建议你看看ssocycle.com,他们有公共IdP,你可以用来测试和解码saml消息的工具。您不能简单地模仿这些消息,因为它们在时间上的有效性有限。我为开发和测试所做的-我安装了simpleSAMLphp,这是一个简单而有效的php工具,用于配置SAML IdP或SP。

    2)SAML断言由身份提供商签名,服务提供商使用服务提供商的公钥验证签名。我会尝试从一开始就强制执行签名验证,即使看起来更困难。我已经看到一些应用程序在没有任何票证验证的情况下投入生产:/关于通过私钥进行签名的断言……我如何创建私钥?我如何签署断言?(即使答案很长,我也不介意。谢谢)IdP需要对断言进行签名,SP只是根据配置的证书验证签名。通常图书馆会为你做这件事,IdP必须给你它的公共证书。关于元数据文件的一些问题。1) 要集成SAML,我是否需要SP和IdP的元数据文件?2) 我是否手动创建元数据文件?3) 你能简单地解释一下entityID是什么吗。您不需要强制使用任何元数据文件,IdP需要关于SP的信息(EntityID、端点、证书(可选)和SP需要关于IdP的信息(EntityID、端点、证书)2,您可以,或者如果您有服务,您可以导出元数据3.各方(IdP、每个SP)需要它的标识符。就是这样。只是一个标识符。理论上它可以是任何字符串,但我们建议以URL的形式(例如,区分不同的环境、阶段等)(可能是一个愚蠢的问题)SAML断言和请求/响应之间的区别是什么?断言像是请求和响应的一个umberalla名称吗?它看起来很无聊,但你真的应该阅读规范。断言是一个“声明”或IdP在SAML响应中发送给SP的任何数据。通常它可以被视为主题(用户的)SAML Req是从SP发送到IdP(请求登录)的消息,响应是从IdP发送到SP的SAMLResponse(带有主题、断言和签名).Req/Resp与单次注销具有不同的上下文,但首先您应该了解步骤1。因此,在我的情况下,我有一个web门户作为SP,并且我正在尝试使用SAML对我公司的IdP实现SSO。我已经有一个登录系统,该系统使用数据库检索用户数据以登录他们。但是对于该项目,我希望删除登录并实现SAML。因此,当用户单击登录链接或sumthing时,他们将使用SSO登录。1)我可以采取哪些步骤来启动此过程?2) 我无法理解这些断言是如何工作的。如何使用java创建authnrequest?