如何在启用AAD的azure网站中找到损坏的链接?

时间:2016-03-28 14:08:37

标签: c#-4.0 active-directory azure-web-sites azure-active-directory

我的网站链接更多,我通过启用AAD身份验证在azure网站上托管了此网站。

此外,我还有一个带有以下方法的控制台应用程序,用于验证断开链接的页面。

 public bool IsPageBroken(string pageURl)
    {
        bool isValid=true;
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(pageURl);
        request.Credentials = CredentialCache.DefaultNetworkCredentials;
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        if (response.StatusCode == HttpStatusCode.OK)
        {
            isValid=true;
        }
        else
        {
            isValid=false;
        }
        return isValid;
    }

由于AAD身份验证,我收到了(401)未经授权但我通过了我的凭据。

无论如何我们可以解决这个问题(忽略登录选项)

谢谢, Saravanan

2 个答案:

答案 0 :(得分:0)

您获得401 Unauthorized响应的原因是您尝试使用CredentialCache.DefaultNetworkCredentials对您的Web应用进行身份验证。这适用于托管在公司域中的Web应用程序,但不适用于Azure中托管的Web应用程序。

如果您想要调用AAD保护的Web应用程序,则需要使用the ADAL libraries获取令牌并将该令牌附加到HTTP请求的Authorization标头。

您可以在此处找到示例代码和一些说明:https://github.com/Azure-Samples/active-directory-dotnet-native-headless。由于您已经使用AAD设置和配置了Web应用程序,因此请务必专注于客户端指示。

答案 1 :(得分:0)

非常感谢您的输入,我可以在更改下面的代码后获取访问令牌,现在我可以访问云站点网址了。再次感谢。

do
        {
            retry = false;
            try
            {
                //token = authContext.AcquireToken(todoListResourceId, clientCredential);
                token = authContext.AcquireToken(resourceId, clientId, new Uri("https://mysitename.azurewebsites.net"));
            }
            catch (AdalException ex)
            {
                if (ex.ErrorCode == "temporarily_unavailable")
                {
                    retry = true;
                    retryCount++;
                    Thread.Sleep(3000);
                }
            }

        } while ((retry == true) && (retryCount < 3));
        return token;