Spring Security——OAuth 2.0登录——Google,GitHub,Facebook和Okta
基本概念
OAuth 2.0登录:OAuth 2.0登录功能为应用程序提供了使用户能够通过使用其在OAuth 2.0提供程序(例如GitHub)或OpenID Connect 1.0提供程序(例如Google)上的现有帐户登录该应用程序的功能。
OAuth 2.0登录是通过使用OAuth 2.0授权框架和OpenID Connect Core 1.0中指定的授权代码授予来实现的。
官方文档
https://docs.spring.io/spring-security/site/docs/5.2.3.RELEASE/reference/html5/#oauth2login-sample-boot-application
Maven
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-oauth2-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
DEMO
Spring Boot 2.x为OAuth 2.0登录带来了完整的自动配置功能。
最初设定
要使用Google的OAuth 2.0身份验证系统进行登录,您必须在Google API控制台中设置一个项目以获得OAuth 2.0凭据。
Google的OAuth 2.0身份验证实现符合OpenID Connect 1.0规范,并且已通过OpenID认证。
请按照“设置OAuth 2.0”部分开始的OpenID Connect页面上的说明进行操作。
完成“获取OAuth 2.0凭据”说明后,您应该拥有一个新的OAuth客户端,其凭据由客户端ID和客户端密钥组成。
设置重定向URI
重定向URI是最终用户的用户代理在通过Google身份验证并授予对“同意”页面上的OAuth客户端(在上一步中创建)的访问权限后,将重定向到应用程序中的路径。
在“设置重定向URI”子部分中,确保将“ 授权重定向URI”字段设置为http://localhost:8080/login/oauth2/code/google
。
默认重定向URI模板为
{baseUrl}/login/oauth2/code/{registrationId}
。该registrationId是用于唯一标识符ClientRegistration。
如果OAuth客户端在代理服务器后面运行,建议检查“ 代理服务器配置”以确保正确配置了应用程序。此外,请参阅支持
URI
模板变量的redirect-uri
。
配置application.yml
现在,您有了Google的新OAuth客户端,您需要配置应用程序以将OAuth客户端用于身份验证流程。为此:
转到application.yml
并设置以下配置:
spring:security:oauth2:client:registration: google: client-id: google-client-idclient-secret: google-client-secret
OAuth2客户端属性
spring.security.oauth2.client.registration
是OAuth客户端属性的基本属性前缀。基本属性前缀后面是ClientRegistration的ID ,例如google。
将client-id
和client-secret
属性中的值替换为您之前创建的OAuth 2.0凭据。
启动应用程序
启动Spring Boot 2.x示例并转到http://localhost:8080
。然后,您将被重定向到默认的自动生成的登录页面,该页面显示Google的链接。
单击Google链接,然后您将重定向到Google进行身份验证。
在使用您的Google帐户凭据进行身份验证后,下一页是“同意”屏幕。“同意”屏幕要求您允许或拒绝访问您之前创建的OAuth客户端。点击允许以授权OAuth客户端访问您的电子邮件地址和基本个人资料信息。
此时,OAuth客户端将从UserInfo端点检索您的电子邮件地址和基本个人资料信息,并建立经过身份验证的会话。
参考文章
Spring Security——OAuth 2.0登录——Google,GitHub,Facebook和Okta相关推荐
- 单点登录(shiro与Spring Security OAuth 2.0的集成)
单点登录(shiro与Spring Security OAuth 2.0的集成) shiro项目采用ruoyi,OAuth采用pig 若依:https://gitee.com/y_project/Ru ...
- Spring Security——OAuth 2.0 Client自动配置源代码分析
基本概念 OAuth2.0:OAuth2.0是OAuth协议的延续版本,但不向前兼容OAuth 1.0(即完全废止了OAuth1.0). OAuth 2.0关注客户端开发者的简易性.要么通过组织在资源 ...
- java oauth2登录以及权限_Spring Cloud集成Security OAuth 2.0权限鉴权验证示例
Spring Cloud集成Security OAuth 2.0权限鉴权验证示例 一.背景说明 目前市场上微服务之间涉及到相互调用的问题,在这个过程中为了验证安全性,需要采用鉴权方式进行管理.目前主流 ...
- Spring Boot OAuth 2.0 客户端
在上一篇<OAuth 2.0 授权码请求>中我们已经可以获取到access_token了,本节将使用客户端来访问远程资源 配置资源服务器 授权服务器负责生成并发放访问令牌(access_t ...
- java oauth2.0_教程:如何实现Java OAuth 2.0以使用GitHub和Google登录
java oauth2.0 将Google和GitHub OAuth登录添加到Java应用程序的指南 我们添加到Takipi的最新功能之一是3rd party登录. 如果您像我一样懒惰,那么我想您也希 ...
- 教程:如何实现Java OAuth 2.0以使用GitHub和Google登录
将Google和GitHub OAuth登录添加到Java应用程序的指南 我们添加到Takipi的最新功能之一是3rd party登录. 如果您像我一样懒惰,那么我想您也希望跳过填写表单和输入新密码的 ...
- Spring Security OAuth2 SSO 单点登录
基于 Spring Security OAuth2 SSO 单点登录系统 SSO简介 单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自 ...
- 使用Spring Security OAuth2实现单点登录(SSO)系统
一.单点登录SSO介绍 目前每家企业或者平台都存在不止一套系统,由于历史原因每套系统采购于不同厂商,所以系统间都是相互独立的,都有自己的用户鉴权认证体系,当用户进行登录系统时,不得不记住每套系统的 ...
- Spring Security OAuth 2开发者指南译
Spring Security OAuth 2开发者指南译 介绍 这是用户指南的支持OAuth 2.0.对于OAuth 1.0,一切都是不同的,所以看到它的用户指南. 本用户指南分为两部分,第一部分为 ...
最新文章
- 了解jvm对编程的帮助_这是您对社会责任编程的了解
- WKWebView的使用
- exp ORA-01455: converting column overflows integer datatype
- dubbo启动时检查服务
- js学习总结----弹性势能动画之抛物线运动
- oracle底层执行顺序,select语句结构与执行顺序-Oracle
- 深入掌握JMS(二):一个JMS例子
- 获取线程名称 java 1615387415
- Bootstrap CSS 编码规范之简写形式的属性声明
- .netframewor划时代的系统:纪念Vista发布5周年
- java学习之—链表(3)
- C#使用NLOG System.TypeInitializationException,类型初始值设定项引发异常
- cydia多开微信_微信及陌陌多开教程:多开+分别推送消息+一键隐藏方法
- 基于Java Web的图书管理系统
- 智能云仓库存管理 v1.2.0
- mac系统修改idea运行内存
- 车载以太网和工业以太网区别
- Vue history模式添加前缀 Nginx配置
- 适合国人的6款免费远程桌面工具,适用于电脑和手机
- 微头条快速赚钱变现方法,一天可赚100元
热门文章
- 怎么看android sdk 文档
- AutoScan-收集监视及办理器械
- android 不可点击状态,Android系统.如何使用setClickable同时设置所有按钮可点击或不可点击?...
- html加载出来图片乱掉,HTML基础 img alt 图片加载失败时,出现替代文本
- python死锁案例_python避免死锁方法实例分析
- python zipfile_Python中的zipfile模块使用详解
- 爬虫模拟登陆手机验证码_网络爬虫干货总结,这次比较全面!
- java可变长字符串_具有可变长度的scala字符串插值
- html点击子元素隐藏div,jq 点击div,显示当前div内容,隐藏其他div的子元素
- html请求接口_python接口自动化测试 - 2.Django开发接口