在Azure中,为什么AuthClientId也称为应用程序ID?

Kir*_*eed 13 azure oauth-2.0 azure-active-directory azure-keyvault

我发现Azure中的应用程序注册非常混乱.在我的问题中, AuthClientId和Application Id结果是一样的,为什么要使用两个名字呢?

这种命名选择背后的逻辑是什么?

[更新]

从Joy的链接到我看到的词汇表

应用程序ID(客户端ID)

"Azure AD向应用程序注册发出唯一标识符,用于标识特定应用程序和相关配置.此应用程序ID(客户端ID)在执行身份验证请求时使用,并在开发时提供给身份验证库."

我看到客户端ID链接到一个网页在ietf.org 其中规定

"2.2.客户标识符

授权服务器向注册客户端发出客户端标识符 - 表示客户端提供的注册信息的唯一字符串.

我想这个比喻都是关于供应商,客户,产品关系.供应商是Active Directory,产品是认证,客户是应用注册.

作为客户的"应用程序注册"的概念,我很难习惯.我寻求帮助理解单词的选择.

多租户应用程序的想法并不真正适用于"客户端"的比喻.

[更新]此链接是最有用但最具权威性的链接复制

1.1.角色

OAuth定义了四个角色:

资源所有者能够授予对受保护资源的访问权限的实体.当资源所有者是一个人时,它被称为最终用户.

资源服务器托管受保护资源的服务器,能够使用访问令牌接受和响应受保护资源请求.

客户端代表资源所有者及其授权进行受保护资源请求的应用程序.术语"客户端"并不暗示任何特定的实现特征(例如,应用程序是在服务器,桌面还是其他设备上执行).

授权服务器成功验证资源所有者并获取授权后,服务器向客户端发出访问令牌.

授权服务器和资源服务器之间的交互超出了本规范的范围.授权服务器可以是与资源服务器相同的服务器或单独的实体.单个授权服务器可以发出由多个资源服务器接受的访问令牌.

但它仍然令人困惑.

"代表资源所有者及其授权进行受保护资源请求的应用程序"

"代表资源所有者提出受保护的资源请求"是什么意思?

[更新]

在研究了Wayne Yang的回答后,我在Slack的oauth页面上找到了这张照片 OAuth 2.0授权代码授予流程

Way*_*ang 7

为什么AuthClientId也称为应用程序ID?

Client IdOAuth2.0协议中的标准定义.这也是实际的应用.Application Id只是Azure门户中的另一个名称.

这个名称更接近于应用程序本身的含义.例如,可以使用客户端调用Native Client,但Web App/Api实际上是在服务器中运行的服务器服务.但它们都是应用程序.

因此,对于普通用户来说,应用程序ID更有意义.但这client Id是一个标准的定义,你不能改变它.

"代表资源所有者提出受保护的资源请求"是什么意思?

这意味着客户端可以代表用户请求访问令牌并将访问令牌发送到资源.(如果你让用户自己做,这是不安全和复杂的)

在OAuth2.0框架中,客户端是用户(资源所有者),App(受保护资源)和身份提供者(授权服务器)的桥梁. 如果用户想要访问SaaS应用程序,他将直接向客户端而不是授权服务器发送授权请求.然后,客户端可以代表用户从授权服务器请求访问令牌并将访问令牌发送到App.

这是协议流程:

 +--------+                               +---------------+
 |        |--(A)- Authorization Request ->|   Resource    |
 |        |                               |     Owner     |
 |        |<-(B)-- Authorization Grant ---|               |
 |        |                               +---------------+
 |        |
 |        |                               +---------------+
 |        |--(C)-- Authorization Grant -->| Authorization |
 | Client |                               |     Server    |
 |        |<-(D)----- Access Token -------|               |
 |        |                               +---------------+
 |        |
 |        |                               +---------------+
 |        |--(E)----- Access Token ------>|    Resource   |
 |        |                               |     Server    |
 |        |<-(F)--- Protected Resource ---|               |
 +--------+                               +---------------+
Run Code Online (Sandbox Code Playgroud)

CF,客户端代表资源所有者获取访问令牌并发送访问令牌.

对于AAD,有一个文档,用于使用OAuth 2.0代码授权流授权访问Azure Active Directory Web应用程序:

在此输入图像描述

客户:Native App

资源:Web API

资源所有者:用户

授权服务器:AAD

这里的Native应用程序是代表用户请求令牌并将令牌发送到资源的客户端.