oauth2

前后端分离基于Oauth2的SSO单点登录怎样做?

淺唱寂寞╮ 提交于 2020-03-17 12:55:11
一、说明 单点登录顾名思义就是在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统,免除多次登录的烦恼;本文主要介绍 跨域 间的 前后端分离 项目怎样实现单点登录,并且与 非前后端分离 的差异在那里?需要解决什么问题?。 前后端分离 的核心概念是后端仅返回前端所需的数据,不再渲染HTML页面,前端HTML页面通过AJAX调用后端的RESTFUL API接口并使用JSON数据进行交互 PS :关于 单点登录 主流的实现思路和原理请看文章《 Spring Security基于Oauth2的SSO单点登录怎样做?一个注解搞定 》 二、实现差异 跨域 间的 前后端分离 项目也是基于共享统一授权服务(UAA)的 cookie 来实现 单点登录 的,但是与 非前后分离 不一样的是存在以下问题需要解决 没有过滤器/拦截器,需要在前端判断登录状态 需要自己实现 oauth2 的 授权码模式 交互逻辑 需要解决安全性问题, oauth2 的 clientSecret 参数放在前端不安全 三、实现架构 下面是 前后端分离 项目的三个角色(前端WEB工程、后端API工程、授权中心UAA)间进行 登录 / 单点登录 时的交互逻辑架构图 跨域的单点登录原理 在《 Spring Security基于Oauth2的SSO单点登录怎样做?一个注解搞定 》中已经介绍过了这里就不展开说明了

【微信】第三方登录接口流程

↘锁芯ラ 提交于 2020-03-17 03:04:57
微信登录介绍: 微信OAuth2.0授权登录让微信用户使用微信身份安全登录第三方应用或网站,在微信用户授权登录已接入微信OAuth2.0的第三方应用后,第三方可以获取到用户的接口调用凭证(access_token),通过access_token可以进行微信开放平台授权关系接口调用,从而可实现获取微信用户基本开放信息和帮助用户实现基础开放功能等。 准备工作: 在进行微信OAuth2.在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的AppID和AppSecret,申请微信登录且通过审核后,可开始接入流程。 创建网站应用 在创建网站应用快要完成的时候会设置一个返回域,此域要跟代码的返回地址一致(授权回调域最好写一级域名)。 提交审核,等待获取到APPID和AppSecret 接入流程示意图: 代码操作示例: 流程示意图: 第一步:请求CODE 第三方使用网站应用授权登录前请注意已获取相应网页授权作用域(scope=snsapi_login),则可以通过在PC端打开以下链接: https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state

微信公众平台开发(71)OAuth2.0网页授权

放肆的年华 提交于 2020-03-07 07:20:32
本文介绍如何获得微信公众平台关注用户的基本信息,包括昵称、头像、性别、国家、省份、城市、语言。 本文的方法将囊括订阅号和服务号以及自定义菜单各种场景,无论是否有高级接口权限,都有办法来获得用户基本信息,而无需模拟登录。 在本文中,特别要注意的是有两个不同的Access Token,他们产生的方式不一样,一种是使用AppID和AppSecret获取的access_token,一种是OAuth2.0授权中产生的access_token,方倍工作室分别称为全局Access Token和授权Access Token。 一、通过全局Access Token获取用户基本信息 1. 用户关注以及回复消息的时候,均可以获得用户的OpenID <xml> <ToUserName><![CDATA[gh_b629c48b653e]]></ToUserName> <FromUserName><![CDATA[ollB4jv7LA3tydjviJp5V9qTU_kA]]></FromUserName> <CreateTime>1372307736</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[subscribe]]></Event> <EventKey><![CDATA[]]></EventKey> </xml>

OAuth2介绍与使用

