oauth

Google、Github账号等...登录Web应用

牧云@^-^@ 提交于 2020-10-12 04:54:56
视频演示: https://www.bilibili.com/video/BV1M54y1z7A9/ 需要完成以下步骤: 创建工程并引入依赖包 spring-boot-starter-oauth2-client spring-boot-starter-security spring-boot-starter-web 创建Security配置信息 创建Github、Google的client-id和client-secret #Oauth2GoogleLoginApplication.java package com.deepincoding.oauth2googlelogin; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Oauth2GoogleLoginApplication { public static void main (String[] args) { SpringApplication.run(Oauth2GoogleLoginApplication.class, args); } }

RestFul的一些注意事项和接口开发规范

风格不统一 提交于 2020-10-09 00:22:25
一、 URI URI规范 1.不用大写; 2.用中杠 - 不用下杠 _ ; 3.参数列表要encode; 4.URI中的名词表示资源集合,使用复数形式。 5.在RESTful架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词(特殊情况可以使用动词),而且所用的名词往往与数据库的表格名对应。 资源集合 vs单个资源 URI表示资源的两种方式:资源集合、单个资源。 资源集合: /zoos //所有动物园 /zoos/1/animals //id为1的动物园中的所有动物 单个资源: /zoos/1//id为1的动物园 /zoos/1;2;3//id为1,2,3的动物园 避免层级过深的URI 在url中表达层级,用于 按实体关联关系进行对象导航 ,一般根据id导航。 过深的导航容易导致url膨胀,不易维护,如 GET /zoos/1/areas/3/animals/4 ,尽量使用查询参数代替路径中的实体导航,如 GET/animals?zoo=1&area=3 ; 二、 版本 应该将API的版本号放入到URI中 https://api.example.com/v1/zoos 三、 Request HTTP方法 通过标准HTTP方法对资源CRUD: GET:查询(从服务器取出资源一项或多项) GET /zoos GET /zoos/1 GET/zoos/1

2020-09-17

余生长醉 提交于 2020-10-06 01:28:38
统一身份认证OAuth2 前置条件 在进行统一身份认证 OAuth2.0 授权登录接入前,在统一身份认证服务平台注册应用,并对该应用提请接入审核,当拥有一个已审核通过的应用,并获得相应的 appid 和 appsecret 后,申请统一认证登录且审核通过后,才可以开始接入流程。 授权说明 统一身份认证 OAuth2.0 授权登录让统一认证用户使用统一认证身份安全登录第三方应用,在统一认证用户授权登录已接入统一认证 OAuth2.0 的第三方应用后,第三方可以获取到用户的接口调用凭证 access_token ,通过 access_token 可以进行统一身份认证开放平台授权接口调用,从而可实现获取统一身份认证用户基本开放信息和帮助用户实现基础开放功能。 统一身份认证 OAuth2.0 授权登录目前支持 authorization_code 模式,适用于拥有 server 端的应用授权。模式整体流程步骤如下图所示: 图 access_toke 操作流程图 图 access_token 获取时序图 ​​​​​​​ 请求code 第三方使用网站应用授权登录前请注意已获取相应网页授权接口,可以在 PC 端打开以下链接: http://ca.xxx.edu.cn/oauth/connect/appauth.do ?appid=APPID &redirect_uri=REDIRECT_URI

面试官的最爱问的“分布式”核心设计问题,没掌握的不妨来看看

ε祈祈猫儿з 提交于 2020-10-04 10:28:15
现在什么技术最火? 大数据、人工智能、区块链、边缘计算、微服务 ,但是这么多前沿技术的底层全部依赖于分布式。 分布式的核心:拆 微服务和分布式的区别 分布式:不管是横向拆分还是纵向拆分,拆了就行 微服务:纵向拆分(根据业务逻辑拆分,电商:用户、支付、购物……)、最小化拆分 横向拆分:jsp/servlet , service,dao 在不同层面的拆分,纵向拆分:根据业务逻辑拆成独立的小项目 CAP理论 任何一个分布式系统 都必须重点考虑的原则。 C:一致性(强一致性):所有子节点中的数据 时刻保持一致 A:可用性:整体能用 P:分区容错性 :允许部分失败 CAP理论: 在任何分布式系统中,C\A\P不可能共存,只能存在两个。 基础知识: 一般而言,至少要保证P可行,因为分布式 经常会出现 弱网环境。因此 就需要在C和A之间二选一。 举个例子: 当计算机A故障,分区容错性满足,如果一致性满足,那必须回滚,否则计算机B有数据,A没有,这样就不满足数据一致性。 BASE理论 BASE理论的目的: 为了弥补CAP的不足。 要理解的概念: 强一致性(时时刻刻一致、短时间内一致) 最终一致性(只要最后一致即可) 软状态: 多个节点时,允许中间某个时刻数据不一致。 尽最大努力 近似的实现 CAP三者:最终一致性 代替强一致性C BASE理论:首选满足A\P, 因此不能满足C。但是可以用

