当前位置: 首页 > wzjs >正文

如何做网站发布商品中国画廊企业网站模板

如何做网站发布商品,中国画廊企业网站模板,传智播客,企业网站建设公司选择分析文章目录 OAuth 2.0 介绍概念与传统认证方式的对比常见应用场景 OAuth 2.0 原理核心角色授权流程 Spring Boot 集成 OAuth 2.01. 添加依赖2. 配置 OAuth 2.0 客户端3. 配置 Spring Security4. 创建控制器5. 主应用类 代码解释 OAuth 2.0 介绍 概念 OAuth 2.0 是一个开放标准的…

文章目录

      • OAuth 2.0 介绍
        • 概念
        • 与传统认证方式的对比
        • 常见应用场景
      • OAuth 2.0 原理
        • 核心角色
        • 授权流程
      • Spring Boot 集成 OAuth 2.0
        • 1. 添加依赖
        • 2. 配置 OAuth 2.0 客户端
        • 3. 配置 Spring Security
        • 4. 创建控制器
        • 5. 主应用类
      • 代码解释

OAuth 2.0 介绍

概念

OAuth 2.0 是一个开放标准的授权协议,它允许用户授权第三方应用访问其在另一个服务提供商处存储的受保护资源,而无需将自己的用户名和密码直接提供给第三方应用。这极大地增强了用户数据的安全性和隐私性,广泛应用于各种需要第三方授权访问的场景,如社交登录、第三方应用获取用户在云存储服务中的文件等。

与传统认证方式的对比
  • 传统认证方式:通常要求用户直接向第三方应用提供其在服务提供商处的用户名和密码,这存在密码泄露的风险。一旦第三方应用的安全性出现问题,用户的账户信息将面临严重威胁。
  • OAuth 2.0:用户只需在服务提供商的授权页面上进行授权操作,第三方应用获得的是访问令牌(Access Token),而非用户的原始凭据。即使令牌泄露,攻击者也只能在令牌的有效期和权限范围内访问资源,且令牌可以被服务提供商随时撤销。
常见应用场景
  • 社交登录:许多网站和应用允许用户使用社交媒体账号(如微信、QQ、微博、Google、Facebook 等)进行登录。用户无需在新平台上注册新账号,只需授权平台访问其社交账号的基本信息,即可快速完成登录。
  • 第三方数据访问:例如,一个健身应用可以请求用户授权访问其在运动追踪服务提供商处的运动数据,以便为用户提供更全面的健身分析和建议。
  • API 访问:开发者在开发第三方应用时,需要调用某些服务提供商的 API 来获取数据或执行操作。通过 OAuth 2.0 授权,开发者可以在不暴露用户敏感信息的情况下,合法地使用这些 API。

OAuth 2.0 原理

核心角色
  • 资源所有者(Resource Owner):一般是用户,拥有受保护的资源,并有权决定是否授权第三方应用访问这些资源。例如,用户在 Facebook 上的个人信息和照片就是受保护资源,用户可以决定是否允许某个第三方游戏应用访问这些信息。
  • 资源服务器(Resource Server):存储受保护资源的服务器。它负责验证访问令牌的有效性,并在验证通过后向第三方应用提供相应的资源。例如,Facebook 的服务器存储了用户的个人信息和照片,当第三方应用携带有效的访问令牌请求这些资源时,Facebook 的服务器会进行验证并返回数据。
  • 客户端(Client):即第三方应用,希望访问用户的受保护资源。客户端需要先获得用户的授权,然后使用授权服务器颁发的访问令牌来访问资源服务器上的资源。例如,上述的第三方游戏应用就是客户端。
  • 授权服务器(Authorization Server):负责验证资源所有者的身份,处理授权请求,并发放访问令牌。它与资源所有者进行交互,确认用户是否同意授权给客户端,并在用户授权后生成并返回访问令牌。例如,Facebook 的授权服务器会验证用户的身份,显示授权页面,当用户点击“同意”后,生成访问令牌并返回给客户端。
