Spring Boot:如何为SAML指定nameID策略

问题描述

我正在使用Spring Boot v2.3.3。

我试图通过使用v5.2中添加到spring的saml支持向我的应用程序添加SSO支持:(https://docs.spring.io/spring-security/site/docs/5.2.1.RELEASE/reference/htmlsingle/#saml2

我对Spring和SAML还是很陌生,尽管该参考页面提到当前功能集“支持加密的NameId元素”,但是我不确定如何配置应用程序以添加名称ID格式,或者如何发送身份提供者的名称ID。

在这里https://github.com/spring-projects/spring-security/tree/5.3.x/samples/boot/saml2login)复制了Spring Boot示例应用程序,但是我的IDP表示他们也需要一个nameID。

在理解我需要添加内容方面的任何帮助将不胜感激。

解决方法

在使用基于代码的配置时,您可以使用

  @Bean
  public WebSSOProfileOptions defaultWebSSOProfileOptions() {
    WebSSOProfileOptions webSSOProfileOptions = new WebSSOProfileOptions();
    // do not enable IdP-Proxy support
    webSSOProfileOptions.setIncludeScoping(false);
    webSSOProfileOptions.setNameID(NameIDType.TRANSIENT);
    return webSSOProfileOptions;
  }

但是,通常,IdP在IdP元数据文件中定义它支持的NameID格式,Spring Security SAML将使用指定的第一个NameID格式。您可以重新排序。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...