如何将任何 Azure Active Directory (AD) 用户登录到连接到 Office 365 Sharepoint Online API 的共享本机应用程序

2023-12-19

是否可以设置一个可供不同 Azure 帐户/目录上的用户使用的单个“本机应用程序”,以便他们可以从 Office 365 Sharepoint Online 获取数据?

我们可以使用“Web 应用程序”来实现此功能,因为在设置此功能的 Azure 门户中,它具有“多租户”选项,可以将其设置为“是” - 此支持的注释:

指定是否允许外部组织中的用户 授予您的应用程序对其组织目录中数据的访问权限。这 控制仅影响授予访问权限的能力。不影响 任何已被授予的访问权限。

一些早期测试表明这确实有效。However这意味着使用必须嵌入到应用程序中的 Oauth 密钥以及此处的注释:

https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-code https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-code

状态(与应用程序秘密相关):

....它不应该在本机应用程序中使用,因为 client_secrets 无法可靠地存储在设备上。 Web 应用程序需要它,并且 Web API,能够安全地存储 client_secret 在服务器端。

对于本机应用程序,此处的文档:

https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-devhowto-multi-tenant-overview https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-devhowto-multi-tenant-overview

State:

本地客户端注册默认是多租户的。你不 需要采取任何行动来制作本机客户端应用程序 注册多租户。

这表明它们应该按照我们期望的方式工作 - 但是,当我们使用来自与设置本机应用程序不在同一 Azure AD 中的帐户的 OAuth 流进行测试时,我们在身份验证后得到以下信息:

AADSTS70001:在目录 YYYYYYYYYYYYYYYYYYYY 中找不到标识符为“XXXXXXXXXXXXXXXXXXXXXX”的应用程序

所以看来这不起作用。目前,实现此目的的唯一方法似乎是创建一个 Web 应用程序并将客户端 ID 和密钥嵌入到本机应用程序中。

有没有人在多租户本机应用程序方面取得了成功,或者对我做错了什么或可以尝试什么有任何想法/反馈?

UPDATE我意识到这里有两件事是错误的: * 实际上,您可以单击 Azure 中的“Manifest”按钮并编辑原始 JSON,更新“availableToOtherTenants”值以使其成为多租户。 * 我在 OAuth 流程中没有scope=user_impersonation。

现在看来我们可以创建一个本机应用程序,其他组织/租户中的用户可以使用该应用程序进行身份验证。

UPDATE 2好吧,事实证明我们的应用程序现在适用于某些用户,但至少有一个用户得到了:

AADSTS65005:资源无效。客户端请求访问未在客户端应用程序注册中请求的权限中列出的资源。客户端应用程序 ID:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA。请求的资源价值:https://XXX.YYYYYY.com https://XXX.YYYYYY.com。资源应用程序 ID:ZZZZZZZZZZZ。应用注册的有效资源列表: 00000002-0000-0000-c000-000000000000、00000003-0000-0ff1-ce00-000000000000。\r\n跟踪 ID: KKKKKKKKKKKKKKKKK\r\n关联 ID: CCCCCCCCCCCCCCCCCCC

我不明白为什么它适用于一个用户,但不适用于另一个用户(如果两者都位于创建应用程序的不同租户/Azure AD 中)。


如果您正在开发一个访问多租户 Web API(也是由您开发的)的本机应用程序,您可以设置添加clientId将本机应用程序的清单添加到网络应用程序的清单中knownClientApplications财产。这样,当其他租户的用户访问多租户 Web API 时,它也会将本机应用程序注册到其租户。

请参阅下面的代码示例,该示例演示了调用使用 Azure AD 保护的多租户 Web API 的 Windows 应用商店应用程序:

活动目录 dotnet-webapi-多租户-windows-store https://github.com/Azure-Samples/active-directory-dotnet-webapi-multitenant-windows-store

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

