设置
我们正在使用Java 和 Spring开发一个分布式应用程序,我们现有的客户端前端(包括自己的身份验证、数据库、帐户等)使用REST调用来访问我们的新服务器以获取其他服务。我们想用Oauth保护这些资源。
访问应受角色或帐户限制。但是,我们不希望客户端用户不必担心除了现有帐户之外的任何其他身份验证。同时,我们需要为第三方应用程序提供一种在通过某种服务器注册后从外部访问某些资源的方法(这就是我们首先分发的原因)。
所以我们在服务器端设置了spring security来提供应该用来限制对资源的访问的帐户。用户应该在客户端登录,然后只能访问分配给他的那些服务器资源。我们有某种注册过程,可以在客户端设置用户以便能够访问服务器服务,因此我认为应该在那里完成任何帐户设置。
所以问题是
如何使客户端能够获取受保护资源的访问令牌,而无需用户登录其服务器端帐户?
以及如何在不需要任何用户输入的情况下设置服务器端帐户?
我的想法
这不行
我想我要么告诉客户端在服务器端为该用户创建的新帐户(但是,我将如何选择和传达密码?)或将客户端帐户同步到服务器,并且使用这些凭据针对服务器对客户端进行身份验证并生成访问令牌。但这能节省多少?此外,服务器在其帐户上具有更高的安全性(一种加密、加盐密码),我真的不想通过使用较少保存的客户帐户来破坏这一点。
也许这会?
也许要走的路是在第一次身份验证期间告诉服务器有关客户端帐户的信息,在服务器端创建一个帐户,将生成的令牌存储在客户端,然后使用该令牌针对服务器对客户端进行身份验证。要求..?对于每个请求,服务器是否能够通过该令牌使用其服务器端帐户登录客户端?对于只能从客户端服务器访问的初始(两条腿?)握手,我需要一个特殊资源,对吗?
另外:OAuth 1 还是 2 哪个更适合这项任务?
我希望有人理解我的问题并可以帮助我解决可能的误解和知识差距(我现在正在阅读 Oauth 和 Spring 安全文档,所以如果我想出更清晰的图片并因此更清晰的问题,我会更新做什么)
谢谢你的帮助!