Java OAuth+;用于内部REST通信的spring安全性 安装程序

Java OAuth+;用于内部REST通信的spring安全性 安装程序,java,rest,oauth,spring-security,oauth-2.0,Java,Rest,Oauth,Spring Security,Oauth 2.0,我们正在使用Java和Spring开发一个分布式应用程序,其中现有的客户端前端(包括其自身的身份验证、数据库、帐户等)使用REST调用来访问我们的新服务器以获得附加服务。我们想用Oauth来保护这些资源 访问权限应受到角色或帐户的限制。但是,我们不希望客户端的用户不得不担心除了现有帐户之外的任何附加身份验证。同时,我们需要为第三方应用程序提供一种方法,以便在对服务器进行某种注册后,从外部访问一些资源(这就是我们首先分发的原因) 因此,我们在服务器端设置了spring-security,以提供应用

我们正在使用Java和Spring开发一个分布式应用程序,其中现有的客户端前端(包括其自身的身份验证、数据库、帐户等)使用REST调用来访问我们的新服务器以获得附加服务。我们想用Oauth来保护这些资源

访问权限应受到角色或帐户的限制。但是,我们不希望客户端的用户不得不担心除了现有帐户之外的任何附加身份验证。同时,我们需要为第三方应用程序提供一种方法,以便在对服务器进行某种注册后,从外部访问一些资源(这就是我们首先分发的原因)

因此,我们在服务器端设置了spring-security,以提供应用于限制对资源访问的帐户。用户应该登录到客户端,然后只能访问分配给他的服务器资源。我们有一些注册过程,在客户端设置用户能够访问服务器服务,因此我认为任何帐户设置都应该在那里完成

所以问题是 如何让客户端获得受保护资源的访问令牌,而无需用户登录其服务器端帐户

如何在不需要任何用户输入的情况下设置服务器端帐户

我的想法 这不行

我认为我必须告诉客户机在服务器端为该用户创建了一个新帐户(但是,我如何选择和传递密码?),或者将客户机端帐户与服务器同步,并使用这些凭据对客户机进行服务器身份验证并生成访问令牌。但这又能节省多少钱呢?此外,服务器在其帐户上具有更高的安全性(单向加密、附加密码),我真的不想通过使用较少保存的客户端帐户来破坏这一点

也许会这样?

可能方法是在第一次身份验证期间告诉服务器有关客户端帐户的信息,在服务器端创建一个帐户,在客户端存储生成的令牌,然后在每个后续请求中使用该令牌针对服务器对客户端进行身份验证。。?对于每个请求,服务器是否能够通过该令牌使用其服务器端帐户登录客户端? 我需要一个特殊的资源来进行初始(两条腿?)握手,它只能从客户端服务器访问,对吗

此外: OAuth 1或OAuth 2哪个更适合此任务

我希望有人能理解我的问题,并能帮助我解决可能存在的误解和知识差距(我现在正在阅读Oauth和spring安全文档,因此如果我有更清晰的图片,从而提出更清晰的问题,我会更新)


谢谢你的帮助

因此,我们目前的状态是使用OAuth2
主要是为了简单起见。我们还确信,我们可以根据需要弥补它在安全方面可能存在的缺陷,这些缺陷很可能在未来由实施供应商或IETF解决

为了处理REST服务器和REST客户机之间的通信(两者都在我们的控制范围内),我们使用以前称为两条腿的身份验证,现在是客户机凭据授予。关于这一点,我问了几个问题,包括

  • 我们现在
  • 使用
  • 以及如何

关于使用基于客户端的用户帐户对服务器进行身份验证,我们没有得到任何进一步的信息

现在,我们像以前一样根据旧的客户机web应用程序对用户进行身份验证,然后根据两条腿的服务器对客户机进行身份验证。理论上,这将允许任何用户使用客户端accesstoken访问任何资源,但现在这对我们来说没关系,所以我们不会在这条路上进一步调查

不过,如果有人对如何解决这一问题有好的想法,我们会继续研究,只是为了进一步加强安全。所以,我将保留这个问题

我目前的想法是,在身份验证服务器上为每个用户注册一个新的客户端ID,并使用生成的密码,然后将这些密码同步回客户端服务器,并使用这些客户端ID/密码组合来访问客户端凭据流中由生成的客户端ID表示的用户的资源


对于我们最新的应用程序,我们将在REST服务器(身份验证提供程序)上存储帐户,让用户登录该服务器,然后使用令牌访问规范中规定的REST资源。

再过两年,我将向您报告,到目前为止,我还没有找到更好的方法(或者更安全的方法)。我打算使用oauth 2.0密码授权,而不是客户端凭据。没有客户机密,只有我们传递的客户ID。该漏洞是,如果任何人持有我们的refresh_令牌,如果他们继续使用该令牌请求新令牌,他们基本上可以获得无限制的访问。不幸的是,这是我们的缺点,但我还没有找到一种方法来防止它。