一、前言

这篇文章可能大家会觉得很空洞,没有实际的实战东西,主要是自己整理出来的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 整体流程图:

具体的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的服务来用。应用场景如图:

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系统,您可以编写代码来适应各种场景。

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

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

如果您觉的不错,请微信扫码关注 【dotnet博士】公众号,后续给您带来更精彩的分享

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