1.基于概念

OpenId是一个以用户为中心的数字身份识别框架,它具有开放、分散、自由等特性。OpenId的创建是基于这样一个概念:我们可以通过URI(或者URL网址)来识别一个网站。同样,我们也可以通过这样的方式来识别一个用户的身份。OpenId系统的身份认证就是通过URI来认证用户身份。目前绝大部分网站都是通过用户名与密码来登录认证用户身份,这就要求大家在每个你要使用的网站上注册一个帐号。如果使用OpenId,你可以在一个提供OpenId的网站上注册一个OpenId,以后你可以使用这个OpenId去登录支持OpenId的网站。这正是一处注册,到处使用的体现。

登录一个支持 OpenID 的网站非常简单(即便你是第一次访问这个网站也是一样)。只需要输入你注册好的 OpenID 用户名,然后你登录的网站会跳转到你的 OpenID 服务网站,在你的 OpenID 服务网站输入密码(或者其它需要填写的信息)验证通过后,你会回到登录的网站并且已经成功登录。 OpenID 系统可以应用于所有需要身份验证的地方,既可以应用于单点登录系统,也可以用于共享敏感数据时的身份认证。

除了一处注册到处通行以外,OpenID 给所有支持 OpenID 的网站带来了价值--共享用户资源。用户可以清楚的控制哪些信息可以被共享,例如姓名、地址、电话号码等。今天,OpenID 作为以用户为中心的身份验证系统已经为数百万的用户提供了服务。

2.OpenID相关术语

End User:终端用户,使用OP与RP的服务

Relying Party依赖方:简称RP,服务提供者,需要OP鉴权终端用户的身份

OpenID Provider:OpenID提供者,简称OP,对用户身份鉴权

Identifier标识符:标识符可以是一个HTTP、HTTPS或者XRI(可扩展的资源标识)

User-Agent:实现了HTTP1.1协议的用户浏览器

OP Endpoint URL:OP鉴权的URL,提供给RP使用

OP Identifier:OP提供给终端用户的一个URI或者XRI,RP根据OP Identifier来解析出OP Endpoint URL与OP Version

User-Supplied Identifier:终端用户使用的ID,可能是OP提供的OpenID,也可以是在RP注册的ID。RP可以根据User-Supplied Identifier来解析出OP Endpoint URL、OP Version与OP_Local Identifer

Claimed Identifier:终端用户声明自己身份的一个标志,可以是一个URI或者XRI

OP-Local Identifier:OP提供的局部ID

三、OpenID验证流程

终端用户请求登录RP网站,用户选择了以OpenID方式来登录

RP将OpenId的登录界面返回给终端用户

终端用户以OpenID登陆RP网站

RP网站对用户的OpenID进行标准化,此过程非常负责。由于OpenID可能是URI,也可能是XRI,所以标准化方式各不相同。具体标准化过程是:如果OpenID以xri://、xri://$ip或者xri://$dns开头,先去掉这些符号;然后对如下的字符串进行判断,如果第一个字符是=、@、+、$、!,则视为标准的XRI,否则视为HTTP URL(若没有http,为其增加http://)。

RP发现OP,如果OpenId是XRI,就采用XRI解析,如果是URL,则用Yadis协议解析,若Yadis解析失败,则用Http发现。

RP跟OP建立一个关联。两者之间可以建立一个安全通道,用于传输信息并降低交互次数。

OP处理RP的关联请求

RP请求OP对用户身份进行鉴权

OP对用户鉴权,请求用户进行登录认证

用户登录OP

OP将鉴权结果返回给RP

RP对OP的结果进行分析

转载于:https://www.cnblogs.com/Sweepingmonk/p/10868677.html

