gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 07:28:59 25 4
gpt4 key购买 nike

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

我们可以使用“Web 应用程序”来实现此功能,因为在您设置此功能的 Azure 门户中,它具有“ Multi-Tenancy ”选项,可以将其设置为"is" - 此支持的说明:

Designates whether users in external organizations are allowed to grant your app access to data in their organization's directory. This control affects only the ability to grant access. It does not affect any access that has already been granted.

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

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

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

....It should not be used in a native app, because client_secrets cannot be reliably stored on devices. It is required for web apps and web APIs, which have the ability to store the client_secret securely on the server side.

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

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

状态:

Native client registrations are multi-tenant by default. You don’t need to take any action to make a native client application registration multi-tenant.

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

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

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

是否有人在 Multi-Tenancy native 应用程序方面取得了成功,或者对我做错了什么或可以尝试什么有任何想法/反馈?

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

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

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

AADSTS65005:资源无效。客户端请求访问未在客户端应用程序注册中请求的权限中列出的资源。客户端应用程序 ID:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA。请求的资源值: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 中)。

最佳答案

如果您正在开发一个 native 应用程序,该应用程序访问也是由您开发的 Multi-Tenancy Web API,您可以设置添加 clientId将 native 应用程序的 list 添加到 Web 应用程序的 list 中 knownClientApplications属性(property)。这样,当其他租户的用户访问 Multi-Tenancy Web API 时,它也会将 native 应用程序注册到其租户。

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

active-directory-dotnet-webapi-multitenant-windows-store

关于azure - 如何将任何 Azure Active Directory (AD) 用户登录到连接到 Office 365 Sharepoint Online API 的共享 native 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42692959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com