Rest API 中的 Spring Security Oauth2

Posted

技术标签:

【中文标题】Rest API 中的 Spring Security Oauth2【英文标题】:Spring Security Oauth2 in Rest API 【发布时间】:2017-04-04 18:56:15 【问题描述】:

我已经实现了一个 web 服务休息,我目前正在研究安全性。

此 Web 服务是使用 Spring Boot 实现的。一开始我会把客户端作为一个android应用和一个web应用,但在未来我想把这个API公开,所以我也必须考虑这个问题。

我研究了很多关于Spring Security Oauth2,但基本上有两个疑问:

到目前为止,我看到的所有示例都是使用 Web App 客户端,其中服务器重定向到 url 的身份验证。在 Android 应用程序中,此身份验证是如何完成的?毕竟,我没有在 Android 上使用 html 进行重定向。

我需要我的客户使用 Facebook 登录,用户可以在应用内共享。最初我考虑了应用程序的客户端负责执行此身份验证并稍后以某种方式将其发送到我的服务器的可能性,因为我认为它比 Spring Social 更实用。这可能吗?

非常感谢,欢迎任何关于我的用例架构的提示。

【问题讨论】:

【参考方案1】:

一种可能性是使用像keycloak 这样的联合身份管理系统。 Keycloak 为 spring 和 android 提供了适配器,具有完整的 OAUTH2 支持,并让您可以使用 Facebook 作为身份提供者。 它为您带来了很多好处,因为您最可能需要的许多功能已经存在。另一方面,这是一个很大的话题,因此请注意,您需要一些时间才能使整个设置生效。您将需要托管 keycloak,为 Android 应用程序和 Web 应用程序配置客户端,将 keycloak 适配器引入 Android 应用程序和 Web 应用程序,最后将 Facebook 配置为身份提供者。

编辑:

看看here,这看起来很有希望。总的来说,我不得不承认我自己没有将 keycloak 与 facebook 或 Android 集成。我们利用它来保护我们的 spring-boot 和 Java EE 应用程序。我只是在集成中大量参与了这一过程,并因此绊倒了所声明的功能。也有可能在 Android 中手动进行 OAUTH2 see。 Here 是如何进行 facebook 集成的示例。我希望这会有所帮助并祝你好运;)

【讨论】:

非常感谢您的回复。我正在学习Keycloack。我不知道那个解决方案。听起来是一个很好的解决方案。您是否有来自验证 Android 客户端的示例链接?然而,考虑到 Facebook 登录,我如何在时间线上进行分享? 非常感谢。解决了我的问题!

以上是关于Rest API 中的 Spring Security Oauth2的主要内容,如果未能解决你的问题,请参考以下文章

Spring REST API 中的 Json 模式验证

Spring Boot REST Api中的一对多关系

Rest API 中的 Spring Security Oauth2

Spring REST API,响应中的自定义实体字段

如何在Spring Boot Rest API中的BeanUtils.copyProperties中将String转换为枚举

如何保护 Spring Boot Web 应用程序中的 REST API?