IdentityServer4专题之二:OpenID介绍相关推荐

  1. [C# 网络编程系列]专题十二:实现一个简单的FTP服务器

    引言: 休息一个国庆节后好久没有更新文章了,主要是刚开始休息完心态还没有调整过来的, 现在差不多进入状态了, 所以继续和大家分享下网络编程的知识,在本专题中将和大家分享如何自己实现一个简单的FTP服务 ...

  2. NVMe系列专题之二:队列(Queue)管理

    转载链接:https://mp.weixin.qq.com/s?__biz=MzIwNTUxNDgwNg==&mid=2247484355&idx=1&sn=04f0617bf ...

  3. 专题十二:实现一个简单的FTP服务器

    引言: 在本专题中将和大家分享如何自己实现一个简单的FTP服务器.在我们平时的上网过程中,一般都是使用FTP的客户端来对商家提供的服务器进行访问(上传.下载文件),例如我们经常用到微软的SkyDriv ...

  4. Microsoft .Net Remoting系列专题之二:Marshal、Disconnect与生命周期以及跟踪服务

    Microsoft .Net Remoting系列专题之二 一.远程对象的激活 在Remoting中有三种激活方式,一般的实现是通过RemotingServices类的静态方法来完成.工作过程事实上是 ...

  5. Microsoft .Net Remoting系列专题之二

    Microsoft .Net Remoting系列专题之二 一.远程对象的激活 在Remoting中有三种激活方式,一般的实现是通过RemotingServices类的静态方法来完成.工作过程事实上是 ...

  6. {Django基础九之中间件} 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证...

    Django基础九之中间件 本节目录 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证 六 xxx 七 xxx 八 xxx 一 前戏 我们在前面的课程中已经学会了 ...

  7. JavaScript专题(二):深入理解iframe

    原文地址为: JavaScript专题(二):深入理解iframe 一 目的 iframe是网页布局中重要的元素,是解决一些常见前端问题的必修课,而iframe总是让人捉摸不透,不好掌握.关于ifra ...

  8. kuangbin专题十二 基础DP

    kuangbin专题十二 基础DP A - HDU1024 Max Sum Plus Plus B - HDU1029 Ignatius and the Princess IV C - HDU1069 ...

  9. c# AE GIS二次开发学习专题(二) 基本地图控件使用

    GIS二次开发学习专题(二) 基本地图控件使用 学习资料来自<牟乃夏 AE开发教程-基于C#.NET> 发的代码是我整理+老师布置的作业 这一部分是地图基本控件的使用与编写,包括: 一.二 ...

最新文章

  1. 跟我学Springboot开发后端管理系统8:Matrxi-Web权限设计实现
  2. qwe qwe qw
  3. HTML制作搞笑照片,40张创意搞笑的照片PS效果
  4. webstorm主要快捷键
  5. 教你必备Excel表格技巧。
  6. 非线性回归 - 案例按步骤详解 -(SPSS建模)
  7. gblfy博客配色模板
  8. 初步学习pg_control文件之六
  9. 服务器上读取文件,服务器上读取文件
  10. python对八大常见排序算法的总结和实现以及时间消耗分析
  11. 由先序遍历序列和中序遍历序列恢复二叉树以及统计叶子节点个数和树的深度...
  12. 概念(理论)---积分方程1:赋范线性空间,线性算子,有界线性算子和连续线性算子
  13. 详解JavaScript的五种继承方式
  14. 科来数据包生成器使用,广播域内进行arp欺骗
  15. 固定翼位置控制_L1
  16. java爬虫爬豆瓣图书_网络爬虫——爬取豆瓣图书
  17. 【backtrader回测】隔夜持仓 VS 日内交易
  18. 法语学习笔记——语音
  19. 西门子PLC快速查找数据算法
  20. intel linux核显性能,Intel UHD Graphics 630 核显性能解析

热门文章

  1. mac开发配置手册(全)
  2. Mybatis入门(一)
  3. 【CCF】201703-1分蛋糕
  4. Ubuntu解除端口占用
  5. 史上最全的CSS hack方式一览(鉴)
  6. [机器学习]正则化项L1和L2的学习与理解
  7. Pseudo-document-based Topic Model(基于伪文档的主题模型)的理解以及源码解读
  8. aarch64(ARMv8)交叉编译环境下载
  9. make、make clean、make uninstall的使用
  10. 区块链教程(二):基础概念介绍