前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Identity Server4学习系列一

Identity Server4学习系列一

作者头像
郑小超.
发布于 2018-12-26 09:32:53
发布于 2018-12-26 09:32:53
9250
举报
文章被收录于专栏:GreenLeavesGreenLeaves

一、前言

今天开始学习Identity Server4,顺便了解下.Net Core,以便于完善技术栈,最主要的是要跟上.Net的发展潮流,顺便帮助各位整理下官方文档,加上一些我自己对他的理解.

这是官方文档的地址

二、简介

1、常见的网站的交互方式如下:

(1)、浏览器与Web应用程序交互。单站点应用程序,一个站点搞定所有的东西,常见的有MVC、WebForm等等,这类一般不存在多客户端之说,因为页面和后台处理程序是强耦合的,也就是说,这个时候我们的后台处理程序只处理对应的页面,不能给其它的诸如IOS、Android等等设备调用,所以没有安全一说.

(2)、Web应用程序(可能是本地的,也可能是远程的)与WebAPI通信(有时是自己的,有时代表用户)。多站点应用程序,这个时候我们通过对业务的聚合提供一套完整的Web API给外界调用,调用者可以是多种设备,比如IOS、Andriod、H5站点等.这个时候就有安全一说,因为这个时候如果你的API公开,不做任何的安全措施,意味着所有知道你接口的应用程序都能调用.这个时候你必须考虑安全问题

(3)、WebApi与WebApi之间的调用,一般用于规模较大的网站,因为当一个站点达到一定规模,势必要对业务进行拆分,将不同的业务通过WebApi部署到不同的站点上,然后各个站点之间进行通信,如果有必要可以进行分布式部署,用Nginx进行负载均衡.这个时候,也必须考虑站点的安全性,因为不能让你的核心业务信任外界任何的调用.

所以,WebApi上的资源安全对我们来说是非常重要的问题,必须保证我门的API受我们的保护,只有经过我们的认证之后,才能进行安全的访问.通常,一般性的解决方法是,首先用户(可以是客户端用户、可以是服务端用户)通过了我们的认证系统,然后我们通过授权的方式,把这个资格开发给它.比如说编写博客这个事情,只有注册了并登陆博客园,才会有这个资格,如果没有注册,那么只能访问博客园的公共资源.当让这个例子不是很确切.

2、关于认证

(1)、简单的认证方式

常见的简单的认证方式一般就是设计一个注册登陆系统,接着给我们的Api接口继承一个基类,基类里面有判断用户是否登陆的操作,这样就确保了我们的Api只有注册并登陆了我们的系统的用户才能访问。但是Api与Api之间的访问总不能也这么设计吧?当然你可以给每个接口约定用户名和密码两个参数,然后给API的调用者分配一个账号密码,让Api在我们控制范围内的接受调用,但是没人会去这么干,而且会存在安全隐患,比如抓包等等,而且系统这么设计也不够优雅,当然你可以说用Https加密,但是这不是本文的重点.

(2)、认证协议

关于为什么要用认证协议请参考Web应用的认证机制常见的认证协议有SAML2p、WS-Federation和OpenIDConnect-SAML2p,它们是最流行和部署最广泛的。

(3)、OAuth 2.0认证

OAuth2是一种协议,允许应用程序从安全令牌服务请求访问令牌,并使用它们与API通信。此委托降低了客户端应用程序和api的复杂性.

(4)、OpenID Connect

OpenIDConnect和OAuth2.0非常相似-实际上OpenIDConnect是OAuth2.0之上的一个扩展。两个基本的安全问题,即身份验证和API访问,被组合成一个单一的协议-通常是安全令牌服务进行一次往返。我们认为,OpenIDConnect和OAuth2.0的结合是在可预见的将来保护现代应用程序的最佳方法。Identity yServer 4是这两种协议的实现,并且经过高度优化以解决移动、本地和Web应用程序的典型安全问题。

3、Identity Server4

(1)、简介

Identity Server4是一种中间件,它将符合规范的OpenIDConnect和OAuth2.0端点添加到任意ASP.NETCore应用程序中。也就是说你的移动端、本地应用程序只要符合OpenIDConnect和OAuth2.0协议,且你的ASP.NETCore应用程序也符合,那么他们之间就能进行交互.

(2)、实现认证的方式

MS提供的图,下面简要介绍下:

Users:用户

使用注册客户端并且想要访问资源的人

Client:客户端

客户端是一种软件,它从Identity Server请求令牌,令牌两种第一种请求身份令牌一验证用户身份的标识令牌(下面会介绍)、另一种是访问令牌(下面会介绍)一要求访问资源的令牌。客户端在请求令牌之前必须先在Identity Server注册。客户端的示例包括Web应用程序、本地移动或桌面应用程序、服务器进程等。

Resources:资源

资源是你希望使用Identity保护的资源,一般有两种:一是用户数据、二是Api资源

Identity Data:Identity数据

