gpt4 book ai didi

java - 我可以将 3 种不同的身份验证方案放在同一个 spring 安全配置中吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:27:31 25 4
gpt4 key购买 nike

我的要求是提供:

  1. 基于用户 ID 密码的身份验证。
  2. 打开基于 id 的身份验证
  3. 基于 URL 的身份验证(它是我们拥有的自定义 SSO 实现)

在同一个项目中。

我尝试将 Spring 安全性插入到现有项目中(为简单起见,代码被删除):

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-2.0.1.xsd">

<http auto-config="false">
<remember-me user-service-ref="rememberMeUserService" key="some custom key" /> <!-- TODO: Key made for testing reasons.... -->
<intercept-url pattern='/mainApplication/Main screen.html' access="ROLE_ADMIN"/>
<intercept-url pattern='/**' filters="none"/> <!-- Allow entry to login screen -->
<openid-login authentication-failure-url="/Login.html?error=true" default-target-url="/mainApplication/Main screen.html" user-service-ref="openIdUserService"/>
<form-login login-page="/Login.html" authentication-failure-url="/Login.html?error=true" always-use-default-target="true" default-target-url="/mainApplication/Main screen.html"/>
</http>

<beans:bean id="rememberMeUserService" class="mypackage.CustomUserService">
<beans:property name="usersService" ref="usersService"></beans:property>
</beans:bean>

<!-- Common login shared entry-point for both Form and OpenID based logins -->
<beans:bean id="entryPoint" class="org.springframework.security.ui.webapp.AuthenticationProcessingFilterEntryPoint">
<beans:property name="loginFormUrl" value="/Login.html" />
</beans:bean>
<authentication-manager alias="authenticationManager"/>

<beans:bean id="MyCustomAuthenticationProvider" class="mypackage.CustomAuthenticationProvider">
<custom-authentication-provider />
<beans:property name="usersService" ref="usersService"></beans:property>
</beans:bean>

<beans:bean id="openIdAuthenticationProvider" class="org.springframework.security.providers.openid.OpenIDAuthenticationProvider">
<custom-authentication-provider />
<beans:property name="userDetailsService" ref="openIdUserService"/>
</beans:bean>

<beans:bean id="openIdUserService" class="mypackage.OpenIDUserDetailsService">
<beans:property name="usersService" ref="usersService"/>
</beans:bean>

<!-- Great, now i want to include SSO based sign on -->
<!-- need to intercept a url of the form : /myApp/customLogin/<key> where <key> is my token key -->

</beans:beans>

如上所述,我需要跟踪以下形式的 url:/myApp/customLogin/12345,其中 1235 是 token key ,我们最初使用的是(为简单起见删除了代码)

<servlet-mapping>
<servlet-name>mySSOCapture</servlet-name>
<url-pattern>/myApp/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>

我应该在这里做什么来启用 spring security 来帮助我管理这第三个身份验证方案?

一个推论问题是:我可以在同一个项目中有多个身份验证提供程序吗?如果是,那么它们如何与不同的功能相匹配(例如,一种提供基于 url 的身份验证,一种提供匿名身份验证等)?

最佳答案

无法直接回答问题,但来自身份管理部门的“有用提示”:并非所有身份验证系统都具有相同的信任值 - 平等对待它们严重违反了良好的安全设计。

我希望这对您的设计有所帮助...

关于java - 我可以将 3 种不同的身份验证方案放在同一个 spring 安全配置中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1678539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com