3

我正在尝试创建一个可以扩展 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:“发生了一个或多个错误。”

内部异常:

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

4

1 回答 1

2

因此,您的代码中存在一些问题。

首先,请确保您已按照此处描述的步骤操作:https ://docs.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?

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

resource是您为其获取令牌的资源。既然要访问Resource Manager API,这里的值应该是https://management.core.windows.net/

于 2017-05-19T08:56:33.407 回答