Blazor入门100天 : 身份验证和授权之 OpenID 与 OAuth2
目录:
- OpenID 与 OAuth2 基础知识
- Blazor wasm Gitee 码云登录
- Blazor wasm GitHub 登录
- Blazor wasm Google 登录
- Blazor wasm Facebook 登录
- Blazor IdentityServer 部署到服务器
- Blazor wasm IdentityServer 单点登录
相关基础知识
OpenID 与 OAuth2
参考阅读 https://auth0.com/docs/authenticate/protocols/openid-connect-protocol#what-is-openid-connect-oidc-
OpenID 连接协议
什么是 OpenID Connect (OIDC)?
OpenID Connect (OIDC) 是构建在OAuth 2.0框架之上的身份层。它允许第三方应用程序验证最终用户的身份并获取基本的用户配置文件信息。OIDC 使用JSON Web 令牌(JWT),您可以使用符合 OAuth 2.0 规范的流获取该令牌。看看我们的
OIDC 手册
更多细节。
OpenID 与 OAuth2
OAuth 2.0 涉及资源访问和共享,而 OIDC 涉及用户身份验证。其目的是让您一次登录多个站点。每次您需要使用 OIDC 登录网站时,您都会被重定向到您登录的 OpenID 站点,然后返回到该网站。例如,如果您选择使用 Google 帐户登录 Auth0,则您使用的是 OIDC。一旦您成功通过 Google 进行身份验证并授权 Auth0 访问您的信息,Google 就会将有关用户和所执行的身份验证的信息发送回 Auth0。此信息以 JWT 返回。您将收到一个访问令牌,如果需要,还会收到一个ID 令牌。
OpenID 和 JWT
JWT 包含索赔,它们是有关实体(通常是用户)和其他元数据的语句(例如姓名或电子邮件地址)。这
OpenID 连接规范定义了一组标准声明。该组标准声明包括姓名、电子邮件、性别、出生日期等。但是,如果您想要捕获有关用户的信息,并且当前没有最能反映此信息的标准声明,您可以创建自定义声明并将其添加到您的令牌中。
使用 OIDC 和 OAuth2 配置应用程序
您可以自动使用 OIDC 发现配置您的应用程序。
Auth0 中的应用程序
Auth0 中的术语“应用程序”或“app”并不暗示任何特定的实现特征。例如,它可以是在移动设备上执行的本机应用程序、在浏览器上执行的单页应用程序或在服务器上执行的常规 Web 应用程序。
Auth0 根据以下特征对应用程序进行分类:
应用程序类型:要向您的应用程序添加身份验证,您必须在Auth0 仪表板中注册它并从以下应用程序类型之一中进行选择:
常规 Web 应用程序:在服务器上执行大部分应用程序逻辑的传统 Web 应用程序(例如 Express.js 或 ASP.NET)。
单页 Web 应用程序 (SPA):在 Web 浏览器中执行大部分用户界面逻辑的 JavaScript 应用程序,主要使用 API(例如 AngularJS + Node.js 或 React)与 Web 服务器通信。
本机应用程序:在设备(例如 iOS 或 Android)上本机运行的移动或桌面应用程序。
机器对机器 (M2M) 应用程序:非交互式应用程序,例如命令行工具、守护程序、物联网设备或在后端运行的服务。通常,如果您有需要访问 API 的服务,则可以使用此选项。
凭证安全:根据OAuth 2.0 规范,应用程序可以分为公共或机密;机密应用程序可以安全地保存凭据,而公共应用程序则不能。
所有权:应用程序是否被归类为第一方或第三方取决于应用程序的所有权和控制权。第一方应用程序由拥有 Auth0 域的同一组织或个人控制。第三方应用程序使外部各方或合作伙伴能够安全地访问 API 背后的受保护资源。
单点登录
当用户登录到一个应用程序,然后自动登录到其他应用程序时,就会发生单点登录(SSO),无论用户使用的平台、技术或域如何。用户仅登录一次,因此该功能被称为“单点登录”。
例如,如果您登录 Gmail 等 Google 服务,您将自动通过 YouTube、AdSense、Google Analytics 和其他 Google 应用程序的身份验证。同样,如果您退出 Gmail 或其他 Google 应用程序,您也会自动退出所有应用程序;这称为单点注销。
SSO 在使用您的应用程序和服务时为用户提供无缝体验。用户无需记住每个应用程序或服务的单独凭据集,只需登录一次即可访问全套应用程序。
每当用户访问需要身份验证的域时,他们都会被重定向到可能要求登录的身份验证域。如果用户已经在该身份验证域登录,则可以立即重定向到原始域,而无需登录再次。
首次登录时 SSO
对于使用 Auth0 的 SSO,中央服务是 Auth0授权服务器。
让我们看一下用户首次登录时的 SSO 流程示例:
您的应用程序将用户重定向到登录页面。
Auth0 检查是否存在现有的 SSO cookie。
由于这是用户第一次访问登录页面并且不存在 SSO cookie,因此系统将要求用户使用您已配置的连接之一进行登录。
用户登录后,Auth0 将设置一个 SSO cookie 并将用户重定向到您的应用程序,返回一个包含用户身份信息的 ID 令牌。
后续登录时进行 SSO
让我们看一下用户再次访问您的网站时的 SSO 流程示例:
您的应用程序将用户重定向到登录页面。
Auth0 检查是否存在现有的 SSO cookie。
Auth0 找到 SSO cookie,并在必要时更新它。不显示登录屏幕。
Auth0 将用户重定向到您的应用程序,返回包含用户身份信息的 ID 令牌。
OpenID 连接
OpenID Connect (OIDC) 是一种常用于面向消费者的 SSO 实现的身份验证协议。OIDC 协议通过JSON Web 令牌和中央身份提供商处理身份验证。
与 OIDC 合作:
用户请求访问应用程序。
应用程序将用户重定向到身份提供商以进行身份验证。
身份提供者验证用户,如果成功,则提示用户授予对应用程序的数据访问权限。
如果授予访问权限,身份提供者将生成一个 ID 令牌,其中包含应用程序可以使用的用户身份信息。
身份提供者将用户返回到应用程序。
下一篇直接开始快速通关CV大法
Blazor入门100天 : 身份验证和授权之 OpenID 与 OAuth2的更多相关文章
- Blazor入门100天 : 身份验证和授权 (2) - 角色/组件/特性/过程逻辑
目录 建立默认带身份验证 Blazor 程序 `角色/组件/特性/过程逻辑 DB 改 Sqlite 将自定义字段添加到用户表 脚手架拉取IDS文件,本地化资源 freesql 生成实体类,freesq ...
- Blazor入门100天 : 身份验证和授权 (6) - 使用 FreeSql orm 管理ids数据
目录 建立默认带身份验证 Blazor 程序 角色/组件/特性/过程逻辑 DB 改 Sqlite 将自定义字段添加到用户表 脚手架拉取IDS文件,本地化资源 freesql 生成实体类,freesql ...
- RabbitMQ身份验证、授权、访问控制
原文:https://www.rabbitmq.com/access-control.html 概述 不同的用户只能访问特定的虚拟主机.他们在每个虚拟主机中的权限也可以被限制. RabbitMQ支持两 ...
- ASP.NET Web API身份验证和授权
英语原文地址:http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-a ...
- ASP.NET MVC5学习系列——身份验证、授权
一.什么是身份验证和授权 人们有时对用户身份验证和用户授权之间的区别感到疑惑.用户身份验证是指通过某种形式的登录机制(包括用户名/密码.OpenID.OAuth等说明身份的项)来核实用户的身份.授权验 ...
- 使用JWT的ASP.NET CORE令牌身份验证和授权(无Cookie)——第1部分
原文:使用JWT的ASP.NET CORE令牌身份验证和授权(无Cookie)--第1部分 原文链接:https://www.codeproject.com/Articles/5160941/ASP- ...
- 从零搭建一个IdentityServer——聊聊Asp.net core中的身份验证与授权
OpenIDConnect是一个身份验证服务,而Oauth2.0是一个授权框架,在前面几篇文章里通过IdentityServer4实现了基于Oauth2.0的客户端证书(Client_Credenti ...
- 使用 cookie 的身份验证和授权
前言 在上一章 学学 dotnet core 中的身份验证和授权-1-概念 中,我们大致明白了身份验证和授权两者的关系.那么在本文中,我们将使用 cookie 来做一个简单的身份验证和授权. 本文中我 ...
- 学学dotnet core中的身份验证和授权-1-概念
前言 身份验证: Authentication 授权: Authorization net core 中的身份验证和授权这两个部分,是相辅相成的.当初我在学在部分的时候,是看的 net core 官网 ...
- ASP.NET WEBAPI 的身份验证和授权
定义 身份验证(Authentication):确定用户是谁. 授权(Authorization):确定用户能做什么,不能做什么. 身份验证 WebApi 假定身份验证发生在宿主程序称中.对于 web ...
随机推荐
- ModelScope
欢迎来到ModelScope平台!本篇文章介绍如何快速开始使用ModelScope平台上的模型,包括所需的基础概念,环境安装,模型推理和训练的快速实践示例. 如何开始# 如果你是新手,想快速体验产品, ...
- salesforce零基础学习(一百三十三)ListView的button思考
本篇参考: salesforce零基础学习(九十五)lightning out salesforce零基础学习(一百一十)list button实现的一些有趣事情 https://help.sales ...
- 安信可开发环境构建-基于Ai-WB2系列 和 Ai-M61 或 Ai-M62 (环境上下文切换)
首先,对于Ai-WB2系列环境的构建官方文档已经讲的非常明白了,这里不做阐述如下链接所示https://blog.csdn.net/Boantong_/article/details/12848091 ...
- 20. 从零用Rust编写正反向代理,四层反向代理stream(tcp与udp)实现
wmproxy wmproxy是由Rust编写,已实现http/https代理,socks5代理, 反向代理,静态文件服务器,内网穿透,配置热更新等, 后续将实现websocket代理等,同时会将实现 ...
- 「Eolink Apikit 教程」API 异常监控-创建 API 监控
API 监控能够确保 API 的稳定性.如果一个 API 出现故障或崩溃,它可能会导致整个应用程序无法正常工作.这对用户和业务来说可能是灾难性的.通过监控 API,开发团队可以及时发现问题并采取措施来 ...
- 线程的查看方式&运行原理
观察多个线程同时运行 主要是理解 交替执行 谁先谁后,不由我们控制 查看进程线程的方法 windows 任务管理器可以查看进程和线程数,也可以用来杀死进程 tasklist 查看进程 taskkill ...
- golang在win10安装、环境配置 和 goland开发工具golang配置 及Terminal的git配置
前言 本人在使用goland软件开发go时,对于goland软件配置网上资料少,为了方便自己遗忘.也为了希望和我一样的小白能够更好的使用,所以就写下这篇博客,废话不多说开搞. 一.查看自己电脑系统版本 ...
- webview是什么?作用是什么?和浏览器有什么关系?
Webview 是一个基于webkit的引擎,可以解析DOM 元素,展示html页面的控件,它和浏览器展示页面的原理是相同的,所以可以把它当做浏览器看待.(chrome浏览器也是基于webkit引擎开 ...
- 高精度加法(C语言实现)
高精度加法(C语言实现) 介绍 众所周知,整数在C和C++中以int ,long,long long三种不同大小的数据存储,数据大小最大可达2^64,但是在实际使用中,我们仍不可避免的会遇到爆long ...
- 高精度减法(C语言实现)
高精度减法(C语言实现) 介绍 众所周知,整数在C和C++中以int ,long,long long三种不同大小的数据存储,数据大小最大可达2^64,但是在实际使用中,我们仍不可避免的会遇到爆long ...