特性预览:Apache 顶级项目 Apache Pulsar 2.6.1 版本

六眼飞鱼酱① 提交于 2020-10-03 04:49:16
在正式分享 2.6.1 版本更新细节之前,冉小龙首先为我们分享了两个相关 PIP 的内容。 一个是 PIP-47 中关于「基于时间来进行版本更新」的计划。该 PIP 提出后,从 2.5.0 版本到目前即将发布的 2.6.1 版本中,时间更短、发布频率更高成为最突出的特点。同时反馈周期快,基本是每三个月更新一个大版本。这样用户也可以大概了解版本的一个更新周期,增进了项目透明度。 另一个是 PIP-69 中计划在 Go Client 中集成 schema 相关的功能和特性,更多详情介绍可以参考下方: https://github.com/apache/pulsar/wiki/PIP-69%3A-Schema-design-for-Go-client 。 版本更新情况 此次 2.6.1 版本更新接收了来自社区的 112 次 commits,覆盖 broker、Pulsar Functions、Go Function、Pulsar SQL、Schema、Java/CPP Client 等层面。同时截止目前 Apache Pulsar 项目已有 6400+ star、1500+ fork,以及即将超过 300 人的 contributor 数量。 接下来就简单介绍一些 2.6.1 版本中的更新功能吧。 修复 Key_Shared 中 stick hash range 冲突的问题 Key

IdentityServer4 4.x版本 配置Scope的正确姿势

旧时模样 提交于 2020-10-02 21:59:23
前言 IdentityServer4 是为ASP.NET Core系列量身打造的一款基于 OpenID Connect 和 OAuth 2.0 认证的框架 IdentityServer4官方文档: https://identityserver4.readthedocs.io/ 看这篇文章前默认你对IdentityServer4 已经有一些了解。 本篇使用IdentityServer4的4.x版本,跟老版本的稍微有些差别。下面直接进入正题。 鉴权中心 创建IdentityServer4项目 使用IdentityServer4 来搭建一个鉴权中心,首先建议安装一下IdentityServer4的官方项目模板。也可以不安装,自己创建项目,然后NuGet安装需要的包也行。(不过还是推荐用官方的模板,很方便)。 命令行执行: dotnet new -i IdentityServer4.Templates 安装完成后会多出以下项目模板: 我这里选用is4inmem这个模板来创建项目,这个模板的数据都是写死在内存中的,并且包含了Quickstart页面,比较简单方便。 来到我的项目目录下执行: dotnet new is4inmem --name Idp 执行完成会生成以下文件: VS2019打开项目: 运行项目: 配置ApiResource、ApiScope、Clients 修改Startup

OAuth2 Token 一定要放在请求头中吗?

╄→尐↘猪︶ㄣ 提交于 2020-10-02 12:21:13
Token 一定要放在请求头中吗? 答案肯定是否定的,本文将从源码的角度来分享一下 spring security oauth2 的解析过程,及其扩展点的应用场景。 Token 解析过程说明 当我们使用 spring security oauth2 时, 一般情况下需要把认证中心申请的 token 放在请求头中请求目标接口,如下图 ① spring security oauth2 通过拦截器获取此 token 完成令牌到当前用户信息(UserDetails)的转换。 OAuth2AuthenticationProcessingFilter.doFilter public class OAuth2AuthenticationProcessingFilter{ public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { try { // 1. 根据用户请求解析令牌,组装预登陆对象 Authentication authentication = tokenExtractor.extract(request); if (authentication == null) { // 若是预登陆状态为空,把无状态登录清空