目录:

  1. OpenID 与 OAuth2 基础知识
  2. Blazor wasm Gitee 码云登录
  3. Blazor wasm GitHub 登录
  4. Blazor wasm Google 登录
  5. Blazor wasm Facebook 登录
  6. Blazor IdentityServer 部署到服务器
  7. 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 流程示例:

  1. 您的应用程序将用户重定向到登录页面。

  2. Auth0 检查是否存在现有的 SSO cookie。

  3. 由于这是用户第一次访问登录页面并且不存在 SSO cookie,因此系统将要求用户使用您已配置的连接之一进行登录。

  4. 用户登录后,Auth0 将设置一个 SSO cookie 并将用户重定向到您的应用程序,返回一个包含用户身份信息的 ID 令牌。

后续登录时进行 SSO

让我们看一下用户再次访问您的网站时的 SSO 流程示例:

  1. 您的应用程序将用户重定向到登录页面。

  2. Auth0 检查是否存在现有的 SSO cookie。

  3. Auth0 找到 SSO cookie,并在必要时更新它。不显示登录屏幕。

  4. Auth0 将用户重定向到您的应用程序,返回包含用户身份信息的 ID 令牌。

OpenID 连接

OpenID Connect (OIDC) 是一种常用于面向消费者的 SSO 实现的身份验证协议。OIDC 协议通过JSON Web 令牌和中央身份提供商处理身份验证。

与 OIDC 合作:

  1. 用户请求访问应用程序。

  2. 应用程序将用户重定向到身份提供商以进行身份​​验证。

  3. 身份提供者验证用户,如果成功,则提示用户授予对应用程序的数据访问权限。

  4. 如果授予访问权限,身份提供者将生成一个 ID 令牌,其中包含应用程序可以使用的用户身份信息。

  5. 身份提供者将用户返回到应用程序。

下一篇直接开始快速通关CV大法

Blazor入门100天 : 身份验证和授权之 OpenID 与 OAuth2的更多相关文章

  1. Blazor入门100天 : 身份验证和授权 (2) - 角色/组件/特性/过程逻辑

    目录 建立默认带身份验证 Blazor 程序 `角色/组件/特性/过程逻辑 DB 改 Sqlite 将自定义字段添加到用户表 脚手架拉取IDS文件,本地化资源 freesql 生成实体类,freesq ...

  2. Blazor入门100天 : 身份验证和授权 (6) - 使用 FreeSql orm 管理ids数据

    目录 建立默认带身份验证 Blazor 程序 角色/组件/特性/过程逻辑 DB 改 Sqlite 将自定义字段添加到用户表 脚手架拉取IDS文件,本地化资源 freesql 生成实体类,freesql ...

  3. RabbitMQ身份验证、授权、访问控制

    原文:https://www.rabbitmq.com/access-control.html 概述 不同的用户只能访问特定的虚拟主机.他们在每个虚拟主机中的权限也可以被限制. RabbitMQ支持两 ...

  4. ASP.NET Web API身份验证和授权

    英语原文地址:http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-a ...

  5. ASP.NET MVC5学习系列——身份验证、授权

    一.什么是身份验证和授权 人们有时对用户身份验证和用户授权之间的区别感到疑惑.用户身份验证是指通过某种形式的登录机制(包括用户名/密码.OpenID.OAuth等说明身份的项)来核实用户的身份.授权验 ...

  6. 使用JWT的ASP.NET CORE令牌身份验证和授权(无Cookie)——第1部分

    原文:使用JWT的ASP.NET CORE令牌身份验证和授权(无Cookie)--第1部分 原文链接:https://www.codeproject.com/Articles/5160941/ASP- ...

  7. 从零搭建一个IdentityServer——聊聊Asp.net core中的身份验证与授权

    OpenIDConnect是一个身份验证服务,而Oauth2.0是一个授权框架,在前面几篇文章里通过IdentityServer4实现了基于Oauth2.0的客户端证书(Client_Credenti ...

  8. 使用 cookie 的身份验证和授权

    前言 在上一章 学学 dotnet core 中的身份验证和授权-1-概念 中,我们大致明白了身份验证和授权两者的关系.那么在本文中,我们将使用 cookie 来做一个简单的身份验证和授权. 本文中我 ...

  9. 学学dotnet core中的身份验证和授权-1-概念

    前言 身份验证: Authentication 授权: Authorization net core 中的身份验证和授权这两个部分,是相辅相成的.当初我在学在部分的时候,是看的 net core 官网 ...

  10. ASP.NET WEBAPI 的身份验证和授权

    定义 身份验证(Authentication):确定用户是谁. 授权(Authorization):确定用户能做什么,不能做什么. 身份验证 WebApi 假定身份验证发生在宿主程序称中.对于 web ...

随机推荐

  1. C++ STL标准容器的特点和典型的使用场景

    概念和作用 C++标准模板库(Standard Template Library,STL)提供了一组通用的模板类和函数,用于处理常见的数据结构和算法.STL中的标准容器是其中的重要组成部分,它们提供了 ...

  2. Unity禁止C#自动编译

    基于unity2017\2020版本 using System; using System.Linq; using System.Reflection; using UnityEditor; usin ...

  3. 未能添加SSL证书,错误1312

    1.win+r打开运行,输入mmc 2.在控制台1[控制台根节点]->文件->添加/删除....->选择证书->添加-选择计算机账户->完成->确认 3.找到证书文 ...

  4. meet

    以后就放弃csdn了,就来这里记录自己的成长,就当成一个树洞吧,开心与难过,学习与生活,进步与成长,留下时间的痕迹!冲!冲!冲!

  5. JUC并发编程学习笔记(十六)Volatile

    Volatile 保证可见性 private volatile static Integer num = 0; 使用了volatile关键字,即可保证它本身可被其他线程的工作内存感知,即变化时也会被同 ...

  6. SNN_TIPS

    脉冲神经网络的研究思路: ANN2SNN 代表: 梯度下降法 代表: STDP 代表: 神经网络代差划分 以神经元实现功能为准: 优势 SNN是一个动态系统,在动态识别中发挥出色,比如语音识别和动态图 ...

  7. 题解 CF1401C

    题目大意: 给定一序列 \(A\),定义当且仅当 \(\gcd(a_i,a_j)=a_{min}\) 时,元素 \(a_i\) 和 \(a_j\) 可以交换. 问当前给定的序列 \(A\) 能否转化为 ...

  8. (Good topic)圆圈中最后剩下的数字(leetcode 3.30每日打卡)

    著名的约瑟夫问题: 0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的最后一个数字. 例如,0.1.2.3.4这5个数字组成一个圆圈,从数字0开 ...

  9. 一套开源、强大且美观的WPF UI控件库 - HandyControl

    前言 今天给大家推荐一套开源.强大且美观的WPF UI控件库:HandyControl. WPF介绍 WPF 是一个强大的桌面应用程序框架,用于构建具有丰富用户界面的 Windows 应用.它提供了灵 ...

  10. 马云说的AI电商时代是什么

    这两天非常火的就是马老师说的,我们已经进入了AI的电商时代.相信电商时代大家很容易理解,换一个简单的方式来说就是网上购物. AI相信大家已经很熟悉了,就是人工智能.早在十年前其实已经有AI人工智能的概 ...