oauth

【One by One系列】IdentityServer4(二)使用Client Credentials保护API资源

混江龙づ霸主 提交于 2021-01-17 16:48:57
书接上回,我们将会正式开始介绍IdentityServer4。 IdentityServer4是实现了OAuth2.0+OpenId Connect两种协议的优秀第三方库,属于.net生态中的优秀成员。可以很容易集成至ASP.NET Core,颁发token。 使用 Id4 基本步骤如下: **1.**在 Startup.Configure 方法中调用 app.UseIdentityServer(); 添加中间件,把Id4添加至http请求处理管道,这使得Id4可以为OpenID Connect和OAuth2协议描述的端点(如 /connect/token )请求提供服务。 **2.**在 Startup.ConfigureServices 中注册IdentityServer4 services.AddIdentityServer(options=> { ... }); **3.**配置Identity Server Identity资源表示提供给客户端进行用户识别的信息(声明)。声明可能包括用户名称、电子邮件地址等。 API资源表示用户可通过访问令牌访问的受保护数据或功能。API 资源的一个示例是要求授权的 Web API(或 API集合)。 用于签名的凭据(credentials) 用户可能会请求访问的Identity资源和API资源 会请求获取token的客户端

微服务

◇◆丶佛笑我妖孽 提交于 2021-01-16 07:39:26
微服务 ,又称微服务 架构 ,是一种架构风格,它将应用程序构建为以 业务领域 为模型的小型自治服务集合 。 通俗地说,你必须看到蜜蜂如何通过对齐六角形蜡细胞来构建它们的蜂窝状物。他们最初从使用各种材料的小部分开始,并继续从中构建一个大型蜂箱。这些细胞形成图案,产生坚固的结构,将蜂窝的特定部分固定在一起。这里,每个细胞独立于另一个细胞,但它也与其他细胞相关。这意味着对一个细胞的损害不会损害其他细胞,因此,蜜蜂可以在不影响完整蜂箱的情况下重建这些细胞。 图1:微服务的 蜂窝表示 – 微服务访谈问题 请参考上图。这里,每个六边形形状代表单独的服务组件。与蜜蜂的工作类似,每个敏捷团队都使用可用的框架和所选的技术堆栈构建单独的服务组件。就像在蜂箱中一样,每个服务组件形成一个强大的微服务架构,以提供更好的可扩展性。此外,敏捷团队可以单独处理每个服务组件的问题,而对整个应用程序没有影响或影响最小。 Q2。微服务架构有哪些优势? 图2:微服务的 优点 – 微服务访谈问题 独立开发 – 所有微服务都可以根据各自的功能轻松开发 独立部署 – 基于其服务,可以在任何应用程序中单独部署它们 故障隔离 – 即使应用程序的一项服务不起作用,系统仍可继续运行 混合技术堆栈 – 可以使用不同的语言和技术来构建同一应用程序的不同服务 粒度缩放 – 单个组件可根据需要进行缩放,无需将所有组件缩放在一起 Q3

SSO的通用标准OpenID Connect

与世无争的帅哥 提交于 2021-01-14 05:53:42
简介 OpenID Connect简称为OIDC,已成为Internet上单点登录和身份管理的通用标准。它在OAuth2上构建了一个身份层,是一个基于OAuth2协议的身份认证标准协议。 OAuth2实际上只做了授权,而OpenID Connect在授权的基础上又加上了认证。 OIDC的优点是:简单的基于JSON的身份令牌(JWT),并且完全兼容OAuth2协议。 今天我们将会介绍一下OIDC的具体原理。 OpenID Connect是什么 OpenID Connect发布于2014年,是建立在OAuth 2.0协议之上的简单身份层,它允许客户端基于授权服务器或身份提供商(IdP)进行的身份验证来验证最终用户的身份,并获得用户的相关信息。 OpenID Connect提供了RESTful HTTP API,并使用Json作为数据的传递格式。 之前我们讲到了基于XML格式的SAML协议,而OpenID Connect因为其更加简洁的数据交换格式,被越来越多的应用使用,已经成为事实上的标准。 我们看一下OpenID connect的基本流程: RP(client)发送一个认证请求到 OpenID Provider(OP)。 OP对End User进行认证并获得相应的授权。 OP返回一个ID Token或者access Token给RP。 RP使用access

