我的网站链接更多,我通过启用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
答案 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;