【问题标题】:Authenticate server to server communication验证服务器到服务器的通信
【发布时间】:2019-12-24 20:08:38
【问题描述】:

我是身份验证/授权的新手。我需要公开一些经过身份验证的 api 以供第三方使用(服务器到服务器)。我阅读了如何做到这一点,并发现使用 oauth2 是一个不错的选择。

我想用 java 和 spring boot 来实现这个。我的第一个问题是如何生成客户端 ID 和客户端密码。你能帮我提供一些建议/材料来实现这个吗?

谢谢

【问题讨论】:

  • Oauth2 是关于授权,而不是身份验证。如果您有一个想要公开给其他人的 api,那么您很可能不需要复杂性。 Oauth2 主要用于当您有一个应用程序想要代表您的用户访问第三方资源时的用例。假设您要发布到用户的 Facebook 墙上。对于普通身份验证,请查看更简单的选项,例如 api 密钥甚至客户端证书。顺便说一下,带有身份的 oauth2(如果你愿意,可以选择“身份验证”)是 openid 连接,但听起来你也不需要它。

标签: java spring-boot security oauth-2.0


【解决方案1】:

客户端 ID 和客户端密码只是一个简单的登录名/密码对。应用通常的约束,只要确保你的秘密不是太简单。

由于只隐含两方,oauth 流程非常简单 (client credentials)。

一台服务器(客户端)将使用事先针对授权服务器获取的访问令牌消耗另一台服务器(资源服务器@EnableWebSecurity、@EnableResourceServer)上的资源。资源服务器也可以作为授权服务器(@EnableAuthorizationServer)。客户端使用@EnableOAuth2Client注解。

如果通信是双向的,“服务器”必须是资源服务器和客户端(因此有自己的客户端 ID/秘密对),授权服务器可以是独立的,也可以由一个或两个服务器托管。

【讨论】:

    【解决方案2】:

    对于生成 Client-Id 和 Secret,this guide 可能有用。

    在所有加密事务中,尽量找到可靠/经过良好测试的库,如文章中所述。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-30
      • 2016-05-20
      相关资源
      最近更新 更多