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 ...
随机推荐
- 【PHP正则表达式】
[PHP正则表达式] 最近写题总是遇到php正则表达式的匹配函数,于是进行一个总结. 1.什么是正则表达式 是php在进行搜索时用于匹配的模式字符串.一般用于php对特定字符序列的替换和搜索. 2.正 ...
- 【XXE实战】——浅看两道CTF题
[XXE实战]--浅看两道CTF题 上一条帖子[XXE漏洞]原理及实践演示对XXE的一些原理进行了浅析,于是写了两道CTF题巩固一下,顺便也记录一下第一次写出来CTF.两道题都是在BUU上找的:[NC ...
- 关于 React 性能优化和数栈产品中的实践
我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:的卢 引入 在日常开发过程中,我们会使用很多性能优化的 A ...
- 最新 2023.2 版本 WebStorm 永久破解教程,WebStorm 破解补丁永久激活(亲测有效)
最近 jetbrains 官方发布了 2023.2 版本的 IDEA,之前的激活方法并不支持这个新的版本. 下面是最新的激活教程,激活步骤和之前是类似的,只是换用了不同的补丁文件. 本教程支持 Jet ...
- Redis7
Redis是基于内存的K-V键值对内存数据库 浅谈Redis7新特性 主要是自身底层性能和资源利用率上的提高和优化. 多AOF文件支持 config命令增强 限制客户端内存使用 listpack紧凑列 ...
- 测试技术:开源测试工具 jenkins、Sonar
http://www.cnblogs.com/itech/archive/2011/11/23/2260009.html Jenkins入门总结 基于 Jenkins 快速搭建持续集成环境 https ...
- JAVA专题1-序列化与反序列化
http://www.cnblogs.com/xdp-gacl/p/3777987.html
- atest
#include<iostream> using namespace std; int main() { reutrn 0; }
- pbootcms 后台内容列表搜索功能扩展及增加显示字段功能
应项目要求,一个内容模型下栏目不宜分的层级过多,如新闻模块,分2022.2023.2024年度,每年度下分12个月,这样就是2层栏目,再依类别(科技.动漫.电影...)划分层级,栏目数量较多,而且不易 ...
- 提升运维效率:轻松掌握JumpServer安装和使用技巧
前言 JumpServer 是一个开源的跳板机的解决方案,提供了对远程服务器的安全访问.会话录制和审计.用户身份管理等功能,适用于需要管理机器资源&大量服务器资源的情况. 本文将在分享 doc ...