如何使用第三方登录为应用程序启用Spring Security?

时间:2017-03-07 12:09:42

标签: spring spring-boot spring-security

我有一个启用Spring Boot的应用程序,其登录由第三方Siteminder应用程序控制。身份验证成功后,Sitemeinder会重定向到我们的应用程序URL。我们从Siteminder获取HttpRequest并处理请求。

现在,如何在这种情况下启用Spring安全性,以便根据角色授权用户。

@Controller
public class LoginController

@RequestMapping( value= "/")
public void requestProcessor(HttpServletRequest request)
{
.
.
.}

上述控制器的请求映射器读取来自SiteMinder的请求并处理具有用户登录角色的请求。我们在哪里可以启用Spring Security来向用户授权页面和服务方法。

3 个答案:

答案 0 :(得分:0)

Spring Security处理请求在Spring安全配置中配置的filter中到达您的控制器之前。 有关如何使用SiteMinder配置弹簧安全性的文档。

配置中的规则将定义对资源的访问权限

答案 1 :(得分:0)

这是PreAuthenticated安全类的方案:

看看这里:

http://docs.spring.io/spring-security/site/docs/current/reference/html/preauth.html

答案 2 :(得分:-1)

取决于您在会话中获得的内容。如果以某种方式你可以从会话中获取用户和密码,你可以直接从代码验证用户:

@Autowired
AuthenticationManager authenticationManager;
...

public boolean autoLogin(String username, String password) {
    UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(username, password);
    Authentication auth = authenticationManager.authenticate(token);

    if (auth.isAuthenticated()) {
        logger.debug("Succeed to auth user: " + username);
        SecurityContextHolder.getContext().setAuthentication(auth);
        return true;
    }

    return false;
}