在 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? 的相关文章

  • 来自 IOS Xcode 的 Azure 推送通知错误

    我觉得我是世界上第一个尝试让 iOS 快速与 Azure 配合使用的人 但没有太多帮助 我跟着这个创建 iOS 应用程序 https azure microsoft com en us documentation articles app
  • 通过graph api或graph sdk为整个B2C实例创建用户自定义属性

    我想通过 graph api 或 sdk 为整个 b2c 实例创建 用户自定义属性 就像我在 ms 之后通过 Azure Portal 所做的那样文档 https learn microsoft com pl pl azure active
  • Azure 应用程序错误地请求管理员同意?

    我希望有人对我在Microsoft的Azure Portal中使用新注册的应用程序遇到的问题有所了解 portal azure com https portal azure com 当我收到以下对话框时 我的登录问题 右下角出现错误代码和消
  • Spring Boot 2.7.8 或 3.x 升级 - Tomcat HTTP 状态 404 - 在 Azure 上找不到

    我目前正在将应用程序从 Spring Boot 2 7 7 升级到 Spring Boot 3 0 2 并在 tomcat 上遇到 404 错误 有趣的是 该应用程序在我的本地计算机上运行良好 但在 Azure 云中却运行不佳 我将 org
  • 使用天蓝色错误“找不到资源”进行情绪分析

    我创建了一个 python 程序 它接受字符串作为输入并对其执行情感分析 我已经按照文档中所述创建了环境变量 并重新启动了 cmd 和 Visual Studio 但仍然出现以下错误 遇到异常 操作返回无效状态代码 未找到资源 python
  • 使用多行选项和编码选项读取 CSV

    在 azure Databricks 中 当我使用以下命令读取 CSV 文件时multiline true and encoding SJIS 似乎编码选项被忽略了 如果我使用multiline选项 Spark 使用默认值encoding那
  • 发布管道中的 Azure DevOps 日志记录命令

    我试图通过在任务中设置一些环境变量来自定义管道版本的输出 我找到了以下链接 然而这似乎不起作用 我所做的只是创建一个具有单个任务 bash 或 PS 的管道 并通过任务的内联版本声明链接中指定的命令 有人已经成功地使这些命令起作用了吗 我做
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • Microsoft Graph AD 用户或人员 API 来搜索所有用户?

    我正在尝试在我的应用程序中构建功能 供 管理员 将用户从其 AD 组分配到某些组 这些组进一步分配给应用程序特定的角色 基本上是一个简单的管理组件 将具有 oid 的用户添加到组中很容易 我面临的问题是找到实际的用户 目前 我看到的唯一选择
  • 如何查看Databricks中的所有数据库和表

    我想列出 Azure Databricks 中每个数据库中的所有表 所以我希望输出看起来像这样 Database Table name Database1 Table 1 Database1 Table 2 Database1 Table
  • PKCE 增强授权代码流中保护 code_verifier 的最佳实践

    由于 PKCE 现在是推荐的隐式流程授权方法 因此我正在寻找处理代码验证器的最佳实践以及如何完成此操作的建议 在高层 PKCE 授权流程中包括 产生code verifier在客户端 产生code challenge来自 1 hit aut
  • C# 以编程方式设置 azure 函数时间触发器

    我想编写一个在时间触发器上工作的 C Azure 函数 其中计划是可变的 即每个函数运行将确定下一次运行的时间 因此应该能够更改下一个触发器的计划时间 您可以使用带有队列输出的队列触发器 这要归功于NextVisibleTime https
  • PartitionKey可以用StartsWith查询吗?

    在Azure表存储中 是否可以使用StartsWith或其他一些运算符 例如 查询PartitionKey包含等等 我知道我可以使用 RowKey 来做到这一点 但是可以使用分区键来做到这一点吗 后续问题是 即使可行 是否可取 Partit
  • 如何从 Microsoft Azure EventHub 获取事件计数?

    我想从 Microsoft Azure EventHub 获取事件计数 我可以使用 EventHubReceiver Receive maxcount 但在处理大量大事件时速度很慢 有 NamespaceManager GetEventHu
  • 工作天蓝色日志记录设置

    我尝试设置跟踪日志记录有一段时间了 但就是无法让它正常工作 关于这个主题有这么多错误 过时的文章并没有帮助 但请有人给我一个良好且实用的设置 用于 Azure 1 6 的跟踪日志记录和查看 我想要做的就是能够从我的应用程序捕获和查看跟踪消息
  • Azure Functions 无法与队列触发器一起使用

    预先感谢任何可以提供帮助的人 我正在使用队列触发器在 Azure 中创建以下函数 FunctionName SubmitJob public static async Task Run ServiceBusTrigger jobs Conn
  • 使用 C++ 访问 Azure blob 存储 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 python 将 CSV 文件上传到 Microsoft Azure 存储帐户

    我正在尝试上传一个 csv使用 python 将文件写入 Microsoft Azure 存储帐户 我已经发现C sharp https blogs msdn microsoft com jmstall 2012 08 03 convert
  • Azure 辅助角色“请求输入之一超出范围”的内部异常。

    我在辅助角色中调用 CloudTableClient CreateTableIfNotExist 方法 但收到一个异常 其中包含 请求输入之一超出范围 的内部异常 我做了一些研究 发现这是由于将表命名为非法表名引起的 但是 我尝试为我的表命
  • 使用 Java v12 SDK 在 Azure Blob 存储中复制 Blob

    我的应用程序位于 Kubernetes 集群中 我正在使用Java v12 SDK https github com Azure azure sdk for java tree master sdk storage azure storag

随机推荐

  • 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