如果在尝试使用我的代码登录 Azure 并对 Azure 进行身份验证时遇到 cloudexception以下 ASP.NET 错误
代码出错的地方
private void LoadSubscriptions()
{
if (Session["AzureAuthentication"] == null)
return;
var mainAuthRes =
(Task<AuthenticationResult>)Session["AzureAuthentication"];
var subscriptionCredentials = new TokenCloudCredentials(mainAuthRes.Result.AccessToken);
var cancelToken = new CancellationToken();
using (var subscriptionClient = new SubscriptionClient(subscriptionCredentials))
{
var tenants = subscriptionClient.Tenants.ListAsync(cancelToken).Result;
foreach (var tenantDescription in tenants.TenantIds)
我不知道为什么它会在以下位置出现错误:
var tenants = subscriptionClient.Tenants.ListAsync(cancelToken).Result;
mainAuthRes.Result.AccessToken 实际上在 Debug 中显示了一个 Accesstoken
我的授权码
将身份验证作为会话发送到 LoadSubscriptions 类
public void GetAuthorizationCode()
{
JObject response = new JObject();
var parameters = new Dictionary<string, string>
{
{ "response_type", "code" },
{ "client_id", clientId },
{ "redirect_uri", url },
{ "prompt", "login"},
{ "scope", "openid"}
};
var requestUrl = string.Format("{0}/authorize?{1}", EndPointUrl,BuildQueryString(parameters));
Response.Redirect(requestUrl);
}
public string AcquireTokenWithResource(string resource)
{
var code = Request.Params["code"];
AuthenticationContext ac = new AuthenticationContext(string.Format("https://login.microsoftonline.com/{0}", directoryId));
ClientCredential clcred = new ClientCredential(clientId, clientSecret);
var result = ac.AcquireTokenByAuthorizationCodeAsync(code, new Uri(url), clcred, resource);
Session["AzureAuthentication"] = result;
return result.Result.AccessToken;
}
private string BuildQueryString(IDictionary<string, string> parameters)
{
var list = new List<string>();
foreach (var parameter in parameters)
{
list.Add(string.Format("{0}={1}", parameter.Key, HttpUtility.UrlEncode(parameter.Value)));
}
return string.Join("&", list);
}
protected string EndPointUrl
{
get
{
return string.Format("{0}/{1}/{2}", "https://login.microsoftonline.com", directoryId, @"oauth2/");
}
}
谁能看出哪里出错了。
如果您需要更多详细信息,请询问我。
我最终使用了一种不同的方式来验证自己,因为我相信这种验证方式会不断给我带来错误,即使它最终会奏效。这就是为什么我要关闭这个帖子。
我不会推荐我的新身份验证方法,因为它涉及一个自创建的登录页面,该页面使用在线发现的加密器发送凭据,该加密器通过会话或配置字段或凭据的硬编码字段加密。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句