通过OpenIddict设计一个授权服务器01-介绍

https://dev.to/robinvanderknaap/setting-up-an-authorization-server-with-openiddict-part-i-introduction-4jid

本文是使用OpenIddict设置授权服务器系列文章的一部分。本系列中的文章将引导您完成使用OpenIddict在ASPNET Core平台上设置OAuth2+OpenID Connect授权服务器的过程。

通过设置授权服务器,可以支持基于令牌的身份验证和授权。它还允许您在一个中心位置对所有应用程序的用户进行身份验证,即单一登录(SSO)。
授权服务器可以同时提供一种或多种身份验证方法,如本地用户名密码,也可以提供外部身份验证提供商,如谷歌、脸书或ADFS。

通过实现OAuth2和OpenID Connect,您能够促进多种授权场景:Web应用程序、桌面应用程序、机器对机器通信,甚至客厅设备的授权。Oauth2和OpenID Connect都是行业标准。

identity server

十多年来,该项目一直在进行中。NET实现安全令牌服务,以及后来的OAuth2+OpenID Connect是IdentityServer。最近,IdentityServer的创建者/维护者决定对未来版本的Identity服务器进行双重许可。现在,除非你正在进行一个开源项目,否则你必须支付商业许可证的费用。

尽管对很多项目或公司来说,为好的软件付费不应该是一个问题,但无论如何,我还是去寻找替代方案。

OpenIddict

IdentityServer的一个替代方案是OpenIddict。OpenIddict提供了一种在任何ASP中实现OpenID Connect服务器的解决方案。NET Core 2.1、3.1和5.0应用程序,并从OpenIddict 3.0开始,任何ASP。NET 4.x或OWIN应用程序。
OpenIddict比IdentityServer稍微低一点。Identity Server为您提供了一个开箱即用的运行解决方案,要使OpenIddict发挥作用,您需要自己实现一些细节,如创建声明标识和设置正确的端点。

在本文中,我们将使用OpenIddict来实现我们的授权服务器。我们将以客户端凭据流、授权代码流和设置刷新令牌为例进行实现。我们还将演示如何利用OpenIDConnect来检索用户信息。

OAuth2 和OpenID Connect

OAuth2和OpenIDConnect有时会令人困惑,至少对我来说是这样。
它帮助我将授权服务器视为另一个web应用程序。这是一个应用程序,您可以使用用户名密码组合或其他外部提供商登录。到目前为止,没有什么不同于我们构建的任何其他web应用程序。

在设置身份验证之后,我们可以实现OAuth2和OpenIDConnect流(这就是OpenIddict发挥作用的地方)。这些流被其他应用程序(客户端)利用,基本上是在问“我能代表这个用户做一些事情吗?”。

为了回答这个问题,客户端首先将用户重定向到授权服务器。如果尚未进行身份验证(SSO),则用户将对自己进行身份验证。之后,询问用户是否允许客户端代表用户进行请求。如果是,外部应用程序将接收一个访问令牌,以代表用户进行请求。

除了访问令牌(OAuth2)之外,还可以颁发单独的身份令牌(OpenID Connect)。客户端可以使用身份令牌来提取用户信息。

在下一篇文章中,我们将从创建一个新的ASP.NET Core项目开始,并将身份验证作为迈向全面授权服务器的第一步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/624886.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试|Python如何处理配置文件

配置文件在软件开发中起到了非常重要的作用,它允许开发者将应用程序的设置和参数存储在一个易于管理和修改的地方,而不是硬编码在代码中。Python有多种处理配置文件的方式,本文将介绍其中两种最常用的方法:使用configparser库和使…

Python: ** 的用处

在 Python 中,** 主要用于两个相关但不同的概念:解包(unpacking)和关键字参数(keyword arguments)的传递。让我们分别解释这两个方面。 1. 解包(Unpacking): a. 解包字…

HTML--CSS--超链接样式以及鼠标样式自定义

超链接伪类 再复习一下,超链接的定义方式如下&#xff1a; <!DOCTYPE html> <html> <head> <title>这是一个标题</title><meta charset"utf-8"/><style></style> </head> <body><a href"http…

【go语言】结构体数据填充生成md错误码文件