Postman用法简介

不羁的心 提交于 2021-01-10 00:21:46
转自:http://blog.csdn.net/flowerspring/article/details/52774399 Postman用法简介 转载 2016年10月10日 09:04:10 103008 Postman用法简介-Http请求模拟工具   在我们平时开发中,特别是需要与接口打交道时,无论是写接口还是用接口,拿到接口后肯定都得提前测试一下,这样的话就非常需要有一个比较给力的Http请求模拟工具,现在流行的这种工具也挺多的,像火狐浏览器插件-RESTClient,Chrome浏览器插件-Postman等等。这里主要介绍一下Postman。 一、Postman说明   Postman是一种网页调试与发送网页http请求的chrome插件。我们可以用来很方便的模拟get或者post或者其他方式的请求来调试接口。 二、安装(安装到chrome插件)   在安装时,最好是通过chrome浏览器打开chrome网上应用店直接添加到chrome插件中。如果是直接从网上先把postman下载好很可能按不到chrome上去。 进入chrome网上应用店需要FQ,在这里默认你可以FQ,大体步骤如下: 打开chrome浏览器的chrome网上应用店,搜索postman。 点击添加至CHROME。 三、基本使用方法   说明:在这里以一个提交多层嵌套的json数据格式的post请求为例。

【python】Python 资源大全中文版

浪尽此生 提交于 2021-01-09 02:12:36
申明:感谢原作者的整理与分享,本篇文章分享自: https://www.jianshu.com/p/9c6ae64a1bd7 GitHub 上有一个 Awesome - XXX 系列的资源整理,资源非常丰富,涉及面非常广。 awesome-python 是 vinta 发起维护的 Python 资源列表,内容包括:Web框架、网络爬虫、网络内容提取、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。 版权是  https://github.com/jobbole/awesome-python-cn 具体内容 环境管理 管理 Python 版本和环境的工具 p:非常简单的交互式 python 版本管理工具。 官网 pyenv:简单的 Python 版本管理工具。 官网 Vex:可以在虚拟环境中执行命令。 官网 virtualenv:创建独立 Python 环境的工具。 官网 virtualenvwrapper:virtualenv 的一组扩展。 官网 包管理 管理包和依赖的工具。 pip:Python 包和依赖关系管理工具。 官网 pip-tools:保证 Python 包依赖关系更新的一组工具。 官网 conda:跨平台,Python 二进制包管理工具。 官网 Curdling:管理 Python 包的命令行工具。 官网 wheel

微信PC网页扫码登录和公众号网页授权登录的比较

久未见 提交于 2021-01-07 23:43:49
最近在做PC端二维码扫码登录的功能,总结了一些开发过程中学习到的知识。 主要区别 二者的主要区别: 差异 PC网页扫码登录 公众号网页授权登录 账号要求 需要开放平台账号创建网站应用 一个认证过的服务号就可以(也可以使用公众号的测试号) 授权方式 在页面打开公众号二维码之后授权 公众号内打开授权链接(不关注公众号也可以) 授权环境 PC浏览器网页 微信客户端 测试号 无 有(可以申请使用测试账号) 两者的授权流程一样,需要授权获取code换取token和openid再去请求用户信息 PC端扫码还有一种方式(本质上还是网页授权的方式) PC端扫的二维码地址是移动端的网页,手机扫码后打开的是网页授权链接,通过网页授权的方式获取code拿到用户openid或者unionid,PC端通过轮询方式获取用户id进行登录 授权原理 授权原理简述: 用户通过手机微信确认登录之后,微信方会返回一个授权码code给回第三方(接入方),这个授权码code一次有效期,且有效时间比较短;第三方通过此code去调用微信接口获取token,token的有效期也比较短,当然用户可以通过刷新token的方式来延长token的有效时长;第三步通过token再去调用微信开发平台接口,获取微信个人用户信息 微信OAuth2.0授权登录官方说明 1.第三方发起微信授权登录 请求,微信用户允许授权第三方应用后