余生长醉 提交于 2020-03-06 00:24:42
1.什么是OAuth2 OAuth(开放授权)是一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0。 2.应用场景 第三方应用授权登录:在APP或者网页接入一些第三方应用时,时长会需要用户登录另一个合作平台,比如QQ,微博,微信的授权登录。 原生app授权:app登录请求后台接口,为了安全认证,所有请求都带token信息,如果登录验证、请求后台数据。 前后端分离单页面应用(spa):前后端分离框架,前端请求后台数据,需要进行oauth2安全认证,比如使用vue、react后者h5开发的app。 3.名词定义 (1) Third-party application:第三方应用程序,本文中又称"客户端"(client),比如打开知乎,使用第三方登录,选择qq登录,这时候知乎就是客户端。 (2)HTTP service:HTTP服务提供商,本文中简称"服务提供商",即上例的qq。 (3)Resource Owner:资源所有者,本文中又称"用户"(user),即登录用户。 (4)User Agent:用户代理,本文中就是指浏览器。 (5)Authorization server:认证服务器

Spring Security基于Oauth2的SSO单点登录怎样做?一个注解搞定

旧巷老猫 提交于 2020-03-02 11:19:49
一、说明 单点登录顾名思义就是在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统,免除多次登录的烦恼。本文主要介绍 同域 和 跨域 两种不同场景单点登录的实现原理,并使用 Spring Security 来实现一个最简单的 跨域 SSO客户端 。 二、原理说明 单点登录主流都是基于共享 cookie 来实现的,下面分别介绍 同域 和 跨域 下的两种场景具体怎样实现共享 cookie 的 2.1. 同域单点登录 适用场景 :都是企业自己的系统,所有系统都使用同一个一级域名通过不同的二级域名来区分。 举个例子 :公司有一个一级域名为 zlt.com ,我们有三个系统分别是: 门户系统(sso.zlt.com) 、 应用1(app1.zlt.com) 和 应用2(app2.zlt.com) ,需要实现系统之间的单点登录,实现架构如下: 核心原理: 门户系统 设置 Cookie 的 domain 为一级域名也就是 zlt.com ,这样就可以共享门户的 Cookie 给所有的使用该域名( xxx.zlt.com )的系统 使用 Spring Session 等技术让所有系统共享 Session 这样只要 门户系统 登录之后无论跳转 应用1 或者 应用2 ,都能通过门户 Cookie 中的 sessionId 读取到 Session 中的登录信息实现 单点登录 2.2.

微信公众平台开发(71)OAuth2.0网页授权

半世苍凉 提交于 2020-03-02 03:49:44
本文介绍如何获得微信公众平台关注用户的基本信息,包括昵称、头像、性别、国家、省份、城市、语言。 本文的方法将囊括订阅号和服务号以及自定义菜单各种场景,无论是否有高级接口权限,都有办法来获得用户基本信息,而无需模拟登录。 在本文中,特别要注意的是有两个不同的Access Token,他们产生的方式不一样,一种是使用AppID和AppSecret获取的access_token,一种是OAuth2.0授权中产生的access_token,方倍工作室分别称为 全局Access Token和 授权Access Token。 一、通过全局Access Token获取用户基本信息 1. 用户关注以及回复消息的时候,均可以获得用户的OpenID <xml> <ToUserName><![CDATA[gh_b629c48b653e]]></ToUserName> <FromUserName><![CDATA[ollB4jv7LA3tydjviJp5V9qTU_kA]]></FromUserName> <CreateTime>1372307736</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[subscribe]]></Event> <EventKey><![CDATA[]]></EventKey> </xml>

网页微信授权

删除回忆录丶 提交于 2020-03-02 03:47:19
一、什么是OAuth2.0 官方网站:http://oauth.net/ http://oauth.net/2/ 权威定义:OAuth is An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications. OAuth是一个开放协议,允许用户让第三方应用以安全且标准的方式获取该用户在某一网站、移动或桌面应用上存储的私密的资源(如用户个人信息、照片、视频、联系人列表),而无需将用户名和密码提供给第三方应用。 OAuth 2.0是OAuth协议的下一版本,但不向后兼容OAuth 1.0。 OAuth 2.0关注客户端开发者的简易性,同时为Web应用,桌面应用和手机,和起居室设备提供专门的认证流程。 OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要分享他们的访问许可或他们数据的所有内容。 新浪微博API目前也使用OAuth 2.0。 原文:http:/

