如何熟悉微软的OAuth 2.0和OpenID Connect?

Windows

1 OAuth的基础知识

1.1 OAuth的简介

– OAuth即Open Authorization的缩写
– OAuth为用户资源的授权提供一个安全的、开放且简易的标准
– OAuth的授权不会使第三方触及到用户的账号信息(例如用户名和密码),无需账号密码即可取得资源授权

1.2 OAuth的架构

1.2.1 授权服务器

– 授权服务器即英文Authorization server翻译,即身份提供者IdP,
– 通过安全令牌授予、拒绝或撤销应用程序或API对资源的访问权限

1.2.2 客户端

– 客户端即英文Client的翻译
– 客户端是请求访问受保护资源的应用程序
– 客户端可以是服务器上运行的应用程序、或浏览器中的单页Web应用
– 客户端也可以是是调用另一个Web API的Web API

1.2.3 资源所有者

– 资源所有者即Resource owner的翻译
– 即需要访问资源服务器的用户,通常是应用程序所有者

1.2.4 资源服务器

– 资源服务器即Resource server的翻译
– 想资源所有者提供资源的服务器

1.3 令牌

1.3.1 令牌的简介

– 身份验证流程中各角色使用次有者令牌来确保、确认和验证狗哥主体(用户、主机或服务)
– 持有者令牌授予或拒绝受保护资源的访问权限
– 标识平台中的持有者令牌格式化为JSON Web Token

1.3.2 令牌的分类

– Access tokens(访问令牌),由授权服务器颁发给客户端用于取得资源服务器访问权限
– ID tokens(ID令牌),由授权服务器颁发给客户端用于取得用户基本信息
– Refresh tokens(刷新令牌),客户端向授权服务器发送刷新令牌用于取得新的访问令牌或ID令牌

1.4 认证流程

1.4.1 应用的分类

– 网络应用
– 移动应用
– 桌面应用程序
– 网络API

2 OIDC的基础知识

2.1 OIDC的简介

– OIDC英文全称为OpenID Connect
– OIDC是一套基于OAuth 2.0的开放式身份验证协议
– OIDC针允许个人消费者使用单点登录(SSO)访问并使用OpenID提供商(OP)进行身份验证
– OIDC为应用程序或服务提供用户信息、身份验证及配置文件信息提供访问权限服务
– OIDC的目的是允许用户通过一组身份验证凭据即可访问多个站点

2.2 OIDC用户登录流程


– Step1,用户通过浏览器访问启用OIDC验证的站点或应用程序(RP)
– Step2,RP发送验证请求请求,将用户重定向到SSO系统(OP)
– Step3,OP提示用户通过提供凭据进行身份验证
– Step4,OP校验用户身份凭据(身份令牌,即JWT,包含用户信息、登录时间、过期时间)
– Step5,OP向RP发送断言以确认身份验证
– Step6,用户被RP授予访问所需应用程序的权限

2.3 OIDC与OAuth、SAML的差异

– OAuth用于保护特定资源(例如应用程序或文件集)的授权框架
– SAML和OIDC用于创建安全登录体验的身份验证标准
– SAML以其灵活性著称,但开发人员发现OIDC更易用
– SAML支持浏览器应用程序,不支持移动设备的SSO或API访问
– OAuth支持API访问,OIDC支持对API、移动原生应用程序和浏览器应用程序
– OIDC是关于某人是谁,OAuth 2.0是关于他们做是什么
– SAML使用XML编写令牌,而OIDC使用JWT(可移植并支持签名和加密算法)

参阅文档
=================

Open Authorization的概念
———————–
https://baike.baidu.com/item/oAuth/7153134?fr=aladdin

Microsoft
———————–
https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-protocols
https://learn.microsoft.com/zh-cn/azure/active-directory/develop/active-directory-v2-protocols

JWT的概念
———————
https://datatracker.ietf.org/doc/html/rfc7519

OIDC的资料
—————–
https://www.pingidentity.com/en/resources/identity-fundamentals/authentication-authorization-standards/openid-connect.html

没有评论

发表回复

Windows
如何修改Windows的时区?

1 前言 一个问题,一篇文章,一出故事。 笔者由于需要使用命令设置Windows系统的时区,于是整理 …

cmd shell
如何bat免密码登录Windows?

1 前言 一个问题,一篇文章,一出故事。 笔者最近想通过bat自动登录Windows服务器,于是整理 …

cmd shell
如何解决PowerShell的ps1脚本执行异常提示?

1 前言 一个问题,一篇文章,一出故事。 笔者最近需创建一个测试的PowerShell脚本,后缀名称 …