首页 > 解决方案 > 如何在服务器端的 Excel 中实现“组织帐户”身份验证?

问题描述

我有 Java 应用程序,它以纯 HTML 格式提供一些报告。

我想使用 Microsoft SSO (OAuth) 保护这些报告。

我能够在浏览器中执行此操作 - 我在 Azure AD 中创建了新的“AppRegistration”,获取client_id, client_secret, Oauth 2 authentication_url,在此应用程序中正确配置redirect_uri并在浏览器中实现了 Oauth 流程 - 它按预期工作。

但是用户不想在浏览器中查看报告,他们想在 Excel 2019 中处理它们。它具有“组织帐户”身份验证。我相信,它使用相同的 OAuth 2 流程。

所以,我补充说WWW-Authenticate: Bearer authorization_url="https://login.microsoftonline.com/256be541-f611-4412-975e-cb56ee6fb03b/oauth2/v2.0/authorize"

我正在尝试访问如下 URL: https://localhost:8443/report/1

现在 Excel 要求我输入登录名和密码,但成功验证后显示错误:

invalid_resource:AADSTS500011:在名为 256be541-f611-4412-975e-cb56ee6fb03b 的租户中找不到名为 https://localhost:8443 的资源主体。如果租户管理员未安装应用程序或租户中的任何用户未同意此应用程序,则可能会发生这种情况。您可能已将身份验证请求发送给错误的租户。跟踪 ID:57324bfe-ab46-4c2e-9128-a336aa287e00 相关 ID:d9c4c732-76cc-4659-9d8a-d27abec617d3 时间戳:2021-02-02 16:50:13Z。

https://localhost:8443 - 是我的应用程序的地址,此地址包含在应用程序注册中的 redirect_uri 中。

但我不认为提到的“资源主体”是关于redirect_uri。

那么,如何在 Azure AD 中创建“资源”主体并将其命名为“https://localhost:8443”?

标签: excelazure-active-directorypowerbi

解决方案


事实上,情况就是这样。根据您的错误消息,它说https://localhost:8443找不到资源主体,这意味着您将其设置scope为:https://localhost:8443请求访问令牌时。

但是,你一开始只设置了redirect_uri,并没有https://localhost:8443Expose API选项卡中设置Application ID URI为:,所以当你请求资源时,会报错,找不到资源。

顺便说一句,scope与 不同redirect_uri。作用域放置你要访问的资源,而redirect_uri 只是回调url,不是你要访问的资源。这就是为什么在 redirect_uri 中设置 url 时仍然会出错的原因。


推荐阅读