我正在寻求通过注入使用BotAuthentication的帮助,以便可以使用keyvault的机密来传递MicrosoftAppId和MicrosoftAppPassword。 谢谢。
我正在使用BotBuilder V3.15.3,它允许我使用BotAuthentication并将MicrosoftAppId和MicrosoftAppPassword传递为参数。但是由于我有从keyvault提取的这些值,所以无法使用注释,因为我无法将constv读取keyvault。使用CredentialProviderType的另一项规定为ICredentialProvider类型。 [BotAuthentication(CredentialProviderType = typeof(CustomCredentialProvider))) 但是,此类型不将appId作为参数。如何将appId和appPassword注入其中?
///Controller code
[BotAuthentication(CredentialProviderType =typeof(NewStaticCredentialProvider))]
public class MessagesController : ApiController
{}
///CredentialProvider code
public interface ICredentialProvider
{
Task<bool> IsValidAppIdAsync(string appId);
Task<string> GetAppPasswordAsync(string appId);
Task<bool> IsAuthenticationDisabledAsync();
}
public class SimpleCredentialProvider : ICredentialProvider
{
public string AppId { get; set; }
public string Password { get; set; }
public Task<bool> IsValidAppIdAsync(string appId)
{
return Task.FromResult(appId == AppId);
}
public Task<string> GetAppPasswordAsync(string appId)
{
return Task.FromResult((appId == this.AppId) ? this.Password : null);
}
public Task<bool> IsAuthenticationDisabledAsync()
{
return Task.FromResult(string.IsNullOrEmpty(AppId));
}
}
public sealed class NewStaticCredentialProvider : SimpleCredentialProvider
{
public NewStaticCredentialProvider(string appId, string password)
{
this.AppId = Secrets.MicrosoftAppId;
this.Password = Secrets.MicrosoftAppPassword;
}
}
在注释中,我看不到传递应用程序ID和密码的方法。 我想念什么吗?
答案 0 :(得分:0)
我已经找到解决方案。问题是我有自己的名称为ICredentialProvider的接口,因此无法解析该实例。我只保留了SimpleCredentialProvider类,并将其更改为其他名称。还有宾果游戏!