Spring Cloud进阶之路 | 二十一:授权服务(Spring Cloud Oauth2)JWT实现-TokenStore之JwtTokenStore

痞子三分冷 提交于 2020-02-24 12:37:32
前言 前面的文章中,分别介绍了 Spring Cloud进阶之路 | 十八:授权服务(Spring Cloud Oauth2)ClientDetailsService之JdbcClientDetailsService 、 Spring Cloud进阶之路 | 十九:授权服务(Spring Cloud Oauth2)TokenStore之JdbcTokenStore 、 Spring Cloud进阶之路 | 二十:授权服务(Spring Cloud Oauth2)TokenStore之RedisTokenStore 等实现。然而,在现如今微服务“横行”、前后端分离的大环境下,JWT已然是业内标准。Spring Cloud Oauth2针对JWT也做了一些列封装,满足业务需求。本文即对Spring Cloud Oauth2的JWT实现做一系列说明。 准备工作 复用上一篇文章 Spring Cloud进阶之路 | 二十:授权服务(Spring Cloud Oauth2)TokenStore之RedisTokenStore 中的xmall-auth授权工程。 秘钥生成 既然是采用JWT实现,那么势必需要提供加密算法,分为对称加密和非对称加密算法。本文以非对称加密算法RSA为例,利用JDK 1.8自带工具keytool生成秘钥库,并导出相关秘钥文件。 生成秘钥库。 keytool

避坑指南(八):Spring Cloud Oauth2 token_key端点404

陌路散爱 提交于 2020-02-24 10:09:47
问题 授权服务器基于Spring Cloud Oauth2创建后,配置TokenStore为JwtTokenStore,访问/oauth/token_key接口获取公钥,出现404错误。 授权服务器配置如下。 package com.luas.xmall.auth.configuration; ​ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.ClassPathResource; import org.springframework.http.HttpMethod; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework

网站接入QQ登录

喜欢而已 提交于 2020-02-23 17:45:50
在网站接入QQ登录时遇到很多麻烦,主要是QQ互联和腾讯开放平台的关系比较乱,不知道要从哪个接入。 最终解决方式:在腾讯开放平台注册个人开发者,验证通过后,在QQ互联平台会有腾讯开放平台的注册信息,然后依次点击 个人中心-》编辑-》提交审核 审核完毕后应该就可以通过分配的ID信息接入了。 (在最初QQ互联注册时,个人开发者总是需要提交营业执照,现在换了个qq号注册不需要了,可能是第一次QQ互联注册时JS没切过来的原因吧,应该是可以直接在QQ互联注册个人开发者的,不需要我这样绕路,(-。-;)) 通过了解QQ互联和腾讯开放平台的区别应该是这个:QQ互联主要是为了给第三方网站或移动应用提供登录信息。而腾讯开发平台,则是为托管型的应用(平台应用和移动应用)提供服务的。不过现在QQ互联正在往腾讯开发平台上迁移。 下面是网上看到的比较不错的入门教程 :(原文: http://blog.csdn.net/xiaoxian8023 ) 主要分两部分: 1.注册QQ互联开发者 2.接入QQ登录方法和接口使用方法 现在这种第三方登录的应用很广泛也很方便。省得用户进行注册了。今天就来研究一下QQ登录API的使用。 首先说一下,腾讯提供了许多个的开放平台。差不多每个大的产品都提供了开放平台,比如微信、QQ邮箱,财付通等。这里面有2个比较易混的,一个是 QQ互联 ,一个是 腾讯开发平台