java - 使用 Spring Security 无需授权的预认证

标签 java spring security authentication spring-security

我的要求是:

在我的应用程序中,当用户通过登录屏幕(而不是使用 Spring Security)登录时,第一次由自定义的第三方 API 执行身份验证。现在,我们几乎没有使用其余服务调用的增强功能。根据要求,在从我们的应用程序进行任何 rest 调用之前,我们需要根据数据库重新验证用户。由于用户在使用登录屏幕登录时已经通过验证,并且请求中提供了这些详细信息,我计划使用 spring security 重新验证用户(预验证场景)。我们没有任何角色在我们的应用程序中为用户定义。因此无需担心角色。 我已阅读引用手册,但没有获得有关如何进一步进行的太多信息。我理解的一件事是,在用户通过自定义的第三方 API 进行身份验证后,我们需要以某种方式告诉 spring 上下文有关用户的信息。即使我在谷歌上搜索了一下,也找不到适合我要求的好例子。 如果有人可以指导我如何从示例开始,那就太好了。

我只需要告诉 spring 上下文类似“嘿..!此用户已通过身份验证,因此在自定义第三方验证用户凭据后可以允许他调用其余服务API。

我不应该更改现有的初始身份验证过程。我应该只使用经过身份验证的用户信息并进一步使用 spring security 来重新验证用户。

我的问题与spring引用手册中提到的问题有些相似http://docs.spring.io/spring-security/site/docs/3.0.x/reference/preauth.html

Please don't answer with single line (except if it has a proper external link).It would be great if you can show me an example or pseudo code.

提前致谢。

最佳答案

我建议建立一个从 Spring Security 到第 3 方登录页面的“桥梁”。如果您使用 Spring,我认为这是最好的工作方式。

意思是,您有一个登录处理程序,可以将用户重定向到第 3 方登录页面。登录后,用户将被重定向回网络应用。

你是这个意思吗?听起来不错吗?有道理吗?

如果是这样,您可以使用 my article获得一些帮助:

<security:http entry-point-ref="legacyEntryPoint">

通常,这意味着每当相关的 http 调用尝试访问您的应用程序时,这就是处理请求的入口点。在您的情况下, legacyEntryPoint 是您将实现的一个类,它将检查用户是否已通过身份验证;如果不是,它会将用户重定向到第 3 方登录系统,否则它会使用已知的“ token ”来使用您的应用。

希望对您有所帮助!

关于java - 使用 Spring Security 无需授权的预认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22115493/

相关文章:

java - 模拟中 "dynamic"对象的结构

java - 从另一个异步方法调用的 Spring 异步方法

security - 如何使我的域安全且不可见?

java - jsp中的XSS攻击

java - future 实例列表

java - Eclipse : getOuterType()? 生成的 equals()

java - 在 java 中使用 SimpleMailMessage 发送时显示发件人的地址而不是他的名字

security - 如何在 Windows 应用商店应用程序包中存储 "secret"字符串

java - 使用 Ivy-Ant : Unauthorized by Credentials? 在 nexus 中发布工件

java - 在Tomcat下开发GWT?