如何在TokenAcquirerFactory中添加用户机密作为配置源?
如何在TokenAcquirerFactory中添加用户机密作为配置源?
嘿,你找的路子完全对!通过继承TokenAcquirerFactory并重写DefineConfiguration方法来扩展配置源,这个方法本身就是为这类自定义配置场景设计的,你的实现思路非常靠谱。
下面把完整的实现和使用方式理清楚:
首先定义自定义工厂类,在重写的方法里加入用户机密配置源:
using System.Reflection; using Microsoft.Identity.Web; internal class ConfigurableTokenAcquisitionFactory : TokenAcquirerFactory { protected override string DefineConfiguration(IConfigurationBuilder builder) { // 获取程序集,用于关联对应的用户机密文件 var targetAssembly = Assembly.GetEntryAssembly() ?? Assembly.GetExecutingAssembly(); builder.AddUserSecrets(targetAssembly); // 调用基类方法完成默认配置的加载流程 return base.DefineConfiguration(builder); } }
之后就可以通过GetDefaultInstance<T>方法获取这个自定义工厂的实例,正常使用即可:
var tokenAcquirerFactory = TokenAcquirerFactory.GetDefaultInstance<ConfigurableTokenAcquisitionFactory>(); tokenAcquirerFactory.Build(); // 后续按需获取TokenAcquirer实例 var tokenAcquirer = tokenAcquirerFactory.GetTokenAcquirer();
这里提个小细节:Assembly.GetEntryAssembly()会取程序的入口程序集,如果你的代码是在类库项目中运行,它可能返回null,这时候用Assembly.GetExecutingAssembly()兜底,就能确保加载到当前代码所在项目的用户机密了。
备注:内容来源于stack exchange,提问作者mark_h
相关产品推荐
相关产品推荐

