c# - KeyVaultClient.AuthenticationCallback Delegate 的参数来自哪里?

标签 c# asp.net-mvc azure active-directory azure-keyvault

我正在尝试调用订阅中的所有保管库。我正在使用的方法是这样的 -

Controller

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();

helper

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; 
}

对于我的 Controller “test.Token”总是返回 null,但我忍不住认为这可能是因为我在测试中没有将任何内容传递到 Helper.Token 中。我知道 Helper.Token 本质上与回调想要的内容匹配:

public delegate Task<string> AuthenticationCallback(
string authority,
string resource,
string scope)

但是我从哪里获得权限、资源和范围呢? 谢谢!

最佳答案

AuthenticationCallback是一个委托(delegate)函数,权限/资源/范围的值由SDK提供,我们需要提供委托(delegate)函数来使用这些值来获取访问 token 。

如果您使用的是网络应用程序,您的代码将无法工作,因为您需要在宣誓过程中提供 client_secret 或 client_assertion 。如果你调试你的应用程序,你会发现 GetToken 函数不会触发,因为你不使用该客户端来执行查询(或其他操作)。请参阅以下链接了解如何从 Web 应用程序使用 Azure Key Vault:

https://learn.microsoft.com/en-us/azure/key-vault/key-vault-use-from-web-application

另请点击here其中包括两个视频教程,可以帮助您更好地理解。

关于c# - KeyVaultClient.AuthenticationCallback Delegate 的参数来自哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42506438/

相关文章:

javascript - 使用查询将对象数组发布到 asp.net-mvc Controller 操作的正确方法是什么?

azure - 如何注册 microsoft.HDinsight ?在微软 azure 上

c# - Asp.Net MVC4 - 部分 View 中的表单

c# - 从位图数组创建大位图的快速方法?

asp.net-mvc - ASP.NET MVC 自定义授权

ASP.NET MVC 在安全内容和非安全内容之间切换

使用 Microft Azure SDK 时,java 以非零退出值 2 完成

Azure搜索,从SQL导入时有没有办法添加查询

c# - 巢状查询会传回奇怪的结果。 Elasticsearch

c# - TransactionScope 是否隐式应用直到显式完成?