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

Identity Server4学习系列一

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

一、前言

今天开始学习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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档