如何将任何 Azure Active Directory (AD) 用户登录到连接到 Office 365 Sharepoint Online API 的共享本机应用程序 的相关文章

  • 具有客户端凭据 OAuth 流的 Dynamics CRM 2016 Online Rest API

    我正在尝试使用 Dynamics CRM 2016 Online 和 Azure Active Directory 进行身份验证 我能够按照此处的所有步骤进行操作 https msdn microsoft com en us library
  • 在 CosmosDb 中使用 /id 作为分区键的含义

    在每分钟有 1000 个条目 唯一键 进入 cosmos 的场景中 使用 id 作为分区键安全吗 特别是 有一个逻辑分区的概念https learn microsoft com en us azure cosmos db partition
  • 为 Azure Bot 服务设置插槽或多个环境

    我正在使用 Azure Bot 服务开发 Microsoft Bot 希望为 QA 开发 暂存设置不同的环境或插槽 就像我们在 azure 应用程序服务中所做的那样 在设置中 我没有找到 部署槽位 选项 但在设置下 每个设置都有 槽位设置
  • Azure Application Insights 查询 - 如何计算总数的百分比

    我正在尝试在输出表中创建一行来计算总项目的百分比 Something like this ITEM COUNT PERCENTAGE item 1 4 80 item 2 1 20 我可以轻松获得包含 ITEM 和 COUNT 行的表格 但
  • Azure SQL 数据仓库 DWU 与 Azure SQL DTU

    我正在考虑从 Azure SQL 迁移到 Azure SQL 数据仓库 它似乎提供了我们需要的一些功能 但是价格是从小规模开始的一个问题 100 DWU 数据仓库的价格相当高 521 月 https azure microsoft com
  • launch.json 中不允许使用属性 env [VSCode]

    我所做的就是在 VS 中初始化一个模板 Azure Functions 项目 当我尝试通过设置运行配置环境变量时launch json VS直接警告我这是不 允许的 此外 即使当我尝试运行我的 ps1无论如何 对于 env 来说 它不起作用
  • 直接向订阅发送消息

    是否可以将消息直接发送到订阅队列 设想 消息失败 被丢弃到死信中 该消息已使用 defer 手动拾取 克隆 并且需要发送到它首先被发送到死信的队列 但不是主题 我可以直接向订阅者发送消息吗 我考虑过为每个订阅者创建一个单独的重试队列 处理服
  • Azure 上的“phpcomposer.phar install”出现“无法终止进程”错误

    我正在尝试将我的 Symfony 2 应用程序部署到 Microsoft Azure 网站云 为此 我按照本指南中的步骤操作http symfony com doc current cookbook deployment azure web
  • Azure 管理 API 返回 500 内部服务器错误

    我通过此请求从 Azure REST 管理 API 返回 500 内部服务器错误 为什么 X509Certificate cert X509Certificate2 CreateFromCertFile cert path string u
  • 应用服务中的内存利用率是否可​​以提高

    我有一个相当简单的 Web 应用程序在 Azure 的 B1 服务计划中的应用服务计划中运行 该计划提供 1 个 CPU 和 1 75GB RAM CPU 使用率永远不会超过 5 左右 内存使用率永远不会低于 52 我确实停止了计划中唯一运
  • 如何使现有 ARM 模板上的资源 API 版本保持最新?

    我有一个现有的 Azure 模板 它配置以下资源 Microsoft ClassicStorage StorageAccounts api version 2014 06 01 microsoft insights components a
  • 使用 CLI 在 Azure 中上传文件

    我正在尝试练习以下任务 创建存储帐户 az 存储帐户创建 name heyatafroz25 resource group user fottsascvuzj 获取存储帐户密钥 az 存储帐户密钥列表 g user fottsascvuzj
  • Cosmos DB Mongo API 如何管理“请求率很大”情况

    我有以下代码 async function bulkInsert db collectionName documents try const cosmosResults await db collection collectionName
  • OAuth2 变量redirect_uri

    我们正在编写一个与 OAuth2 API 集成的插件 棘手的部分是 我们无法像大多数集成中那样对重定向 URI 进行硬编码 因为客户端可以在他们控制的任何域上安装此插件 例如 Wordpress 插件 并且访问令牌需要重定向回其自定义 ur
  • 使用 Adal 代表用户访问 Azure KeyVault

    以下是控制台应用程序和 ClientID RedirectUri 来自 azure Active Directory 中创建的本机应用程序 var authContext new AuthenticationContext string F
  • Azure 共享计划上的 SSL?

    我有 1 个网站 1 个数据库和 1 个 SSL 托管在 azure 上 我曾经拥有 基本 托管套餐 但每个月要支付 70 美元才能获得基本设置 并且所有内容都具有最小的缩放比例 我意识到我的低流量站点不需要专用计算机 因此我尝试转向共享计
  • Azure 服务总线是否可能创建了该消息的副本?

    我们在 Azure 服务总线上遇到了一些奇怪的行为 除了 Azure 中的一些错误之外 我们无法弄清楚如何解释 这就是发生的事情 我们已向 Azure 服务总线发送过一次消息 发送消息的调用执行时间略长于一分钟 但仍然成功 并且此后消息收到
  • 限制 LDAP 查询中返回的属性

    如何限制通过 System DirectoryServices 在 LDAP 查询中返回的属性 我一直在使用 DirectorySearcher 并将我想要的属性添加到 DirectorySearcher PropertiesToLoad
  • Azure 事件中心 - 按顺序接收事件

    我使用下面的代码从 Azure Event Hub 接收事件 https learn microsoft com en us azure event hubs event hubs dotnet framework getstarted s
  • 从 Azure 应用服务连接到 MongoDB Atlas 集群

    我在 Azure 上有一个 Web 应用程序 它连接到 Atlas cloud mongodb com 上托管的 MongoDB 集群 我想使用 Atlas 这样我就不必关心 MongoDb 配置 问题是我的集群连接超时 我必须在我的 mo

随机推荐