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

2024-03-25

我发现 Azure 中的应用程序注册非常令人困惑。 在我的在这里提问 https://stackoverflow.com/questions/50921099/invalid-provider-type-specified-cryptographicexceptionAuthClientId 和 Application Id 原来是同一件事,那么为什么使用两个名称呢?

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

[Update]

从 Joy 的链接到我看到的术语表

应用程序 ID(客户端 ID)

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

我看到客户端 ID 链接到以下页面:ietf.org http://ietf.org/哪个州

"2.2. 客户端标识符

授权服务器向已注册的客户端颁发客户端 标识符——代表注册的唯一字符串 客户提供的信息。”

我想这个比喻都是关于供应商、客户、产品关系的 其中供应商是Active Directory,产品是身份验证,客户是应用程序注册。

作为顾客,我不太习惯“申请注册”的概念。我寻求帮助来理解词语的选择。

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

[更新] 这链接是迄今为止最有帮助的 https://www.rfc-editor.org/rfc/rfc6749#section-1.1以及最权威的 从链接复制

1.1.角色

OAuth 定义了四种角色:

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

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

客户 代表受保护资源请求的应用程序 资源所有者及其授权。 “客户”一词确实 不暗示任何特定的实现特征(例如, 应用程序是否在服务器、桌面或其他设备上执行 设备)。

授权服务器 服务器成功后向客户端颁发访问令牌 验证资源所有者并获得授权。

授权服务器与资源的交互 服务器超出了本规范的范围。这 授权服务器可以与资源服务器是同一台服务器 或一个单独的实体。单个授权服务器可能会发出 多个资源服务器接受的访问令牌。

然而,它仍然令人困惑。

“代表资源所有者并经其授权发出受保护资源请求的应用程序”

“代表资源所有者发出受保护资源请求”是什么意思?

[Update]

After studying Wayne Yang's answer I found this picture at Slack's oauth page https://api.slack.com/docs/oauth OAuth 2.0 authorization code grant flow


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

Client Id是标准定义OAuth2.0协议 https://www.rfc-editor.org/rfc/rfc6749#section-1.1。也是实际应用。Application Id只是 Azure 门户中的另一个名称。

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

所以应用程序id对于普通用户来说更有意义。但client Id是标准定义,您无法更改它。

“代表某人发出受保护的资源请求”是什么意思 资源所有者”?

这意味着客户端可以代表用户请求访问令牌并将访问令牌发送到资源。 (如果让用户自己做这件事,既不安全又复杂)

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

