首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自2.1.0 -> 2.5.0SAML的Spring安全性-许多降级

来自2.1.0 -> 2.5.0SAML的Spring安全性-许多降级
EN

Stack Overflow用户
提问于 2021-05-31 22:00:36
回答 2查看 349关注 0票数 2

关于SpringSecurity2.5.0的小问题。

以前在2.1.0时有一个Spring + Security项目。

现在我进行了升级,跳到了Spring 2.5.0 +spring-security-saml2 2-service-provider 5.5.0

业务逻辑工作正常,我们正在使用此SAML身份验证,没有问题。

我们拥有的一个片段是:

代码语言:javascript
复制
  //local signing (and decryption key)
        Saml2X509Credential signingCredential = getSigningCredential();
        //IDP certificate for verification of incoming messages
        Saml2X509Credential idpVerificationCertificate = getVerificationCertificate();
        String acsUrlTemplate = "{baseUrl}" + Saml2WebSsoAuthenticationFilter.DEFAULT_FILTER_PROCESSES_URI;
        return RelyingPartyRegistration.withRegistrationId(registrationId)
                .remoteIdpEntityId(idpEntityId)
                .idpWebSsoUrl(webSsoEndpoint)
                .credentials(c -> c.add(signingCredential))
                .credentials(c -> c.add(idpVerificationCertificate))
                .localEntityIdTemplate(localEntityIdTemplate)
                .assertionConsumerServiceUrlTemplate(acsUrlTemplate)
                .build();

再一次,工作得很好。

我们把这个项目推到了最新版本(截至本文撰写之时) 2.5.0,并在代码片段的大多数行中看到了反对意见。

尝试查看SpringSecurity5.5.0,其中建议使用assertionConsumerServiceLocation。

但是我很难理解,什么是字符串取代了一切?

代码语言:javascript
复制
return RelyingPartyRegistration.withRegistrationId(registrationId).assertionConsumerServiceLocation("what comes here?").build();

有什么帮助吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-26 06:51:16

在回顾Security之后,这与新的security 5.5+版本相当:

代码语言:javascript
复制
RelyingPartyRegistration getSaml2AuthenticationConfiguration()  {
        //remote IDP entity ID
        String idpEntityId = "https://simplesaml-for-spring-saml.cfapps.io/saml2/idp/SSOService.php";

        //remote WebSSO Endpoint - Where to Send AuthNRequests to
        String webSsoEndpoint = "https://simplesaml-for-spring-saml.cfapps.io/saml2/idp/metadata.php";

        String acsUrlTemplate = "{baseUrl}" + Saml2WebSsoAuthenticationFilter.DEFAULT_FILTER_PROCESSES_URI;

        //local signing (and decryption key)
        Saml2X509Credential relyingPartySigningCredential = getSigningCredential();
        //IDP certificate for verification of incoming messages
        Saml2X509Credential assertingPartyVerificationCredential = getVerificationCertificate();

        //local registration ID
        String registrationId = "registrationId";
        //local entity ID - autogenerated based on URL
        String localEntityIdTemplate = "localEntityIdTemplate";

        return RelyingPartyRegistration
                .withRegistrationId(registrationId)
                .entityId(localEntityIdTemplate)
                .assertionConsumerServiceLocation(acsUrlTemplate)
                .signingX509Credentials(c -> c.add(relyingPartySigningCredential))
                .assertingPartyDetails(details -> details
                        .verificationX509Credentials(c -> c.add(assertingPartyVerificationCredential))
                        .singleSignOnServiceLocation(webSsoEndpoint)
                        .entityId(idpEntityId)).build();

    }
票数 0
EN

Stack Overflow用户

发布于 2021-06-02 12:55:37

反对的动机是我们应该在规范语言中使用RelyingPartyRegistration

对约定进行了更改,以便更好地遵循注册所表示的元数据描述符。

例如,RelyingPartyRegistration.ProviderDetails包含一个名为getWebSsoUrl的方法,但这并不能很容易地映射到IDPSSODescriptor中的任何东西。将其命名为getSingleSignOnServiceLocation会更清楚,因为这些信息位于。

您可以看到应该在方法的javadoc中使用什么。就像这样:

代码语言:javascript
复制
/**
 * @deprecated Use {@link #assertionConsumerServiceLocation} instead.
 */
@Deprecated
public Builder assertionConsumerServiceUrlTemplate(String assertionConsumerServiceUrlTemplate) {
    this.assertionConsumerServiceLocation = assertionConsumerServiceUrlTemplate;
    return this;
}

或者打开Spring安全官方存储库中的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67780616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档