使用 Spring Oauth2 实现 SAML 断言流
Posted
技术标签:
【中文标题】使用 Spring Oauth2 实现 SAML 断言流【英文标题】:Implementing a SAML assertion flow with Spring Oauth2 【发布时间】:2015-05-12 08:22:15 【问题描述】:我需要使用 Spring OAuth2 Authorization Server 实现 SAML 断言流。我正在努力解决如何将这两个项目联系起来。 我也尝试将 SAML securityContext 导入到我的 OAuth 项目中,但似乎 SAML 流将始终优先。有没有办法做到这一点,它会查看 grant_type 以确定它是否应该使用 saml 流。
另外,当它处理 saml 断言时,它会与 ResourceOwnerPasswordTokenGranter 绑定,还是我必须使用类似的东西注册一个自定义令牌授予者?
With OAuth2, we have a way of registering different TokenGranters through something like this:
List<TokenGranter> tokenGranters = new ArrayList<TokenGranter>();
tokenGranters.add( endpoints.getTokenGranter());
tokenGranters.add(new SamlTokenGranter(authenticationManager,tks,cds,endpoints.getOAuth2RequestFactory()));
CompositeTokenGranter ctg = new CompositeTokenGranter(tokenGranters);
endpoints.tokenGranter(ctg);
提前感谢您提供的任何帮助
【问题讨论】:
【参考方案1】:您可能需要注册一个自定义TokenGranter
。 CompositeTokenGranter
(默认值)可以按照您的建议处理多种授权类型(将传入的请求 grant_type
与每个授权者支持的比较)。如果您使用 Spring SAML 作为服务提供者来检查断言,那么我想您还需要在 /token 端点上将其设置为单独的安全过滤器(使用非常具体的请求匹配器,因此它只拦截 SAML 授权)。
【讨论】:
P.S.我很想看到这个工作,所以请坚持下去,也许我们可以通过框架分享结果。以上是关于使用 Spring Oauth2 实现 SAML 断言流的主要内容,如果未能解决你的问题,请参考以下文章
单个 Spring Boot 应用程序中的 SAML 和 Oauth2
Spring Boot/Angular整合Keycloak实现单点登录
在使用 Oauth、SAML 和 spring-security 的多租户的情况下从 spring-security.xml 中获取错误