这是协议流程:

 +--------+                               +---------------+
 |        |--(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 ---|               |
 +--------+                               +---------------+

  

From C to F,Client代表资源所有者获取访问令牌并发送访问令牌。

对于AAD,有一个文档使用 OAuth 2.0 代码授权流程授权访问 Azure Active Directory Web 应用程序 https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-code:

客户端:本机应用程序

资源:Web API

资源所有者:用户

授权服务器:AAD

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Azure 中,为什么 AuthClientId 也称为应用程序 Id? 的相关文章

随机推荐

  • Pandas 与正则表达式“.”不一致点元字符?

    考虑 df Cost Store 1 22 5 Store 1 Store 2 要将这些点转换为 nan 我可以使用 df replace np nan regex True Cost Store 1 22 5 Store 1 NaN St
  • 如何让Eclipse使用JDK8来编译项目?

    我正在尝试新的 jdk8 这里提供什么http jdk8 java net lambda http jdk8 java net lambda 我可以从命令行编译并运行我的项目 我还可以将这个新的 JDK 添加到Installed JREs在
  • 获取 ngComponentOutlet 的引用

    我正在使用 ngComponentOutlet 动态创建一个组件 听上去像 import Component NgModule from angular core import BrowserModule from angular plat
  • 实际上如何使用 C 库?

    我确信这个问题已经被问过很多次了 但我无法弄清楚 耐心听我说 因此 当您下载库时 您会得到一堆 c 和 h 文件 以及许多其他内容 现在假设您想使用这个库编写一个程序 我将所有 h 文件复制到我的项目目录中 它只是无法编译 太好了 然后我将
  • 如何在 Python 中将 '%' 替换为 '\x'

    我的目标是将base64编码的 EB 字符串转换为 xEB 然而 一尝试 我发现这很难 并且通过 string replace 和 re sub 都无法实现 我的代码失败如下 target EB AF B8 EB 9F AC EC 8A A
  • 如何使用同一个 R 包的多个版本?

    为了能够比较包的两个版本 我需要能够选择加载哪个版本的包 R 的包系统默认设置为覆盖现有包 以便您始终拥有最新版本 我该如何覆盖这种行为 到目前为止我的想法是 我可以获取包源 编辑描述以给出不同的名称 并实际上构建两个不同的包 不过 我宁愿
  • 谁能告诉我 python 中的 pika 和 kombu 消息传递库有什么区别?

    我想在我的应用程序中使用消息传递库与rabbitmq交互 谁能解释一下 pika 和 kombu 库之间的区别吗 Kombu 和 pika 是两个不同的 Python 库 它们从根本上服务于相同的目的 向消息代理发布消息和使用消息代理发送消
  • 检查谷歌地图应用程序是否安装在react-native iOS中

    我尝试使用 npm 模块react native check app install但我无法实现 结果总是错误的 还尝试过react native installed apps获取手机中安装的应用程序列表 但这始终返回空列表 您确定声明了
  • Laravel 所有输入字段均为必填

    我有大约 50 个输入字段 它们都是必需的 有没有简单的方法来检查它们是否都已设置 所以我不必手动将每个字段放入我的模型中 验证规则为 必需 我知道这已经晚了 但我编写了一个简单的函数来为自己解决这个问题 foreach request g
  • 以网格格式绘制脉冲响应函数

    我已经从 R 中的 VAR 模型运行了以下脉冲响应函数 debtarg 1 lt irf var est debt arg response pfdebt arg impulse sp n ahead 40 ortho TRUE boot
  • Java Web 开发的学习路线?

    我继承了一个大型Java Web项目 我必须对其进行一些修改 在基础知识方面我是一个相当称职的Java程序员 但我以前从未做过任何JSP编程或EJB编程 我记得大约 5 年前在大学里做过一些 servlet 编程 但我假设从那时起一切都发生
  • 访问控件值的最有效方法是什么?

    在我必须访问控件的值的两个选择中 哪个是最有效的 getComponent ControlName getValue or dataSource getItemValue FieldName 我发现有时getComponent似乎没有返回当
  • 使用 Python 查找 Mac UUID/序列号

    基本上 我计划将计算机的 UUID 序列号与它运行的密钥绑定起来 在 Windows 上 我发现获取 UUID 很容易 但我很难为 Mac 获取任何东西 有什么解决办法吗 MacOS 有一个内置程序用于访问此信息 您可以使用以下命令获取它
  • 调整工作表演示文稿 SwiftUI 的大小

    我正在尝试以小尺寸呈现模型视图 有什么办法可以调整大小吗 Button Present self presentingModal true padding sheet isPresented presentingModal content
  • 将图像从 api url 加载到 Angular 5 组件中

    我有一个 html 结构如下的组件 img src img 并在打字稿中 constructor private loginService LoginService this img null this loadImage loadImag
  • 如何解决此问题:应用程序启用 YouTube 视频的后台播放

    我制作了一个播放 YouTube 视频的phonegap 应用程序 谷歌已将其从 Play 商店下架 因为 该应用程序可以在后台播放 YouTube 视频 我不知道这意味着什么 有人可以帮我解决这个问题 以便视频不会在后台播放吗 Thank
  • Windows 服务中使用 App.Config 的 WCF 命名管道

    我烦了 好的 这是错误 net pipe localhost MyIpcAppToService 上没有侦听端点可以接受该消息 这通常是由不正确的地址或 SOAP 操作引起的 有关更多详细信息 请参阅 InnerException 如果存在
  • 无法在 makefile 中调用 bash 函数

    我的印象是我可以在 GNU makefile 中调用 bash 函数 但似乎是错误的 这是一个简单的测试 我定义了这个函数 gt type lsc lsc is a function lsc ls color auto color tty
  • java.lang.IllegalStateException:无法获取表面

    我正在尝试创建一个应用程序 使用户能够录制其智能手机的屏幕 这是我的起始代码 import android content Context import android content Intent import android hardw
  • 在 Azure 中,为什么 AuthClientId 也称为应用程序 Id?

    我发现 Azure 中的应用程序注册非常令人困惑 在我的在这里提问 https stackoverflow com questions 50921099 invalid provider type specified cryptograph