Oauth2协议的四种模式

B站视频

概念

Oauth2.0(Open Authorization)

一个关于授权的开放网络标准

允许用户授权第三方应用访问用户存储在其他服务提供者上的信息

不需要将用户名和密码提供给第三方应用

Oauth2中的各个角色

请添加图片描述

授权码模式

第一步 获取授权码

请添加图片描述

以上流程中的授权接口

请添加图片描述

第二步 申请token

请添加图片描述

注意:其中的第【I】步 校验令牌

普通token是无意义的字符串,并且是由授权服务器颁发的

资源服务器并不知道token是否合法,需要交给授权服务器进行校验,但这样会导致额外的网络IO影响性能

可以使用JWT替代普通token,这样资源服务器使用与授权服务器相同的密钥,就可以校验JWT中的签名是否合法,无需再交给授权服务器进行校验

以上流程中的获取token接口:

请添加图片描述

简单模式

是授权码模式的简化版本

省去了客户端使用授权码申请token的步骤

适用于没有后台服务的单页面应用

因为 没有服务器端 就无法在后台请求token接口

请添加图片描述

密码模式

资源所有者基于对客户端程序的信任,

让客户端拿着自己的账号和密码,到授权服务器上申请token,省去了访问授权接口的步骤。

请添加图片描述

调用token接口时,设置用户的账号密码,并将授权模式设置为password(密码模式)

客户端模式

是最简单的模式

客户端以自己的名义向授权服务器申请token

调用token接口时,设置客户端id密码,并将授权模式设置为client_credentials(客户端模式)

请添加图片描述

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: OAuth 2.0 是一个开放的授权框架,它允许用户授权第三方应用访问他们存储在另一个服务提供者上的信息,而无需将用户名和密码提供给第三方应用或分享他们的账户与第三方应用。 要在 Java 中实现 OAuth 2.0,您需要: 1. 选择一个 OAuth 2.0 客户端库,例如 ScribeJava、Apache Oltu 或 Spring Security OAuth。 2. 注册您的应用程序与服务提供者。服务提供者将向您提供客户端 ID 和客户端密码,这些信息将用于身份验证。 3. 在您的应用程序中创建 OAuth2ClientContext 和 OAuth2ProtectedResourceDetails 对象,并使用客户端 ID 和客户端密码初始化它们。 4. 使用 OAuth2ClientContext 和 OAuth2ProtectedResourceDetails 对象构建 OAuth2RestTemplate 对象。 5. 使用 OAuth2RestTemplate 对象发出调用以访问受保护的资源。 以下是使用 ScribeJava 库的示例代码: ``` import com.github.scribejava.core.builder.ServiceBuilder; import com.github.scribejava.core.model.OAuth2AccessToken; import com.github.scribejava.core.model.OAuthRequest; import com.github.scribejava.core.model.Response; import com.github.scribejava.core.model.Verb; import com.github.scribejava.core.oauth.OAuth20Service; public class OAuth2Example { private static final String PROTECTED_RESOURCE_URL = "https://api.example.com/resource"; private static final String CLIENT_ID = "your_client_id"; private static final String CLIENT_SECRET = "your_client_secret"; public static void main(String[] args) { final OAuth ### 回答2: OAuth2是一种开放标准的授权协议,允许第三方应用程序以受限的方式获取用户在某个平台上的权限。在Java中,我们可以使用一些库和框架来实现OAuth2协议。 首先,我们可以使用Spring Security OAuth2来实现OAuth2协议。Spring Security OAuth2提供了一系列的类和注解,帮助我们快速实现OAuth2的认证和授权流程。 我们首先需要配置OAuth2的客户端信息,包括client_id、client_secret和redirect_uri等。我们可以使用Spring Security OAuth2提供的`@EnableOAuth2Client`注解来启用OAuth2客户端。 接下来,我们需要实现OAuth2的授权码模式(authorization code grant)或者密码模式(password grant)。授权码模式需要用户手动授权,并将授权码发送给第三方应用程序。而密码模式则需要用户提供自己的用户名和密码。 对于授权码模式,我们可以使用Spring Security OAuth2提供的`AuthorizationCodeResourceDetails`类和`AccessGrant`类来处理获取授权码和访问令牌。我们可以使用`AuthorizationCodeResourceDetails`类设置授权码和令牌的相关信息,然后使用`AccessGrant`类来获取授权码和令牌。 对于密码模式,我们可以直接发送用户的用户名和密码,并使用Spring Security OAuth2提供的`UsernamePasswordResourceDetails`类和`AccessGrant`类来获取访问令牌。 在我们成功获取访问令牌之后,我们可以使用该令牌来访问受保护的资源。我们可以使用Spring Security OAuth2提供的`RestTemplate`类来发送HTTP请求并附带访问令牌。 综上所述,我们可以使用Spring Security OAuth2来实现OAuth2协议。通过使用Spring Security OAuth2提供的注解、类和方法,我们可以在Java中快速实现OAuth2的认证和授权流程。 ### 回答3: OAuth2是一种开放标准的授权协议,用于授权第三方应用程序访问用户资源。Java是一种强大的编程语言,可以用于实现OAuth2协议。下面是一个简单的示例,展示了如何使用Java实现OAuth2协议: 首先,需要使用Java开发工具包(JDK)进行开发。在Java中,可以使用Spring Security框架来实现OAuth2协议。Spring Security提供了一套强大的安全框架,可以轻松地实现身份验证和授权功能。 其次,需要在Java中创建一个授权服务器。授权服务器负责验证用户的身份和颁发访问令牌。可以使用Spring Security OAuth2库来实现授权服务器。该库提供了一组注解和类,用于配置和管理OAuth2授权服务器。 然后,需要创建一个资源服务器。资源服务器负责处理受保护资源的请求,并验证OAuth2访问令牌的有效性。可以使用Spring Security OAuth2库来实现资源服务器。通过配置和注解,可以指定哪些资源需要被保护,并定义访问这些资源所需的权限。 最后,需要创建第三方应用程序。第三方应用程序将使用OAuth2协议来请求访问用户资源。可以使用Java的HTTP客户端库(如Apache HttpClient)来发送OAuth2授权请求,并处理授权服务器返回的访问令牌。 通过以上步骤,就可以使用Java实现OAuth2协议。Java提供了丰富的库和框架,使得实现OAuth2变得简单和灵活。使用Java进行开发,可以轻松地构建安全可靠的授权系统,保护用户的隐私和敏感数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值