OAuth流程介绍

OAuth 协议致力于使应用能够在无须用户透露其认证证书或者密码的情况下,通过 API 访问开放平台的服务的隐私资源。更一般地说, OAuth 为开放 API 认证提供了一个可自由实现且通用的方法。

详细说来,整个过程如下:

1.    应用使用者请求应用

2.    应用发现有应用使用者的请求,则通过 APP ID Secret 向开放平台请求获取未授权的请求令牌

3.    开放平台向应用签发未授权的请求令牌

4.    应用引导应用使用者至开放平台提供商的登录服务器,服务提供方认证用户并获取许可

5.    开放平台提供商的登录服务器将应用使用者引导回应用(通过 callback URL

6.    应用向开放平台请求访问令牌

7.    开放平台授予访问令牌

8.    应用访问受保护的资源,应用使用者享用应用。

 


### OAuth 认证授权流程详解 OAuth 2.0 是一种广泛使用的协议,用于第三方应用程序安全地访问资源而无需暴露用户的凭证。以下是基于提供的引用内容以及专业知识对 OAuth 认证授权流程的详细介绍。 #### 1. 客户端注册与配置 在开始认证之前,客户端(Client)需要向授权服务器(Authorization Server)注册并获得 `client_id` 和 `client_secret`。这些信息将在后续请求中用来标识客户端的身份[^1]。此外,在某些场景下,还需要指定回 URL 或重定向 URI,以便授权服务器能够将用户重定向回客户端应用[^4]。 #### 2. 用户登录与授权同意页面展示 当用户尝试通过某个受保护的服务时,客户端会引导用户跳转到授权服务器上的登录界面。在此过程中,客户端需提供必要的参数,例如响应类型 (`response_type`)、范围 (`scope`) 等。如果用户成功登录并通过权限授予,则会被重定向至先前定义好的回地址,并附带一个临时代码 (authorization code)[^5]。 #### 3. 获取 Access Token 收到 authorization code 后,客户端可以利用此代码连同自身的身份证明材料一起发送给 token endpoint 请求 access token 。具体来说,这通常涉及以下几个步骤: - 构造 HTTP Basic Auth 头部来传递 client credentials; - 将 grant type 设置为 `"authorization_code"` 并附加其他必需字段如 redirect_uri 及 received auth code; - 发送 POST 请求至 `/oauth/token` 路径下的 API 终结点以交换最终可用形式的 tokens。 一旦验证无误,服务器便会返回 JSON 格式的响应体,其中至少包含以下几项重要属性: ```json { "access_token": "<your_access_token>", "token_type": "Bearer", "expires_in": 3600, "refresh_token": "<optional_refresh_token>" } ``` #### 4. 使用 Access Token 进行资源访问 有了有效的 access token ,客户端就可以将其作为 Bearer Token 添加到每次针对目标服务发起用时所携带的安全上下文中去。大多数情况下这是通过设置 Authorization Header 来完成操作的,比如这样子的例子: ```bash GET /protected-resource HTTP/1.1 Host: example.com Authorization: Bearer <your_access_token> ``` 只要这个 token 在其生命周期范围内保持有效性并且对应适当的作用域(scope),那么相应的 RESTful APIs 应该允许正常执行业务逻辑处理[^5]。 #### 5. 刷新 Tokens (可选) 随着时间推移或者由于某种原因导致现有 session 断开连接之后重新建立新的 sessions 成为了必要条件之一的话,那么 refresh tokens 就派上了大用途场了——它们允许我们在不打扰终端用户体验的前提下悄悄续订短期存活期限较短的新版 access tokens。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值