Я пытаюсь получить образцы MSFT Power BI SDK. К сожалению, библиотека Microsoft.IdentityModel.Clients.ActiveDirectory дает мне много проблем с начальным шагом внешней аутентификации.NullReferenceException в Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireToken
Я использую Microsoft.IdentityModel.Clients.ActiveDirectory, Version = 2.28.3.860, от NuGet; это последняя версия библиотеки до того, как AcquireToken был удален, и я не понял, как использовать его замену (AcquireTokenAsync) таким образом, который эквивалентен тому, что я вижу в образцах.
Когда я использую следующий код и изменяю строки TODO, чтобы указать мой фактический идентификатор клиента Azure и страницу перенаправления аутентификации, я добираюсь до строки AcquireToken.
using System;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
public class Application
{
public static void Main(string[] args)
{
try
{
string clientID = "abcdef01-1234-1234-abcd-abcdabcd1234"; // TODO: actual Azure client ID
string redirectUri = "https://acmecorporation.okta.com/login/do-login"; // TODO: actual redirect
string resourceUri = "https://analysis.windows.net/powerbi/api";
string authorityUri = "https://login.windows.net/common/oauth2/authorize";
AuthenticationContext authContext = new AuthenticationContext(authorityUri);
AuthenticationResult ar = authContext.AcquireToken(
resourceUri,
clientID,
new Uri(redirectUri),
PromptBehavior.RefreshSession);
string token = ar.AccessToken;
Console.WriteLine("Success: " + token);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
На данный момент:
- А «Войдите в свой аккаунт» окно выскакивает с именем приложения я связан в Azure с ClientId GUID
- Я нахожусь перенаправляется («acmecorporation») моей организации входа на странице
- Я войти используя свои учетные данные AD
метод AcquireToken бросает следующий NullReferenceExpection:
System.NullReferenceException: Object reference not set to an instance of an object. at Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext.RunAsyncTask[T](Task`1 task) at Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext.AcquireToken(String resource, String clientId, Uri redirectUri, PromptBehavior promptBehavior) at PowerBISample.Application.Main(String[] args) in \\noxfile\users\ehirst\documents\visual studio 2015\Projects\PowerBISample\PowerBISample\Program.cs:line 18
Может кто-нибудь дать указания о том, как обойти это? Моя цель - заставить POC работать, чтобы определить, можем ли мы интегрировать Power BI в более крупное приложение, но до сих пор мне кажется, что я бета-тестирование довольно неустойчивой системы.
вы должны сообщить об ошибке с полным StackTrace на https://github.com/AzureAD/azure-activedirectory-library-for-dotnet –
Возможный дубликат [Что такое NullReferenceException, и как это исправить ?] (http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) –
Спасибо @ KanishkPanwar-MSFT. Да; Я новичок в Power BI и ADAL. Знать, что проблема в ADAL с открытым исходным кодом должна быть достаточной для продвижения вперед. –