这里使用pongo2这个模版引擎库进行md文件渲染GitHub - flosch/pongo2: Django-syntax like template-engine for Go package mainimport ("fmt""github.com/flosch/pongo2/v6""os" )func main() {// 假设有一个名为 data 的 map 数组data : []m…

Axure RP软件揭秘:设计师的秘密武器

Axure rp是一种快速原型设计工具&#xff0c;可以制作高度互动的HTML原型。设计师不仅可以使用Axure绘制线框图和原型&#xff0c;还可以在Axure rp中完成一系列用户体验设计。在本文中&#xff0c;我们将根据用户体验设计师的真实经验&#xff0c;触发用户体验设计师的实际工作…

如何实现本地USB设备共享服务映射到外网实现跨网USB共享通信访问

文章目录 前言1. 安装下载软件1.1 内网安装使用USB Redirector1.2 下载安装cpolar内网穿透 2. 完成USB Redirector服务端和客户端映射连接3. 设置固定的公网地址 前言 USB Redirector是一款方便易用的USB设备共享服务应用程序&#xff0c;它提供了共享和访问本地或互联网上的U…

vue的element ui使用el-table组件实现懒加载树、默认自动展开层级(一层,二层)、并且解决新增、删除、修改之后树节点不刷新问题

1.整体思路 问题&#xff1a;数据量太大了&#xff0c;导致接口返回数据时间较长。解决: 将ElementUi中Table组件加载改为懒加载&#xff08;查看文档&#xff09;。思路&#xff1a;初始化打开页面时只显示第一级菜单,用户点击展开菜单之后往后端发送请求,然后加载出一级子菜…

RT-Thread源码阅读(一)

前言 本文基于RT-Thread V4.1.1和STM32F103(Cortex-M3) 本文旨在理解RT-Thread设计的基本逻辑&#xff0c;为了让文章简短易懂&#xff0c;所以展出的源码都是精简过的&#xff0c;不会把开关中断&#xff0c;宏选择等放在讲解代码中。 可以看懂基本逻辑后查看源码领悟具体细…

编写递归算法,计算二叉树T中叶子结点的数目。

【题目】编写递归算法&#xff0c;计算二叉树T中叶子结点的数目。 二叉链表类型定义∶ typedef struct BiTNode { TElemType data; struct BiTNode *lchild,*rchild; } BiTNode,*BiTree; 要求实现下列函数∶ int Leaves(BiTree T); /* 计算二叉树T中叶子结点的数目*/ #include …

适当催一下没确认订单的国外客户

在一片美丽的森林里&#xff0c;住着两只小鸟。其中一只非常勤奋&#xff0c;每天都早早起床&#xff0c;练习飞翔和觅食。而另外一个小鸟却非常懒惰&#xff0c;每天总是赖在窝里&#xff0c;不愿意努力&#xff0c;懒惰的小鸟总是想&#xff1a;反正有那只勤奋的鸟儿在&#…

【Linux】初识Linux及几个基本指令

Hello everybody!算算时间我已经有一个多月没有更新啦&#xff01;因为本专业是纺织工程&#xff0c;所以一直在复习应付期末考试\(0^◇^0)/。那好&#xff0c;废话不多说。让我们进入今天的主题&#xff01; 关于Linux系统可能很多同学不是很熟悉&#xff0c;有的人可能听过&…

如何在网络爬虫中解决CAPTCHA?使用Python进行网络爬虫

网络爬虫是从网站提取数据的重要方法。然而&#xff0c;在进行网络爬虫时&#xff0c;常常会遇到一个障碍&#xff0c;那就是CAPTCHA&#xff08;全自动公共图灵测试以区分计算机和人类&#xff09;。本文将介绍在网络爬虫中解决CAPTCHA的最佳方法&#xff0c;并重点介绍CapSol…

华为OD机试真题-分配土地-Python-OD统一考试(C卷)

题目描述&#xff1a; 从前有个村庄&#xff0c;村民们喜欢在各种田地上插上小旗子&#xff0c;旗子上标识了各种不同的数字。某天集体村民决定将覆盖相同数字的最小矩阵形的土地的分配给为村里做出巨大贡献的村民&#xff0c;请问&#xff0c;此次分配土地&#xff0c;做出贡献…

软件测试|使用matplotlib绘制多种饼图

简介 Matplotlib是一个强大的数据可视化库&#xff0c;它允许我们创建各种类型的图表&#xff0c;包括饼图。饼图是一种用于显示数据分布的常见图表类型。在本文中&#xff0c;我们将介绍如何使用Matplotlib创建不同类型的饼图&#xff0c;并提供示例代码。 创建标准饼图 首…

maven配置阿里云镜像源

要配置阿里云镜像源&#xff0c;需要在Maven的配置文件中添加以下内容&#xff1a; 打开Maven安装目录下的conf文件夹&#xff0c;找到settings.xml文件。 在settings.xml文件中&#xff0c;找到标签&#xff0c;如果没有则需要手动添加。 在标签中添加以下内容&#xff1a; …

【python】打包exe文件

使用PyInstaller可以将Python脚本打包成可执行的.exe文件。pyinstaller就是一种常用的打包方式&#xff0c;其中参数&#xff1a; --onefile参数表示将所有依赖项和脚本打包成一个单独的可执行文件&#xff0c;方便分发和执行。--noconsole参数表示在运行程序时不显示控制台窗…

Linux进程【2】进程地址空间(+页表详解哦)

fork 引言&#xff08;程序地址空间&#xff09;进程地址空间进程地址空间mm_struct 虚拟地址到物理地址的转化总结 引言&#xff08;程序地址空间&#xff09; 在之前的学习过程中&#xff0c;我们认识了内存与地址&#xff0c;并且了解了在程序地址空间中的基本分区&#xf…

2000年第五次人口普查数据,shp/excel格式均有,划分年龄段、性别占比等字段

基本信息. 数据名称: 第五次人口普查数据 数据格式: Shp、excel 数据时间: 2000年 数据几何类型: 面 数据坐标系: WGS84坐标系 数据来源&#xff1a;第五次人口普查数据 数据字段&#xff1a; 序号字段名称字段说明1a2000_zrks2000年_常住人口&#xff08;人&…

web块级如何居中,关于css/html居中问题

1. text-align&#xff1a;center&#xff1b; 可以实现其内部元素水平居中&#xff0c;通常用于字体水平居中&#xff0c;初学者也可以用于简单块级居中。这种方法对行内元素 (inline)&#xff0c;行内块 (inline-block)&#xff0c;行内表 (inline-table)&#xff0c;inline…

实现一个MYSQL工具类,包含判断创建数据表是否存在,创建数据表

可以使用Python的MySQLdb模块来实现一个MYSQL工具类。下面是一个简单的实现示例&#xff1a; import MySQLdbclass MySQLTool:def __init__(self, host, user, password, database):self.host hostself.user userself.password passwordself.database databasedef connect…