Asp.net Core IdentityServer4 入门教程(一):概念解析

目录

  • 1、IdentityServer4 是什么
  • 2、什么是OpenID和OAuth 2.0协议
  • 3、IdentityServer4 可以用来做什么
  • 其他

1、IdentityServer4 是什么

IdentityServer4 是使用 ASP.NET Core实现了OpenID和OAuth 2.0协议的身份认证框架;重复一遍,它是一个框架;框架决定它不是一个开箱即用的产品,需要根据自己的需求进行定制;同时也意味着更高的灵活性;

2、什么是OpenID和OAuth 2.0协议

对很多初学者来说(包括我自己),这个问题比较抽象,我还特定去搜索、了解、理解过,如果看完以下解析还是看不懂的话可以继续看这里

按我的理解来说,他们的区别是:

OpenID

直接引用以上链接问答里的话“OpenID是Authentication,OAuth是Authorization”,Authentication就是鉴权;就是用一条url来证明这条url就是我;这句话怎么理解呢,比如:

A网站是提供OpenID的网站,你在A网站注册了OpenID;

B、C、D等是支持OpenID登录的网站;

现在你要登录B、C、D网站,你只需要在B、C或D网站填写A网站注册的OpenID,然后统一跳到A网站去验证;

验证成功后,会跳转回B、C、D网站,成功登录;

如果是用用户名登录的B、C、D网站的话,要分别准备3套用户名和密码;使用以上OpenID登录的方式、只需要注册A网站得到OpenID;

OAuth 2.0

OAuth是Authorization,就是授权;一字之差;比如:

我在A网站拥有一些资源(头像啊、照片啊都算资源),B网站要用他,然后我们不想给B网站账号密码,那怎么给他资源呢?OAuth就是做这个的,资源的授权;

打个比方,我的(用户)微信的微信头像存在微信 weixin.qq.com(服务提供方),然后京东(客户端)想要获取我的微信头像(资源);

那么京东会引导用户打开微信的授权页面:

用户点击授权,京东得到一个授权token,然后京东通过授权token获取我的微信头像;授权页面如下图。

以上就是一个典型的OAuth过程

OAuth 2.0是OAuth 1.0出现安全漏洞后修补了协议(2.0具体协议RC 6749)的一个版本,与概念是什么无关;

OAuth 2.0和OAuth 1.0不兼容;

3、IdentityServer4 可以用来做什么

这个对于我们初学者来说很重要,总体来说它可以:

(1)单点登录

web/app/wap等多种应用上的单点登录、退出;

(2)保护你的api接口

比如你们公司有多个部门,每个部门都会有多个自己业务系统的接口,这些业务的接口又分别给不同的部门调用,不同的部门对调用同一个业务的权限又不一样;这个时候IdentityServer4就很容易实现以上需求了;

(3)支持OpenID登录

IdentityServer4是支持OpenID登录的框架,比如谷歌是OpenID的提供者,登录谷歌就直接使用第二点提到的使用谷歌 OpenID登录就可以登录了;

(4)统一的登录处理逻辑

比如你们公司有有多个业务后台系统需要登录,每个后台单独使用一套用户名和密码将非常麻烦,这个使用IdentityServer4亦可轻松使用一套用户名密码登录各个业务系统;

(5)高度自由的定制

还用更多的使用场景,可自行发掘;

其他

官方文档

源码地址

Demo地址

晓晨大神IdentityServer4系列文章

原文地址:https://www.cnblogs.com/xiaxiaolu/p/9721526.html

时间: 2024-10-06 00:11:24

Asp.net Core IdentityServer4 入门教程(一):概念解析的相关文章

观看杨老师(杨旭)Asp.Net Core MVC入门教程记录

