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

Asp.Net Core IdentityServer4 中的基本概念

程序员文章站 2022-05-28 14:44:02
这篇文章可能大家会觉得很空洞,没有实际的实战东西,主要是自己整理出来的IdentityServer4 的一些概念性的东西;如果你对IdentityServer4有过一定的实战经验,可以跳过不需要阅读该文章,后续我会以一个Demo 来给大家带来IdentityServer4深入的实战分享 ......

一、前言

这篇文章可能大家会觉得很空洞,没有实际的实战东西,主要是自己整理出来的identityserver4 的一些概念性的东西;如果你对identityserver4有过一定的实战经验,可以跳过不需要阅读该文章,后续我会以一个demo 来给大家带来identityserver4深入的实战分享 。

二、概述

identityserver4是一个用于asp.net core的openid connectoauth 2.0框架

2.1 什么是oauth 2.0?

oauth 2.0是授权的行业标准协议。oauth 2.0侧重于客户端开发人员的简单性,同时为web应用程序、桌面应用程序、移动应用等提供特定的授权流。该规范及其扩展正在ietf oauth工作组内开发。

简单说,oauth 就是一种授权机制。数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据。系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用。

oauth 2.0 规定了四种获得令牌的流程。你可以选择最适合自己的那一种,向第三方应用颁发令牌。不管哪一种授权方式,第三方应用申请令牌之前,都必须先到系统备案,说明自己的身份,然后会拿到两个身份识别码:客户端 id(client id)和客户端密钥(client secret)。这是为了防止令牌被滥用,没有备案过的第三方应用,是不会拿到令牌的。下面就是这四种授权方式。

  • authorization code(授权码模式)
  • implicit(简化模式)
  • resource owner password credentials(密码模式)
  • client credentials(客户端模式)

oauth 整体流程图:
Asp.Net Core IdentityServer4 中的基本概念

具体的oauth 2.0 四大授权方式请参考 阮一峰 的博客 oauth 2.0 的四种方式

2.2 什么是openid connect

openid connect的 的简称是oidc,oidc=(identity, authentication) + oauth 2.0。它在oauth2上构建了一个身份层,是一个基于oauth2协议的身份认证标准协议。我们都知道oauth2是一个授权协议,它无法提供完善的身份认证功能,oidc使用oauth2的授权服务器来为第三方客户端提供用户的身份认证,并把对应的身份认证信息传递给客户端,且可以适用于各种类型的客户端(比如服务端应用,移动app,js应用),且完全兼容oauth2,也就是说你搭建了一个oidc的服务后,也可以当作一个oauth2的服务来用。应用场景如图:
Asp.Net Core IdentityServer4 中的基本概念

2.3 identityserver4功能特性

identityserver4集成到你的应用具有如下功能特点:

  • authentication as a service:可以为你的应用(如网站、本地应用、移动端、服务)做集中式的登录逻辑和工作流控制。identityserver是完全实现了openid connect协议标准
  • single sign-on / sign-out:在多个应用程序类型上进行单点登录(和单点退出)。
  • access control for apis:为不同类型的客户端,例如服务器到服务器、web应用程序、spas和本地/移动应用程序,发出api的访问令牌。
  • federation gateway:支持来自azure active directory, google, facebook这些知名应用的身份认证,可以不必关心连接到这些应用的细节就可以保护你的应用。
  • focus on customization:最重要的是identityserver可以根据需求自行开发来适应应用程序的变化。identityserver不是一个框架、也不是一个盒装产品或一个saas系统,您可以编写代码来适应各种场景。
    Asp.Net Core IdentityServer4 中的基本概念

2.4 identityserver4 可以帮助我们做什么?

identityserver是将规范兼容的openid connect和oauth 2.0端点添加到任意asp.net core应用程序的中间件。通常,您构建(或重新使用)包含登录和注销页面的应用程序,identityserver中间件会向其添加必要的协议头,以便客户端应用程序可以与其对话 使用这些标准协议。
Asp.Net Core IdentityServer4 中的基本概念

如果您觉的不错,请微信扫码关注 【dotnet博士】公众号,后续给您带来更精彩的分享
Asp.Net Core IdentityServer4 中的基本概念

以上如果有错误的地方,请大家积极纠正,谢谢大家的支持!!