rest - 通过(Rest)API 管理 AzureSearch

标签 rest api azure azure-cognitive-search azure-management-api

我正在尝试创建一个工具来扩展 Azure 搜索组件的“副本”和“分区”。 为此,我阅读了 Microsoft 的以下文章:

https://learn.microsoft.com/en-us/rest/api/

现在,我在通过 Azure 进行身份验证以获得 AuthToken 时遇到问题。 有没有办法让它变得更容易?或者,你们有如何做到这一点的示例吗?

这是我的代码示例:

var clientId = "2aaced54873e4a94b6d5518bc815dcb1";
var redirectUri = new Uri("https://thissucks.search.windows.net");
var resource = "resource"; // What exactly should the value be?

var authContext =
    new AuthenticationContext(
        "https://login.windows.net/ba1cb781739c4cdea71c619ccba914e0/oauth2/authorize", new TokenCache());

var result = authContext.AcquireTokenAsync(resource, clientId, redirectUri, new PlatformParameters(PromptBehavior.Auto));
var result2 = result.Result;

调用此命令后,我会看到一个 Azure 登录屏幕。使用有效凭据登录后,出现以下异常:

System.AggregateException:“发生一个或多个错误。”

内部异常:

AdalServiceException:AADSTS50001:在名为 的租户中找不到名为 的应用程序。
如果租户管理员未安装应用程序或租户中的任何用户未同意应用程序,则可能会发生这种情况。
您可能已将身份验证请求发送给了错误的租户。

最佳答案

所以您的代码中存在一些问题。

首先,请确保您已按照此处描述的步骤进行操作:https://learn.microsoft.com/en-us/rest/api 。成功创建应用程序后,您必须记下该应用程序的客户端 ID 并在代码中使用它。

接下来,请确保ba1cb781739c4cdea71c619ccba914e0确实是租户ID。您还可以使用 Azure AD 域名 (something.onmicrosoft.com) 代替此 GUID 类型值。因此您的网址将是 https://login.windows.net/something.onmicrosoft.com/oauth2/authorize

最后,以下参数的值存在问题:

var redirectUri = new Uri("https://thissucks.search.windows.net");
var resource = "resource"; // What exactly should the value be?

redirectUri 是用户成功通过身份验证后 Azure AD 将重定向到的 URI。对于Web 应用程序,它通常是您网站的URL。请确保它与您在 Azure AD 中创建应用程序时提供的值匹配。当 Azure AD 将用户重定向到此 URL 时,它会在 code 查询字符串参数中传递 JWT token ,您可以使用该 token 获取访问/刷新 token 。

resource 是您要为其获取 token 的资源。由于您要访问 Resource Manager API,因此此处的值应为 https://management.core.windows.net/

关于rest - 通过(Rest)API 管理 AzureSearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44064944/

相关文章:

facebook - 通过 API 设置 Facebook 封面照片

java - Twitter4j v2.2.6 具有地理定位功能的流媒体 API

windows - Azure 应用服务上的 ASP.NET Core 2.1 Docker 容器的正确 Windows 基本镜像是什么

php - while循环中使用INSERT语句的多个REST-API请求

json - Azure 存储 REST API 能否以 JSON 格式发送响应?

javascript - JS加载响应不起作用

java - Android:为什么即使边界是 500 米,谷歌也会在其他国家/地区放置 api 返回位置?

php - Middleware Slim PHP Framework 中如何响应

azure - 如何使用 Azure 数据工厂获取 Blob 存储帐户中的容器数量?

azure - Microsoft Azure 网站创建 : 'Cannot modify this site because another operation is in progress'