我試圖讓一些MSFT Power BI SDK示例工作。不幸的是,Microsoft.IdentityModel.Clients.ActiveDirectory庫爲初始外部認證步驟帶來了很多麻煩。Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireToken中的NullReferenceException
我使用的是NuGet的Microsoft.IdentityModel.Clients.ActiveDirectory,Version = 2.28.3.860;這是AcquireToken被刪除之前庫的最後一個版本,我還沒有想到如何使用替換(AcquireTokenAsync),這與我在示例中看到的方式相同。
當我採取以下代碼並修改TODO行來指定我的實際Azure客戶端ID和身份驗證重定向頁面時,我將獲得儘可能多的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());
}
}
}
此時:
- A「登錄到您的賬戶」窗口,我已經在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集成到更大的應用程序中,但到目前爲止,我覺得我正在測試一個相當不穩定的系統。
你應該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) –
Thanks @ KanishkPanwar-MSFT。是;我對Power BI和ADAL都很陌生。知道ADAL開源代碼中的問題應該足以推進。 –