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

 

  9 关于IdentityServer4的一些开源示例

    https://identityserver4.readthedocs.io/en/latest/intro/packaging.html

     下面是关于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社区版以管理用户和配置

  

  参考文献

     IdentityServer4官方文档介绍 

posted on 2019-04-11 09:05 花阴偷移 阅读(...) 评论(...) 编辑 收藏

导航

公告