关于用户的身份数据标识信息,例如姓名或电子邮件地址等用户信息.

Identity Token:验证用户身份的标识令牌

标识令牌表示身份验证过程的结果。它至少包含一个用户标识符(称为Subaka Subject Claimation)和关于用户身份验证的方式和时间的信息。它可以包含其他身份数据。

Access Token:访问令牌

访问令牌允许访问API资源。客户端请求访问令牌并将它们转发给API。访问令牌包含有关客户端和用户的信息(如果存在的话)。API使用该信息来授权对其数据的访问。

那么大致的流程就是这样,首先用户使用客户端,接着客户端注册了Identity,并向Identity申请令牌,接着Identity就开始验证用户信息,通过将用户的信息存储到Identity Data里面,接着通过OpenIDConnect协议与客户端进行对话(向请求头中添加一些必要信息,并进行数据加密等操作),发放Identity Token,如果用户需要访问Api资源,那么去申请Access Token,通过将你的访问令牌(并遵循通OAuth2.0协议,向请求中添加一些必要信息,并进行数据加加密等操作))的同时将你的令牌转发给Api,通过那么就可以正常访问Api。

4、Identity Server4能干的事

当然Indentity能干的事不只是在遵循安全协议的情况下,发送安全令牌这么简单(当然也不简单!).

