我正在学习实施Saml,到目前为止,我已从此链接https://github.com/spring-projects/spring-security-saml/tree/master/sample下载了一个带有saml的spring security示例,并参考了参考指南和其他各种SAML链接。
我需要问的一点是,因为服务提供商必须发送Saml AuthRequest,我们在程序中定义它。
我已经尝试实现该示例并创建虚拟项目以使用OpenAM,这对于SSO工作正常,但我不明白Saml Auth请求的生成位置。
I got to know that the SP's system itself is going to generate authentication request and send it to IDP using SAML 2.0 protocol. I need help about the parameters i need to pass so that i can customize my own saml authentication request
任何帮助都得到高度赞赏!提前致谢。 (我知道这是一个愚蠢的问题,但是因为我没有得到任何想法而无法帮助它。)
答案 0 :(得分:3)
根据所选的身份验证提供程序和过滤器链的配置执行身份验证请求。使用像Spring这样的高级框架时,这些方面的一些细节是透明的。 Spring SAML基于OpenSAML库,提供了一组工具,以便轻松处理Spring应用程序的整个AuthN流程。
确实,要正确完成此过程,您需要设置应用程序端点(entityID),验证各方身份的证书,保护应用程序路径,配置绑定协议,在IdP和您之间建立信任关系应用程序交换一些元数据。
例如,请考虑以下代码存根,取自 vdenotaris/spring-boot-security-saml-sample :
@Bean
public MetadataGenerator metadataGenerator() {
MetadataGenerator metadataGenerator = new MetadataGenerator();
metadataGenerator.setEntityId("com:vdenotaris:spring:sp");
metadataGenerator.setExtendedMetadata(extendedMetadata());
metadataGenerator.setIncludeDiscoveryExtension(false);
metadataGenerator.setKeyManager(keyManager());
return metadataGenerator;
}
您可以检查我的自定义参数以生成元数据,自定义基于SAML的SSO的应用程序设置。
通常通过在第三方资源(即网站)上重定向用户来执行AuthN请求,其中提供凭证。验证后,IdP将SAML信封发送给请求者应用程序(服务提供商),其中包含用户信息。