Authentication 外部应用程序的Spring安全身份验证

Authentication 外部应用程序的Spring安全身份验证,authentication,oauth,spring-security,Authentication,Oauth,Spring Security,基于此线索,我有一些后续问题: 所需流量为: 外部服务已在我的应用程序中注册,并拥有我的应用程序提供的使用者密钥和机密 外部服务通过传递使用者密钥和密码向我的应用程序发送令牌请求 我的应用程序验证使用者密钥和密码,并提供一个具有到期时间的令牌 外部应用程序为后续请求发送令牌,我的应用程序可能使用上述链接中的方法验证该令牌 这个流程看起来类似于OAuth 1,但我不希望向Facebook或Twitter这样的用户提供登录和访问授权页面。用户必须在后台进行身份验证 SpringSecurity中是否

基于此线索,我有一些后续问题:

所需流量为:

外部服务已在我的应用程序中注册,并拥有我的应用程序提供的使用者密钥和机密

外部服务通过传递使用者密钥和密码向我的应用程序发送令牌请求

我的应用程序验证使用者密钥和密码,并提供一个具有到期时间的令牌

外部应用程序为后续请求发送令牌,我的应用程序可能使用上述链接中的方法验证该令牌

这个流程看起来类似于OAuth 1,但我不希望向Facebook或Twitter这样的用户提供登录和访问授权页面。用户必须在后台进行身份验证

SpringSecurity中是否有其他选项可以解决这个问题,而不必为令牌处理和身份验证编写代码

此外,我希望保留我现有的基于表单的登录到我的应用程序,以供该应用程序的直接用户使用


提前感谢。

这看起来像一个两条腿的OAuth流,其中请求令牌是预验证的,而不是由用户明确验证的

您可以使用SpringSecurityOAuth来实现这种流。看看OAuth 2的实现:

或者,您也可以修改OAuth 1.0实现,以正确支持两条腿的流程。我已经整理了一篇文章,解释了如何修改Spring OAuth 1.0实现,以实现真正的两条腿流程。他们的两条腿流程实际上是一个0条腿的实现:


你的问题不是很清楚。在您想要的流程中,您只讨论对预先注册的服务进行身份验证,然后讨论在幕后对用户进行身份验证。什么用户?他们与服务有什么关系?既然Spring安全性已经支持OAuth2,为什么不直接使用它呢?类似于客户端凭据授予的内容适用于访问资源的外部服务。@Luke,很抱歉造成歧义。我指的用户是每注册第三方服务的用户。在我的应用程序对服务使用者密钥和机密进行身份验证并将令牌返回给它之后,服务将发送另一个带有令牌和用户名的请求,以从我的应用程序检索配置文件信息。不得向该用户提供登录表单以输入其凭据。如果服务经过身份验证,则假定用户也经过身份验证。任何拥有有效令牌的人都可以向我的应用程序发送请求。