如何使用 Spring Security SAML 插件在项目中指定 updatePasswordUrl,如 loginFormUrl = '/saml/login'

Posted

技术标签:

【中文标题】如何使用 Spring Security SAML 插件在项目中指定 updatePasswordUrl,如 loginFormUrl = \'/saml/login\'【英文标题】:How to specify updatePasswordUrl like loginFormUrl = '/saml/login' in a project using Spring Security SAML plugin如何使用 Spring Security SAML 插件在项目中指定 updatePasswordUrl,如 loginFormUrl = '/saml/login' 【发布时间】:2017-07-09 10:00:35 【问题描述】:

我在我的项目中使用Spring Security SAML,它工作正常。我的 SamlSecurityConfig.groovy 文件中有以下内容

loginFormUrl = '/saml/login'

所以当我转到 /saml/login 时,它会将我重定向到 IDP 的登录页面,在 IDP 登录后,我会重定向到我的应用程序。 现在我想知道 Spring Security SAML 中是否有任何配置,我可以在其中指定更新密码 url,通过转到该 url,我的应用程序应该重定向到我的 IDP 的忘记密码/更新密码页面,并且在 IDP 上重置密码后我应该得到重定向到我的应用程序的登录页面。

有人可以帮忙吗?

以下是我的 SamlSecurityConfig.groovy 文件

security 
    saml 
        userAttributeMappings = ['userName': 'userName']
        userGroupToRoleMapping = [:]
        active = true
        afterLoginUrl = '/'
        afterLogoutUrl = '/'
        loginFormUrl = '/saml/login'
        userGroupAttribute = "memberOf"
        responseSkew = 10000
        idpSelectionPath = '/'
        autoCreate 
            active =  true
            key = 'username'
            assignAuthorities = true
        
        metadata 
            defaultIdp = 'http://idp.ssocircle.com'
            url = '/saml/metadata'
            //default idp info
            idp
                file = 'security/idp.xml'
                alias = 'http://idp.ssocircle.com'
            
            sp 
                file = 'security/sp.xml'
                alias = 'myapp'
                defaults
                    local = true
                    alias = 'myapp'
                    signingKey = 'ping'
                    encryptionKey = 'ping'
                    tlsKey = 'ping'
                    requireArtifactResolveSigned = false
                    requireLogoutRequestSigned = false
                    requireLogoutResponseSigned = false
                    idpDiscoveryEnabled = true
                
            
        
        keyManager 
            storeFile = 'classpath:security/keystore.jks'
            storePass = 'nalle123'
            passwords = [ ping: 'ping123' ]
            defaultKey = 'ping'
        
    

【问题讨论】:

【参考方案1】:

身份验证本身和密码更改超出了 SAMLv2 规范的范围,因此它不会真正被 Spring Security SAML 扩展之类的 SAMLv2 SP 实现所涵盖。实际上,SP 甚至不知道身份验证发生在 IdP 端的位置或方式。

--> 作为 SP 的您的应用不应该为此烦恼。

【讨论】:

以上是关于如何使用 Spring Security SAML 插件在项目中指定 updatePasswordUrl,如 loginFormUrl = '/saml/login'的主要内容,如果未能解决你的问题,请参考以下文章

如何配置 Spring Security SAML 以与 Okta 一起使用?

spring-security saml2:如何获取当前用户?

如何使用 Spring Security SAML 配置远程发现?

如何在同一应用程序中使用 spring-sample 示例配置 Spring Security 基本身份验证和 SAML 身份验证

spring security saml使用哪个密钥?

使用 Spring Security saml 的 IDP 会话超时