Oauth2 授权类型和良好文档的实时示例,Oauth2 与 Spring MVC 的示例

Posted

技术标签:

【中文标题】Oauth2 授权类型和良好文档的实时示例,Oauth2 与 Spring MVC 的示例【英文标题】:Real Time examples for Oauth2 Grant Types and Good document, example for Oauth2 with Spring MVC 【发布时间】:2015-01-19 07:23:11 【问题描述】:

我几天前读过 Oauth2,它有客户端、资源所有者、资源服务器、授权服务器等实体,我也理解这些解释。但我完全不理解授权类型,但我对以下类型感到困惑。 Oauth2 有 4 种不同的授权类型,例如,

    授权码 暗示 资源所有者密码凭据 客户端凭据

请给我一些上述类型的实时示例以区分实现。我需要知道 spring security oauth2 有哪些类型的授权实现以及 spring oauth2 的完整流程与安全性。

我已经完成了一些使用 oauth2 和 spring mvc、spring security 实现的示例。但这让我很困惑,我没有清楚地了解 api 的实现。

我正在寻找具有 Spring mvc 和 Spring 安全性的良好 Oauth2 流程和文档。请帮帮我。

【问题讨论】:

【参考方案1】:

授权码是基于重定向的流程,在大多数应用程序中,当我们通过 Facebook 或 google 登录时,我们使用这种授权类型。

隐式主要用于移动或单页应用程序,此处不保证客户端机密性。这也有一个类似于授权码的重定向流程。这不支持刷新令牌。

当客户端应用程序和资源所有者属于同一个应用程序时使用密码授予类型,当您的应用程序端到端工作时会出现这种情况。在这里,我们共享用户名和密码。与上述两个不同的是,我们通过 Facebook 或 google 进行身份验证。

客户端凭据:它是一种访问它自己的服务的方式。就像一个微服务访问另一个微服务。

【讨论】:

【参考方案2】:

就理解流程和它们之间的区别而言,this presentation 是我在网上找到的最佳资源。在此之后,如果您阅读 OAuth2 规范说明,就会更容易理解。

不幸的是,就代码示例而言,没有好的 Spring Security OAuth2 示例代码(Sparklr 和 Tonr 示例还可以,但不是很清楚)。最好的资源是查看 Spring Security OAuth2 代码 on github 中的单元测试。

我想问的一个问题是 - 您是要创建自己的 OAuth2 提供程序,还是只想作为 OAuth2 客户端连接到 Facebook、Google 等。如果是第二部分,我建议跳过 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 协议才能理解所有这些是如何工作的。

【讨论】:

我想为我的 spring mvc 创建一个 Oauth2 Provider。 幻灯片中的示例完全错误啊.. 演示文稿的作者混淆了术语,例如客户端与授权服务器和资源所有者)资源所有者从不提供访问令牌。 @VDev 你有你指的幻灯片编号吗?我看了看,所有幻灯片对我来说都是正确的。 @Jigish 看看幻灯片 29 到 37,其中 37 合并了整个流程。资源所有者永远不会授予身份验证代码,它是授权服务器。例如,如果我(资源所有者)想使用我的 google 帐户(身份验证服务器)登录 ***(客户端)。我(资源所有者)通过 google 的身份验证服务器授予堆栈 oveflow(客户端)访问我的 google 帐户(如果单独托管的资源服务器)的权限。我不是坐着生成验证码。它是授权服务器。 @Jigish 看看 OAuth 规范,它用正确的术语非常简洁地解释了整个流程:tools.ietf.org/html/rfc6749#section-1.3.1【参考方案3】:

上个月我也使用 spring 进入了 OAuth2。

我已经阅读了大部分OAuth2 spec 并使用了samples from the spring-security 源,这些都很棒。这样我就得到了一个正在运行的应用程序,我可以用它来玩并在规范旁边查看它的源代码。

【讨论】:

以上是关于Oauth2 授权类型和良好文档的实时示例,Oauth2 与 Spring MVC 的示例的主要内容,如果未能解决你的问题,请参考以下文章

OAuth 2.0 代码授权流程

如何使用带有 WebClient 的 spring-security-oauth2 自定义 OAuth2 令牌请求的授权标头?

ASP.NET Microsoft OWIN 令牌变得无效

任何工作示例如何使用登录表单和 github 设置 oauth2 授权服务器?

SPA 和 Spring Boot Rest Api 应用程序中具有授权代码授权类型的 OAuth2 流

Spring Security 和 OAuth2 生成具有自定义授权类型的令牌