我几天前读过Oauth2,它有像客户端,资源所有者,资源服务器,授权服务器这样的实体,我也理解了解释。但我不明白授权类型完全仍然让我对以下类型感到困惑。 Oauth2有4种不同的授权类型,如
请给我一些实时的例子来说明上述类型以区分实现。我需要知道什么是授权实现spring security oauth2的类型和spring oauth2的完整流程以及安全性。
我已经看了一些使用spring mvc,spring security实现oauth2的示例。但令我困惑的是,我没有清楚了解api的实现情况。
我正在寻找具有Spring mvc和Spring安全性的良好Oauth2流程和文档。请帮帮我。
答案 0 :(得分:12)
在理解流量和它们之间的差异方面,this presentation是我在网上找到的最好的资源。在此之后,如果您阅读了OAuth2规范说明,则会更容易理解。
不幸的是,就代码示例而言,没有好的Spring Security OAuth2示例代码(Sparklr和Tonr示例可以,但不是非常清楚)。最好的资源是查看Spring Security OAuth2代码on github中的单元测试。
我想问的一个问题是 - 您是要创建自己的OAuth2提供商,还是只想连接到Facebook,Google等作为OAuth2客户端。如果是第二部分,我建议跳过Spring Security OAuth2,而不是查看Spring Social project。
编辑: 要创建OAuth2提供程序,请查看Dave Syer编写的此代码(他是Spring Security OAuth项目的负责人)。它显示了如何在20行代码中创建OAuth2提供程序和资源服务器。这是创建Spring Security OAuth代码的最简单方法。 https://github.com/dsyer/sparklr-boot
它使用Spring Boot和Spring Security OAuth项目。当然,您必须正确理解Spring Security,JavaConfig配置和OAuth2协议,以了解所有这些是如何工作的。
答案 1 :(得分:1)
上个月我还使用弹簧进入了OAuth2。
我已经阅读了大部分OAuth2 spec并使用了samples from the spring-security来源,这很精彩。通过这种方式,我得到了一个正在运行的应用程序,我可以使用它来查看规范旁边的源代码。
答案 2 :(得分:0)
授权码是基于重定向的流程,在大多数应用程序中,当我们通过Facebook或google登录时,我们都使用这种授权类型。
隐含式通常用于移动或单页应用程序中,此处不能保证客户端的机密性。这也具有类似于授权码的重定向流程。这不支持刷新令牌。
密码授予类型在客户端应用程序和资源所有者属于同一应用程序时使用,这在您的应用程序端到端工作时很常见。在这里,我们共享用户名和密码。与上述两种情况不同,我们通过Facebook或Google进行身份验证。
客户凭证:一种访问其自身服务的方式。例如一个微服务访问另一个微服务。