欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

asp.net core系列 53 IdentityServer4 (IS4)介绍

程序员文章站 2022-06-10 09:10:03
一.概述 在物理层之间相互通信必须保护资源,需要实现身份验证和授权,通常针对同一个用户存储。对于资源安全设计包括二个部分,一个是认证,一个是API访问。 1 认证 认证是指:应用程序需要知道当前用户的身份时,需要进行身份验证,确定用户是否有效。最常见的身份验证协议是SAML2p,WS-Federat ......

一.概述

  在物理层之间相互通信必须保护资源,需要实现身份验证和授权,通常针对同一个用户存储。对于资源安全设计包括二个部分,一个是认证,一个是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进行通信(可能都是自己的,也有可能是第三方提供)。

 

    在没有使用安全令牌服务时,多物理层之间通信,看起来像下面这样:

asp.net core系列 53 IdentityServer4 (IS4)介绍

    加了identityserver4重构应用程序后,使用了安全令牌服务,产生的体系结构和协议如下所示:

asp.net core系列 53 IdentityServer4 (IS4)介绍

 

   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社区版以管理用户和配置

  

  参考文献

     identityserver4官方文档介绍