我正在嘗試撥打預訂中的所有保管庫。我使用的方法是這樣的 -KeyVaultClient.AuthenticationCallback委託的參數來自哪裏?
控制器
var myClient = new Microsoft.Azure.KeyVault.KeyVaultClient(new KeyVaultClient.AuthenticationCallback(Helper.GetToken));
Microsoft.Azure.KeyVault.KeyVaultCredential test = new KeyVaultCredential(new KeyVaultClient.AuthenticationCallback(Helper.GetToken));
TokenCloudCredentials tokenCredentials = new TokenCloudCredentials("xxx", test.Token);
KeyVaultManagementClient client = new KeyVaultManagementClient(tokenCredentials);
VaultListResponse response = new VaultListResponse();
助手
public static async Task<string> GetToken(string authority, string resource, string scope)
{
var clientId = ConfigurationManager.AppSettings["AuthClientId"];
var clientRedirectURI = ConfigurationManager.AppSettings["AuthClientRedirectURI"];
var context = new AuthenticationContext(authority, TokenCache.DefaultShared);
result = await context.AcquireTokenAsync(resource, clientId, new Uri(clientRedirectURI), new PlatformParameters(PromptBehavior.Always));
return result.AccessToken;
}
對於我的控制器「test.Token」始終返回null,但我不能不認爲這可能從我身上不傳任何東西到Helper.Token中進行測試。我知道Helper.Token基本上匹配回撥想要的內容:
public delegate Task<string> AuthenticationCallback(
string authority,
string resource,
string scope)
但是我從哪裏獲得權限,資源和範圍? 謝謝!
在你的控制器方法上放置一個斷點並檢查調試器,看看它是否被正確設置 –
對不起,但我不確定你是什麼意思。我彈出了斷點,但只要我跳過「Microsoft.Azure.KeyVault.KeyVaultCredential test = new KeyVaultCredential(new KeyVaultClient.AuthenticationCallback(Helper.GetToken));」然後它轉到下一行(TokenCredientials) - 我檢查測試並將標記設置爲空。 – Pikapops