通过(休息)管理 Azure 搜索 API
Manage AzureSearch via (Rest) API
我正在尝试创建一个工具来扩展 Azure 搜索组件的“副本”和“分区”。
为此,我阅读了 Microsoft 的以下文章:
https://docs.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: 'One or more errors occurred.'
InnerException:
AdalServiceException:AADSTS50001:在名为 .
的租户中找不到名为的应用程序
如果租户管理员未安装应用程序或未征得租户中任何用户的同意,就会发生这种情况。
您可能已将身份验证请求发送给错误的租户。
所以您的代码中存在一些问题。
首先,请确保您已按照此处描述的步骤进行操作:https://docs.microsoft.com/en-us/rest/api。成功创建应用程序后,您必须记下该应用程序的客户端 ID 并在您的代码中使用它。
接下来请确保ba1cb781739c4cdea71c619ccba914e0
确实是租户id。您还可以使用 Azure AD 域名 (something.onmicrosoft.com
) 而不是此 GUID 类型值。所以你的 URL 将是 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 Applications
,通常是您网站的 URL。请确保它与您在 Azure AD 中创建应用程序时提供的值匹配。当 Azure AD 将用户重定向到此 URL 时,它会在 code
查询字符串参数中传递一个 JWT 令牌,您可以使用该参数获取 access/refresh 令牌。
resource
是您为其获取令牌的资源。既然要访问Resource Manager API
,这里的值应该是https://management.core.windows.net/
.
我正在尝试创建一个工具来扩展 Azure 搜索组件的“副本”和“分区”。 为此,我阅读了 Microsoft 的以下文章:
https://docs.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: 'One or more errors occurred.'
InnerException:
AdalServiceException:AADSTS50001:在名为 .
的租户中找不到名为的应用程序
如果租户管理员未安装应用程序或未征得租户中任何用户的同意,就会发生这种情况。
您可能已将身份验证请求发送给错误的租户。
所以您的代码中存在一些问题。
首先,请确保您已按照此处描述的步骤进行操作:https://docs.microsoft.com/en-us/rest/api。成功创建应用程序后,您必须记下该应用程序的客户端 ID 并在您的代码中使用它。
接下来请确保ba1cb781739c4cdea71c619ccba914e0
确实是租户id。您还可以使用 Azure AD 域名 (something.onmicrosoft.com
) 而不是此 GUID 类型值。所以你的 URL 将是 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 Applications
,通常是您网站的 URL。请确保它与您在 Azure AD 中创建应用程序时提供的值匹配。当 Azure AD 将用户重定向到此 URL 时,它会在 code
查询字符串参数中传递一个 JWT 令牌,您可以使用该参数获取 access/refresh 令牌。
resource
是您为其获取令牌的资源。既然要访问Resource Manager API
,这里的值应该是https://management.core.windows.net/
.