授权流程

OAuth 2.0 定义了四种授权模式,下面详细介绍最常用的授权码模式(Authorization Code Grant):

  1. 客户端请求授权:客户端引导用户到授权服务器的授权端点,请求用户授权。请求中包含客户端 ID、重定向 URI、请求的权限范围等信息。例如,当用户在第三方游戏应用中选择使用 Facebook 账号登录时,应用会将用户重定向到 Facebook 的授权页面,并携带应用的客户端 ID、指定的重定向 URI 以及请求的权限范围(如获取用户的基本信息、好友列表等)。
  2. 用户授权:用户在授权服务器的页面上登录并确认是否授权给客户端访问其资源。例如,用户在 Facebook 的授权页面上输入自己的账号密码登录后,会看到一个授权提示,显示第三方应用请求的权限范围,用户可以选择“同意”或“拒绝”。
  3. 授权服务器返回授权码:如果用户授权,授权服务器将用户重定向回客户端指定的重定向 URI,并附带一个授权码(Authorization Code)。授权码是一个临时的、一次性的代码,用于后续换取访问令牌。例如,用户点击“同意”后,Facebook 的授权服务器会将用户重定向回第三方游戏应用指定的重定向 URI,并在 URL 中附带授权码。
  4. 客户端换取访问令牌:客户端使用接收到的授权码向授权服务器的令牌端点发送请求,同时提供客户端 ID 和客户端密钥进行身份验证。授权服务器验证通过后,返回访问令牌(Access Token)和可选的刷新令牌(Refresh Token)。例如,第三方游戏应用接收到授权码后,会向 Facebook 的令牌端点发送请求,携带授权码、客户端 ID 和客户端密钥,Facebook 的授权服务器验证这些信息无误后,会返回访问令牌和可能的刷新令牌。
  5. 客户端访问资源:客户端使用访问令牌向资源服务器发送请求,资源服务器验证令牌的有效性,验证通过后返回受保护的资源。例如,第三方游戏应用使用接收到的访问令牌向 Facebook 的资源服务器请求用户的基本信息,资源服务器验证令牌有效后,会返回用户的姓名、头像等信息。

Spring Boot 集成 OAuth 2.0

1. 添加依赖

pom.xml 中添加以下依赖:

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-oauth2-client</artifactId></dependency>
</dependencies>
2. 配置 OAuth 2.0 客户端

application.yml 中配置 OAuth 2.0 客户端信息,以 GitHub 为例:

spring:security:oauth2:client:registration:github:client-id: your-client-idclient-secret: your-client-secretscope: read:userprovider:github:authorization-uri: https://github.com/login/oauth/authorizetoken-uri: https://github.com/login/oauth/access_tokenuser-info-uri: https://api.github.com/user

your-client-idyour-client-secret 替换为你在 GitHub 开发者设置中创建的实际客户端 ID 和客户端密钥。

3. 配置 Spring Security

创建一个配置类来配置 Spring Security 以支持 OAuth 2.0 登录:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;@Configuration
public class SecurityConfig {@Beanpublic SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {http.authorizeRequests().anyRequest().authenticated().and().oauth2Login();return http.build();}
}
4. 创建控制器

创建一个简单的控制器来测试 OAuth 2.0 登录后的访问:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HomeController {@GetMapping("/")public String home() {return "Welcome to the protected area! You are authenticated.";}
}
5. 主应用类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class SpringBootOauth2DemoApplication {public static void main(String[] args) {SpringApplication.run(SpringBootOauth2DemoApplication.class, args);}
}

