Asp.Net Core IdentityServer4 中的基本概念
一、前言
这篇文章可能大家会觉得很空洞,没有实际的实战东西,主要是自己整理出来的identityserver4 的一些概念性的东西;如果你对identityserver4
有过一定的实战经验,可以跳过不需要阅读该文章,后续我会以一个demo 来给大家带来identityserver4深入的实战分享 。
二、概述
identityserver4
是一个用于asp.net core的openid connect
和oauth 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博士】公众号,后续给您带来更精彩的分享
以上如果有错误的地方,请大家积极纠正,谢谢大家的支持!!
推荐阅读
-
总结Visual Studio下ASP.NET模板化控件中的数据绑定
-
ASP.NET框架中的数据绑定概要与数据绑定表达式的使用
-
详解ASP.NET数据绑定操作中Repeater控件的用法
-
iOS App中数据管理框架Core Data的基本数据操作教程
-
ASP.NET中Cookie的使用方法
-
ASP.NET中 TextBox 文本输入框控件的使用方法
-
ASP.NET中 ObjectDataSource控件的DataObjectTypeName属性
-
asp.net实现在XmlTextWriter中写入一个CDATA的方法
-
Asp.net页面中调用soapheader进行验证的操作步骤
-
iOS App开发中Core Data框架基本的数据管理功能小结