【发布时间】:2015-03-05 04:34:58
【问题描述】:
我们有一个服务器到服务器的通信,我们希望使用 oauth 来保护它,但授权需要是用户的。 (因为主服务器维护一个会话并执行一些不是弹簧角色检查的用户权限验证)。
起初我想到了 client_credencials,但我需要在 clientid 和用户之间执行一些映射。这种需要在服务器上进行隐藏登录才能初始化用户会话。 这也不是推荐的流程(如 spring ClientCredentialsTokenEndpointFilter 代码中所写)
所以我想我想尝试一种不同的方法,比如 authrization_code,但我不想在这里进行任何重定向。我想要这么简单的东西。
- 用户登录我们的应用程序(主服务器)
- 生成授权请求 - 例如创建 API 密钥或其他内容。
- 向用户显示授权码和状态
- 用户转到另一台服务器并将代码和状态放在某处(无关紧要)
- 其他服务器使用代码和状态来交换令牌。
我怎样才能做到这一点? 谢谢
史洛米
【问题讨论】:
-
标准流程是:`1.用户转到其他服务器 2. 其他服务器生成授权请求并重定向到主服务器 3. 用户登录到主服务器 4. 用户被重定向回具有代码+状态的其他服务器 5. 其他服务器交换代码以获取令牌;您是否试图避免重定向 2. 而不是 4.?
-
在 4 中没有重定向,用户打开另一个服务器应用程序并插入详细信息。避免重定向的原因很复杂,它是一种内部部署产品,它与 saas 产品相抗衡,在 saas 用户中由外部提供商进行身份验证,因此 3 方之间的重定向对我们来说更复杂。这就是为什么我认为一切都可以在 saas 端应用程序上完成,并且用户会将详细信息复制到本地产品中。
-
仍然没有可靠的解决方案 - 即使使用 JWT 问题仍然存在 - 谁是用户?我们应该事先为集成创建它吗?
标签: spring api oauth-2.0 authorization