asp.net core系列 53 IdentityServer4 (IS4)介绍
一.概述
在物理层之间相互通信必须保护资源,需要实现身份验证和授权,通常针对同一个用户存储。对于资源安全设计包括二个部分,一个是认证,一个是api访问。
1 认证
认证是指:应用程序需要知道当前用户的身份时,需要进行身份验证,确定用户是否有效。最常见的身份验证协议是saml2p,ws-federation、openid connect。saml2p是最受欢迎和最广泛部署的。openid connect是三者中的最新产品,被认为有最大潜力。。
2 api访问
对api访问是:用户对资源的访问,以api的形式来访问资源,涉及到资源授权。
3 oauth2 介绍
oauth2是一种协议,全称(open authorization),是为用户资源的授权提供了一个安全的、开放而又简易的标准。互联网很多服务如open api都提供了oauth认证服务。为桌面程序、手机端或web应用提供了一种简单的,标准的方式去访问需要用户授权的api服务。oauth2协议特定:
(1)简单:不管是oauth服务提供者还是应用开发者,都很易于理解与使用。
(2)安全:没有涉及到用户密钥等信息,更安全更灵活。
(3)开放:任何服务提供商都可以实现oauth,任何软件开发商都可以使用oauth。
4 oidc介绍
oidc是指openid connect,是基于oauth 2.0规范的可互操作的身份验证协议。是用 api 进行身份交互的框架。它使用简单的rest / json消息流来实现。oidc实现了用户验证跨越物理层,无需管理密码文件(密钥)。
openid是authentication,即认证。对用户的身份进行认证,判断其身份是否有效。
oauth是authorization,即授权。 对用户允许访问哪些资源的授权。 授权要在认证之后进行,只有确定用户身份才能授权。
openid connect是“认证”和“授权”的结合。是对oauth 2.0之上的扩展。这样对于两个基本的安全问题,即身份验证和api访问,被合并为一个协议,通常只需一次往返安全令牌服务。
5 identityserver4 介绍
identityserver4 是适用于asp.net core,集成了openid connect和oauth 2.0的框架。在现实开发中,项目涉及到多种物理层架构,它们是多进程的方式部署到不同的服务器上。比如web、移动、桌面、服务等物理层架构。也有可能是第三方的程序。 这些物理层之间的通信需要涉及到授权和身份认证。最常见的互动包括:
(1) 浏览器与web应用程序通信。
(2) web应用程序与web api进行通信(可能都是自己的,也有可能是第三方提供)。
(3) 服务器的应用程序与web api通信(比如windows服务与web api)。
(4) web api与web api进行通信(可能都是自己的,也有可能是第三方提供)。
在没有使用安全令牌服务时,多物理层之间通信,看起来像下面这样:
加了identityserver4重构应用程序后,使用了安全令牌服务,产生的体系结构和协议如下所示:
6 identityserver功能包括:
(1)保护你的资源(资源可以理解包括权限,比如是否有增、删、改、查的权限)
(2)使用本地帐户存储或外部身份提供程序对用户进行身份验证
(3)提供会话管理和单点登录
(4)管理和验证客户端
(5)向客户发放身份和访问令牌
(5)验证令牌
7 名词术语
用户是指:通过注册成功后, 登录来访问资源的人。比如:会员,系统管理员等。
客户端是指:向identityserver请求令牌的程序,用于验证用户(请求身份令牌)或访问资源(请求访问令牌)。如web应用程序,本机移动或桌面应用程序,spa,服务器进程等。
资源:使用identityserver保护资源,比如用户的身份数据或api。身份数据是关于用户的信息也称claim声明, 例如姓名或电子邮件地址。api表示客户端要调用的功能如web api。
身份令牌:是指身份验证过程,确实用户是否有效。即authentication认证。
访问令牌:是指允许访问api资源。即authorization授权。
8 nuget包安装
安装版本网址:https://www.nuget.org/packages/identityserver4/3.0.0-preview3.4
安装:install-package identityserver4 -version
9 关于identityserver4的一些开源示例
下面是关于identityserver的源码和示例,其中identityserver4.samples中有大量示例,学习从这里开始。
https://github.com/identityserver/
10 学习identityserver步骤
(1) 将identityserver添加到asp.net core应用程序
(2) 配置identityserver
(3) 为各种客户发放令牌
(4) 保护web应用程序和api
(5) 添加对基于entityframework的配置的支持
(6) 添加对asp.net身份的支持
(7) 添加adminui社区版以管理用户和配置
参考文献
上一篇: 一人我编程累
推荐阅读
-
asp.net core系列 72 Exceptionless使用介绍
-
asp.net core系列 66 Dapper介绍--Micro-ORM
-
ASP.NET Core身份认证服务框架IdentityServer4 介绍
-
asp.net core 系列 19 EFCore介绍
-
asp.net core 系列 2 启动Startup类介绍
-
asp.net core系列 46 Identity介绍
-
asp.net core系列 39 Razor 介绍与详细示例
-
asp.net core系列 58 IS4 基于浏览器的JavaScript客户端应用程序
-
asp.net core系列 40 Web 应用MVC 介绍与详细示例
-
asp.net core系列 57 IS4 使用混合流(OIDC+OAuth2.0)添加API访问