Postman 接口测试

一个人想着一个人 提交于 2021-01-07 08:16:22
使用场景: 开发接口的时候需要快速调接口的时候 测试的时候需要非常方便的调用接口。通过不同的参数去测试接口的输出 这些接口调用是需要保存下来反复运行的 在运行过程中,如果有断言,检查点就更好了第三方 postman: 官网下载地址:https://www.getpostman.com/ 官方文档:https://www.getpostman.com/docd/ 社区及支持:https://www.getpostman.com/community postman 的安装 postman有以下一些版本: chrome插件版 native 本地版 插件版和native 版本的区别 Cookies:native 版本可以直接操作cookie ,而chrome 版本需要安装扩展 Built-in proxy:native 版本自带proxy 可以用来抓包 Menu bar(菜单栏) Restricted headers:有一些headers 在chrome app 上是受限的,比如Origin and User_Agent Don‘ t follow redirects option:native 版本才有这个选项 postman console:native 版本自带 断言的api 文档: https://www.getpostman.com/docs/postman/scripts

接口测试与Postman

允我心安 提交于 2021-01-07 00:54:54
阅读目录 1. 接口测试简介 1.1 什么是接口测试    1.2 接口测试的必要性    1.3 接口测试流程    1.4 接口文档    1.5 接口测试用例设计    1.6 接口测试用例模板 2.Postman    2.1 Postman简介    2.2 Postman主页    2.3 Postman 发送请求    2.4 Postman 授权    2.5 Cookie设置    2.6 Postman变量    2.7 Postman断言    2.8 postman运行collection    2.9 Postman数据驱动    2.10 构建工作流 1.接口测试简介 1.1 什么是接口测试 测试人员通常所说的“接口测试”是针对系统各组件之间接口的一种测试,它属于功能测试。接口能测出普通界面操作难以发现的问题。如,我们都知道系统是由前端后端组成,一些数据在前端做了校验,后端同样也需要校验才能保证安全,界面操作显然只能检查到前端校验这一层,只有直接面对前后端之间的该接口才能检验出后端是否也做了校验。 1.2 接口测试的必要性   • 可以发现很多页面操作发现不了的问题     • 检查系统的异常处理能力   • 检查系统的安全性、稳定性          • 前端随便变,接口测好了,后端不用变 1.3 接口测试的流程   • 需求评审,熟悉业务和需求   

Getting email id value null as response during apple-authentication

假如想象 提交于 2021-01-05 09:51:28
问题 I'm implementing apple-authentication in react native using expo-apple-authentication package. Below is the code which I'm calling on button's onPress. async handleSocialLogin() { const { mutate, BB, onSuccess, navigation } = this.props; try { const result = await AppleAuthentication.signInAsync({ requestedScopes: [ AppleAuthentication.AppleAuthenticationScope.FULL_NAME, AppleAuthentication.AppleAuthenticationScope.EMAIL, ], }); Alert.alert(JSON.stringify(result)) // signed in } catch (e) {

Getting email id value null as response during apple-authentication

淺唱寂寞╮ 提交于 2021-01-05 09:49:10
问题 I'm implementing apple-authentication in react native using expo-apple-authentication package. Below is the code which I'm calling on button's onPress. async handleSocialLogin() { const { mutate, BB, onSuccess, navigation } = this.props; try { const result = await AppleAuthentication.signInAsync({ requestedScopes: [ AppleAuthentication.AppleAuthenticationScope.FULL_NAME, AppleAuthentication.AppleAuthenticationScope.EMAIL, ], }); Alert.alert(JSON.stringify(result)) // signed in } catch (e) {