它还能有效的保护您的资源,并提供会话管理和单点登录管理等等.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-12-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ASP.NET Core技术--Identity Server 4 基础
IdentityServer4 :基于 ASP.NET Core 的 OpenID Connect 和 OAuth 2.0 框架。
软件架构师Michael
2023/03/06
1.2K0
深入探讨安全验证:OAuth2.0、Cookie与Session、JWT令牌、SSO与开放授权平台设计
认证和授权是安全验证中的两个重要概念。认证是确认身份的过程,用于建立双方之间的信任关系。只有在认证成功的情况下,双方才可以进行后续的授权操作。授权则是在认证的基础上,确定用户或系统对资源的访问权限。
努力的小雨
2023/11/11
1.7K0
五分钟入门OAuth2.0与OIDC
OAuth2.0是一种用于访问授权的行业标准协议,OAuth2.0用于为互联网用户提供将其在某个网站的信息授权给其他第三方应用、网站访问,但是不需要将网站的账号密码给第三方应用、网站。
windealli
2022/11/14
3.9K0
五分钟入门OAuth2.0与OIDC
Identity Server4学习系列三
在Identity Server4学习系列一和Identity Server4学习系列二之令牌(Token)的概念的基础上,了解了Identity Server4的由来,以及令牌的相关知识,本文开始实战,实现Identity Server4基本的功能。
郑小超.
2018/12/27
7170
Identity Server4学习系列三
低代码如何构建支持OAuth2.0的后端Web API
OAuth 是一个安全协议,用于保护全球范围内大量且不断增长的Web API。它用于连接不同的网站,还支持原生应用和移动应用于云服务之间的连接,同时它也是各个领域标准协议中的安全层。
葡萄城控件
2022/09/08
9070
低代码如何构建支持OAuth2.0的后端Web API
.Net Core 认证系统之基于Identity Server4 Token的JwtToken认证源码解析
介绍JwtToken认证之前,必须要掌握.Net Core认证系统的核心原理,如果你还不了解,请参考.Net Core 认证组件源码解析,且必须对jwt有基本的了解,如果不知道,请百度.最重要的是你还需要掌握identity server4的基本用法,关于identity server4因为设计到两个协议Oath2.0和openid connect协议,内容较多,不是本文重点,后续有时间我会写一片关于identity server4的源码分析.且为了保证整个系统的高度可控,我重写了整个id4,留下了password模式.如果有兴趣,可以关注本人的后续文章.
郑小超.
2020/01/15
2K0
.Net Core 认证系统之基于Identity Server4 Token的JwtToken认证源码解析
微服务架构之「 访问安全 」
应用程序的访问安全又是我们每一个研发团队都必须关注的重点问题。尤其是在我们采用了微服务架构之后,项目的复杂度提升了N个级别,相应的,微服务的安全工作也就更难更复杂了。并且我们以往擅长的单体应用的安全方案对于微服务来说已经不再适用了。我们必须有一套新的方案来保障微服务架构的安全。
奎哥
2019/06/18
1.1K0
聊聊统一身份认证服务
当企业的应用系统逐渐增多后,每个系统单独管理各自的用户数据容易形成信息孤岛,分散的用户管理模式阻碍了企业应用向平台化演进。当企业的业务发展到一定规模,构建统一的标准化账户管理体系将是必不可少的,因为它是企业云平台的重要基础设施,能够为平台带来统一的帐号管理、身份认证、用户授权等基础能力,为企业带来诸如跨系统单点登录、第三方授权登录等基础能力,为构建开放平台和业务生态提供了必要条件。
我思故我在
2020/02/14
5.3K0
聊聊统一身份认证服务
asp.net core IdentityServer4 概述
通常,每一层(前端,中间层和后端)都必须保护资源并实施身份验证和/或授权-经常针对同一用户存储。
HueiFeng
2020/02/12
1.3K0
asp.net core IdentityServer4 概述
使用微服务架构思想,设计部署OAuth2.0授权认证框架
1,授权认证与微服务架构 1.1,由不同团队合作引发的授权认证问题 去年的时候,公司开发一款新产品,但人手不够,将B/S系统的Web开发外包,外包团队使用Vue.js框架,调用我们的WebAPI,但是这些WebAPI并不在一台服务器上,甚至可能是第三方提供的WebAPI。同时处于系统安全的架构设计,后端WebAPI是不能直接暴露在外面的;另一方面,我们这个新产品还有一个C/S系统,C端登录的时候,要求统一到B/S端登录,可以从C端无障碍的访问任意B/S端的页面,也可以调用B/S系统的一些API,所以又增加了
用户1177503
2018/05/28
11.4K1
ASP.NET Core的身份认证框架IdentityServer4(3)-术语的解释
IdentityServer4 术语 IdentityServer4的规范、文档和对象模型使用了一些你应该了解的术语。 身份认证服务器(IdentityServer) IdentityServer是一
晓晨
2018/06/22
8260
全面详解互联网企业开放API的 “守护神”
这篇文章前前后后写了两个多礼拜,也是自己第三次写4000字以上的技术单篇文章。写作过程先是根据自己的思考和资料查找确认,再结合宙斯开放平台的实际使用,每天中午吃过饭一个小时来将这些内容碎片化的记录下来,今天得以利用整块的时间梳理总结完成。
王新栋
2019/09/04
7720
全面详解互联网企业开放API的 “守护神”
使用OAuth打造webapi认证服务供自己的客户端使用
一、什么是OAuth OAuth是一个关于授权(Authorization)的开放网络标准,目前的版本是2.0版。注意是Authorization(授权),而不是Authentication(认证)。用来做Authentication(认证)的标准叫做openid connect,我们将在以后的文章中进行介绍。 二、名词定义 理解OAuth中的专业术语能够帮助你理解其流程模式,OAuth中常用的名词术语有4个,为了便于理解这些术语,我们先假设一个很常见的授权场景: 你访问了一个日志网站(third part
逸鹏
2018/04/10
2.8K0
使用OAuth打造webapi认证服务供自己的客户端使用
OAuth 2.0 授权认证详解
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/06/20
1.9K0
OAuth 2.0 授权认证详解
Identity Server 4 预备知识 -- OpenID Connect 简介
我之前的文章简单的介绍了OAuth 2.0 (在这里: https://www.cnblogs.com/cgzl/p/9221488.html), 还不是很全. 这篇文章我要介绍一下 OpenID C
solenovex
2018/07/04
1K0
OAuth2.0 认证
密码模式(Resource owner password credentials)流程
谢公子
2022/01/20
1.5K0
OAuth2.0 认证
IdentityServer4 知多少
现在的应用开发层出不穷,基于浏览器的网页应用,基于微信的公众号、小程序,基于IOS、Android的App,基于Windows系统的桌面应用和UWP应用等等,这么多种类的应用,就给应用的开发带来的挑战,我们除了分别实现各个应用外,我们还要考虑各个应用之间的交互,通用模块的提炼,其中身份的认证和授权就是每个应用必不可少的的一部分。而现在的互联网,对于信息安全要求又十分苛刻,所以一套统一的身份认证和授权就至关重要。
圣杰
2018/09/20
3K0
IdentityServer4 知多少
oauth2.0的学习与使用
栗子一: 小新现在想要使用一个“在线打印服务”来打印一些照片,同时小新的照片都存储在了“云网盘”上,按照传统的方式小新要怎么做呢?
向着百万年薪努力的小赵
2022/12/02
8670
eShopOnContainers 知多少[3]:Identity microservice
通常,服务所公开的资源和 API 必须仅限受信任的特定用户和客户端访问。那进行 API 级别信任决策的第一步就是身份认证——确定用户身份是否可靠。
圣杰
2018/11/08
2.9K0
Open ID Connect(OIDC)在 ASP.NET Core中的应用
我们在《ASP.NET Core项目实战的课程》第一章里面给identity server4做了一个全面的介绍和示例的练习 ,这篇文章是根据大家对OIDC遇到的一些常见问题整理得出。 本文将涉及到以下几个话题: 什么是OpenId Connect (OIDC) OIDC 对oAuth进行了哪些扩展? Identity Server4提供的OIDC认证服务(服务端) ASP.NET Core的权限体系中的OIDC认证框架(客户端) 什么是 OIDC 在了解OIDC之前,我们先看一个很常
用户1153966
2018/03/14
2.6K0
Open ID Connect(OIDC)在 ASP.NET Core中的应用
相关推荐
ASP.NET Core技术--Identity Server 4 基础
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文