代码解释

  • 依赖部分:添加了 spring-boot-starter-webspring-boot-starter-oauth2-client 依赖,为项目提供 Web 服务和 OAuth 2.0 客户端支持。
  • 配置文件:在 application.yml 中配置了 GitHub 的 OAuth 2.0 客户端信息,包含客户端 ID、客户端密钥、授权 URI、令牌 URI 以及用户信息 URI 等。
  • SecurityConfig 类:对 Spring Security 进行配置,要求所有请求都需经过身份验证,并启用 OAuth 2.0 登录。
  • HomeController 类:提供一个简单的端点 /,只有经过身份验证的用户才能访问。
  • 主应用类:启动 Spring Boot 应用。

按照上述步骤操作,就能在 Spring Boot 项目中集成 OAuth 2.0 认证。启动应用后,访问项目根路径,会自动跳转到 GitHub 的授权页面,授权成功后即可访问受保护的资源。


文章转载自:

http://gbiGxQEa.xnjgt.cn
http://2g00I584.xnjgt.cn
http://qzto9258.xnjgt.cn
http://RHXWxdal.xnjgt.cn
http://vpjhkul9.xnjgt.cn
http://cC7xizpM.xnjgt.cn
http://xganYGOg.xnjgt.cn
http://C4NW1rS5.xnjgt.cn
http://T3CBW8MW.xnjgt.cn
http://EfTbBNLF.xnjgt.cn
http://uZlmhBUD.xnjgt.cn
http://qUXE6MUF.xnjgt.cn
http://eCaoIDQC.xnjgt.cn
http://nYWnZ2Th.xnjgt.cn
http://dh6XrNGm.xnjgt.cn
http://RrO6yvll.xnjgt.cn
http://hLqGySZa.xnjgt.cn
http://E8ThOwts.xnjgt.cn
http://fLIRfUI8.xnjgt.cn
http://ypiJVRdv.xnjgt.cn
http://PLjxfxYt.xnjgt.cn
http://skA84UCO.xnjgt.cn
http://ByzA6yjB.xnjgt.cn
http://bsvCky44.xnjgt.cn
http://9iZTzge3.xnjgt.cn
http://sBFc3SGN.xnjgt.cn
http://RIBdnU85.xnjgt.cn
http://JZa6vFRr.xnjgt.cn
http://6Qx29sCY.xnjgt.cn
http://CtbTAFoL.xnjgt.cn
http://www.dtcms.com/wzjs/776301.html

相关文章:

  • 做解析视频网站违法莫网站备案号位置
  • 供水开发建设公司网站网站建设昆山花桥
  • 怎么建网站快捷方式百度com百度一下你
  • dedecms网站开发环境wordpress分类显示文章列表
  • php整站最新版本下载有哪些购物的网站
  • 大学生做静态网站东游科技网站建设
  • 网站集群系统建设在线天堂8
  • 精能集团有限公司两学一做网站敖汉旗网站建设
  • 查建设公司年度保证金网站丽水网站建设公司
  • 做微信头图的网站网站建设及维护费用
  • 手机网站开发session千川推广官网
  • 东莞大朗网站建设哪家口碑好如何查询网站的空间商
  • 中山模板建站公司手机网站智能建站
  • 青岛网站建设系统wordpress重装教程视频
  • 苏州专业正规网站建设数据库和网站开发
  • 昆明 网站建设哪里有放网站的免费空间
  • 杭州萧山网站建设餐饮连锁网站建设
  • 个人网站备案需要多久北京中御建设公司网站
  • kali钓鱼网站制作网站设计的公司设计
  • 一学一做教育视频网站沈阳网站制作服务
  • 哈尔滨网络公司网站建设集团做网站
  • 黄浦网站推广公司品牌推广活动有哪些
  • 宣讲家网站做四讲四有模范学校网站在哪里找
  • 建瓯网站建设做零食网站的选题理由
  • 合肥网站建设方案服务关于干外贸的一些好的学习网站
  • 怎样做类似淘宝的网站wordpress特效-页面加载动画圆圈
  • 阿里云如何搭建网站国内网站设计作品欣赏
  • 成都网站制作公司电话电商网站开发公司哪家好
  • redis做网站网站建站 宝
  • 一个电商网站开发需要多久外贸在线网站建站