当前位置: 首页 > 知识库问答 >
问题:

如何将authenticationManager编写为bean(将SamlAuthenticationManager转换为bean)

习高格
2023-03-14

我正在我的web应用程序中实现Spring SAML,该应用程序已经实现了Spring Security,因此我现在有两个身份验证管理器。由于spring总是引用最后声明的authenticationManager,我找到了将一个authentitionManager定义为bean的解决方案。

以下是我在转换为bean之前的AuthenticationManager:

<authentication-manager alias="samlAuthenticationManager">
    <!-- Register authentication manager for SAML provider -->
    <authentication-provider ref="samlAuthenticationProvider"/>
    <!-- Register authentication manager for administration UI -->
    <authentication-provider>
        <user-service id="adminInterfaceService">
            <user name="admin" password="admin" authorities="ROLE_ADMIN"/>
        </user-service>
    </authentication-provider>
</authentication-manager>

以下是我转换为bean后的代码

<beans:bean id="samlAuthenticationManager" class="org.springframework.security.authentication.ProviderManager">
    <beans:constructor-arg>
        <beans:list>
            <beans:bean class="org.springframework.security.saml.SAMLAuthenticationProvider">
                <beans:property name="userDetails" value="adminInterfaceService"/>
            </beans:bean>
        </beans:list>
    </beans:constructor-arg>
</beans:bean>
<user-service id="adminInterfaceService">
    <user name="admin" password="admin" authorities="ROLE_ADMIN"/>
</user-service>

身份验证提供程序定义如下:

<beans:bean id="samlAuthenticationProvider" class="org.springframework.security.saml.SAMLAuthenticationProvider">
        <!-- OPTIONAL property: can be used to store/load user data after login -->
        <!--
        <beans:property name="userDetails" ref="bean" />
        -->
</beans:bean>

我得到以下异常:

无法将“java.lang.String”类型的值转换为所需的“org.springframework.security.saml.userdetails”类型。属性“userDetails”的“SAMLUserDetailsService”

同样的请帮忙。我将不胜感激。

提前谢谢

共有1个答案

梁丘钊
2023-03-14

在这里找到解决方案 https://github.com/spring-projects/spring-security/issues/2163

只是必须在身份验证管理器中使用id而不是别名

你应该不需要用春豆。如果不指定ID,将会覆盖“默认”实例。这就是标准春豆的工作方式。在引用的线程中,用户指定的是别名,而不是ID,因此不会创建单独的实例。这也是普通bean实例的工作方式,所以我不确定我们是否应该偏离这一点。

 类似资料:
  • 问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想要改善这个问题吗? 更新问题,使它成为Stack Overflow的主题。 2年前关闭。 改善这个问题 我正在使用大量SQL表在Web应用程序中工作。我需要为每个表创建一个Java bean类。我正在寻找一种可以将SQL表转换为Java Bean类的工具。这将有助于节省时间。 这是一个例子: studentTable(studen

  • 问题内容: 我在使用Python将字符串更改为大写时遇到问题。在我的研究中,我知道了,但是没有用。 如下代码: 给出此错误信息: 我的问题是: 如何在Python中将字符串转换为大写? 问题答案: 请参见字符串方法。

  • 问题内容: 有没有一种简单的方法可以避免处理文本编码问题? 问题答案: 您确实无法避免处理文本编码问题,但是Apache Commons中已有一些解决方案: 至: 至: 您只需要选择所需的编码即可。

  • 问题内容: 您能否指导我如何将图像从URL转换为base64编码? 问题答案: 我认为应该是:

  • 问题内容: 是否可以添加到列中以将其值转换为小写的属性?而不是通过PHP对每个单个值执行此操作? 问题答案: 您可能可以通过在插入或更新时触发的触发器来做到这一点。就我自己而言,我只想创建一个包含所讨论列的小写版本的视图。视图的SQL可能看起来像

  • 问题内容: 我正在使用A 将Json从Web转换为字符串。 这可能很简单,但是我似乎无法将此字符串转换为。 我怎样才能做到这一点? 问题答案: 请参阅文档和示例。