<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>OAuth2.0 on Leanku 的博客</title><link>https://www.leanku.com/tags/oauth2.0/</link><description>Recent content in OAuth2.0 on Leanku 的博客</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Fri, 12 May 2023 13:46:01 +0800</lastBuildDate><atom:link href="https://www.leanku.com/tags/oauth2.0/index.xml" rel="self" type="application/rss+xml"/><item><title>OAuth 2.0</title><link>https://www.leanku.com/post/safety/oauth-2.0/</link><pubDate>Fri, 12 May 2023 13:46:01 +0800</pubDate><guid>https://www.leanku.com/post/safety/oauth-2.0/</guid><description>&lt;h1 id="oauth-20"&gt;OAuth 2.0&lt;/h1&gt;&#10;&lt;h2 id="一oauth20-是什么"&gt;一、OAuth2.0 是什么&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;OAuth 2.0&lt;/strong&gt; 是一种开放标准的授权协议，用于在不暴露账号密码的情况下，让用户授权第三方应用访问其受保护的资源。&lt;br&gt;&#10;它主要解决的问题是：&lt;strong&gt;如何安全地委托访问权限&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;核心概念：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;角色&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;说明&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;资源所有者（Resource Owner）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;用户或数据所有者&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;客户端（Client）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;第三方应用，需要访问资源&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;授权服务器（Authorization Server）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;颁发令牌的服务器，负责验证用户身份并授权&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;资源服务器（Resource Server）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;存储用户受保护资源的服务器，验证令牌后提供数据&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="二-常用场景"&gt;二、 常用场景&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;第三方登录（Social Login）&lt;/strong&gt;&lt;br&gt;&#10;用户使用微信、GitHub、Google 登录你的站点，后端获取 Access Token 调用接口获取用户信息。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;开放 API / 平台化&lt;/strong&gt;&lt;br&gt;&#10;向合作伙伴提供 API，使用 OAuth 2.0 控制访问权限和作用域。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;微服务内部接口调用&lt;/strong&gt;&lt;br&gt;&#10;服务 A 调用服务 B 的接口，通过 Client Credentials 模式获取 Token，避免硬编码密码。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;企业内部 SSO（单点登录）&lt;/strong&gt;&lt;br&gt;&#10;多系统统一认证，用户在登录一次后，访问其他系统不需要重复登录。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;前后端分离应用（SPA / Mobile App）&lt;/strong&gt;&lt;br&gt;&#10;前端获取授权码，换取 Access Token，安全访问 API，密码不在前端传递。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="三oauth-20-主要流程"&gt;三、OAuth 2.0 主要流程&lt;/h2&gt;&#10;&lt;p&gt;以 &lt;strong&gt;授权码模式（Authorization Code Grant）&lt;/strong&gt; 为例：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;请求授权&lt;/strong&gt;：客户端引导用户跳转到授权服务器，传入 &lt;code&gt;client_id&lt;/code&gt;、&lt;code&gt;redirect_uri&lt;/code&gt;、&lt;code&gt;scope&lt;/code&gt;。&lt;/p&gt;</description></item></channel></rss>