我正在嘗試使用AAD對我的客戶端進行身份驗證,並使用Windows服務自動執行此操作。在AAD .NET SDK中,有兩種方法,AcquireTokenAsync
和AcquireToken
,但我不能使用這些方法之一,則調用的await將沒有任何反應相依相偎,當我做這樣的事情:使用用戶名和密碼獲取Azure Active Directory標記
result = authContext.AcquireTokenAsync(resourceHostUri, clientId, new UserCredential(hardcodedUsername, hardcodedPassword)).Result;
該對象返回狀態Waiting for Activation
& Code 31
..
現在,是否有無法使用硬編碼的用戶名和密碼獲取令牌?
我全碼:
string hardcodedUsername = "username";
string hardcodedPassword = "password";
string tenant = "[email protected]";
string clientId = "clientId";
string resourceHostUri = "https://management.azure.com/";
string aadInstance = "https://login.microsoftonline.com/{0}";
string authority = String.Format(CultureInfo.InvariantCulture, aadInstance, tenant);
authContext = new AuthenticationContext(authority);
AuthenticationResult result = null;
try
{
result = authContext.AcquireTokenAsync(resourceHostUri, clientId, new UserCredential(hardcodedUsername, hardcodedPassword)).Result;
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
return result;
我試圖以訪問Azure的API。
更新1:
我得到這個輸出,當我試圖await
通話,我想這可能幫助:
Microsoft.IdentityModel.Clients.ActiveDirectory TokenCache:展望... Microsoft.IdentityModel.Clients.ActiveDirectory TokenCache:在緩存中找不到匹配的令牌 Microsoft.IdentityModel.Clients.ActiveDirectory d__0:將用戶領域發現請求發送到'https://login.microsoftonline.com/common/UserRealm/用戶名 API-版本= 1.0' Microsoft.IdentityModel.Clients.ActiveDirectory d__4:用戶與散列 '?***' 檢測爲 '聯合'
您是否嘗試過在'authContext.AcquireTokenAsync()'方法調用之前創建方法'async'並將'await'放入? –
是的,它需要永遠沒有迴應,我提到在我的問題 –
你可以分享完整的代碼(包括方法簽名以及如何調用此方法)? –