Если получено исключение при попытке войти в систему и пройти аутентификацию в Azure с помощью моего кода После ошибки 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 действительно показывает Accesstoken в отладке
Myкод авторизации
отправляет аутентификацию классу LoadSubscription в виде сеанса
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/");
}
}
Может кто-нибудь увидеть, где что-то идет не так.
Если вам нужно больше подробностей, спроситея.