观看杨老师(杨旭)Asp.Net Core MVC入门教程记录 ASP.NET Core MVC入门 Asp.Net Core启动和配置 Program类,Main方法 Startup类 依赖注入,IoC容器 生命周期 Transient:每次被请求都会创建新的实例 Scoped:每次Web请求会创建一个实例 Singleton:一旦被创建实例,就会一直使用这个实例,直到应用停止 依赖注入好处 不用去管生命周期 类型之间没有依赖 补充: ILogger:在Microsoft.Extensions

005.Getting started with ASP.NET Core MVC and Visual Studio -- 【VS开发asp.net core mvc 入门】

Getting started with ASP.NET Core MVC and Visual Studio VS开发asp.net core mvc 入门 2017-3-7 2 分钟阅读时长 本文内容 1.Install Visual Studio and .NET Core 安装 VS 与 .NET Core 2.Create a web app 创建一个 web 应用 By Rick Anderson This tutorial will teach you the basics of

ASP.NET MVC 5 入门教程 (3) 路由route

文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-get-started-route.html 上一节:ASP.NET MVC 5 入门教程 (2) 控制器Controller 源码下载:点我下载 上一节我们讲了如何创建一个控制器,本节我们来讨论如何通过路由来访问控制器及其Action. 那么问题来了,怎么写url能访问到我想要访问的控制器呢? 要想正确访问路由器,就得知道路由规则.它被写在解决方案的App_Start文件夹下的Ro

ASP.NET MVC 5 入门教程 (4) View和ViewBag

文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-get-started-view.html 上一节:ASP.NET MVC 5 入门教程 (3) 路由Route 源码下载:点我下载 View(视图)用来显示被controller处理好的数据.本节我们就来看看如何通过controller访问一个View页面,如何从controller向View传值. 打开Controllers文件夹下的FirstController.cs,我们把其

ASP.NET MVC 5 入门教程 (2) 控制器Controller

上一节:ASP.NET MVC 5 入门教程 (1) 新建项目 源码下载:点我下载 顾名思义,一个MVC项目是由M-Model-模型.V-View-视图.C-Controller-控制器这三部分组成.关系图如下所示. 先撇开MVC的整体运行机制不谈,我们可以看到用户发起的请求首先会到达控制器Controller. 控制器的定义:控制器是一种类,它可以处理浏览器发来的请求,从模型(Model)中获取数据,然后将处理后的数据通过视图(View)发送给浏览器. 我们首先创建一个Controller.在

ASP.NET MVC5 + EF6 入门教程 (5) Model和Entity Framework

文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-ef-6-get-started-model.html 上一节:ASP.NET MVC 5 入门教程 (4) View和ViewBag 源码下载:点我下载 一.创建Model MVC中的Model是用来给View提供显示数据的对象. 这里我们首先创建一个Model对象. 在解决方案资源管理器中右键点击Models文件夹,选择添加->类.添加一个名为Employee.cs的Model类

ASP.NET MVC5 + EF6 入门教程 (6) View中的Razor使用

文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-ef-6-get-started-model.html 上一节:ASP.NET MVC5 + EF6 入门教程 (5) Model和Entity Framework 源码下载:点我下载 一.Razor简介 在解决方案资源管理器中查看Views文件夹下的文件,如下图所示. 文件的后缀名都是.cshtml.这是什么文件呢?顾名思义,cshtml = cs + html,就是一个包含C S

Asp.Net Core WebAPI入门整理(三)跨域处理

一.Core  WebAPI中的跨域处理  1.在使用WebAPI项目的时候基本上都会用到跨域处理 2.Core WebAPI的项目中自带了跨域Cors的处理,不需要单独添加程序包 3.使用方法简单 二.使用实例 1.全局配置中启用跨域处理,命名为'any',任何都可以访问 public void ConfigureServices(IServiceCollection services) { //配置跨域处理 services.AddCors(options => { options.AddP

Asp.Net Core WebAPI入门整理(二)简单示例

一.Core WebAPI中的序列化 使用的是Newtonsoft.Json,自定义全局配置处理: // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { //使用IMvcBuilder 配置Json序列化处理 services.AddMvc()