我过去使用过IConfigureOptions,现在有一个使用OAuth自省的新项目。
我尝试使用一个类来设置选项模式:
public class
ConfigureOAuth2IntrospectionOptions : IConfigureOptions<
OAuth2IntrospectionOptions>
{
private readonly Settings settings;
public ConfigureOAuth2IntrospectionOptions(IOptions<Settings> options)
{
settings = options.Value;
}
public void Configure(OAuth2IntrospectionOptions options)
{
options.IntrospectionEndpoint =
$"{settings.IdentityServer.Authority}/connect/introspect";
options.ClientId = ScopeNameConstants.MyClientId;
options.ClientSecret = settings.IdentityServer.ClientSecret;
}
}在我的startup.cs中有这样的代码:
services.AddAuthentication(
options =>
{
options.DefaultAuthenticateScheme =
OAuth2IntrospectionDefaults.AuthenticationScheme;
options.DefaultChallengeScheme =
OAuth2IntrospectionDefaults.AuthenticationScheme;
})
.AddOAuth2Introspection();我添加到DI绑定中:
services.AddSingleton<IConfigureOptions<OAuth2IntrospectionOptions>, ConfigureOAuth2IntrospectionOptions>();但是,configuration方法从未在我的configuration类中调用。
AddOauth2Introspection方法有一个带有类似这样的操作参数的方法,我认为它会被自动使用:
public static AuthenticationBuilder AddOAuth2Introspection(this AuthenticationBuilder builder, string authenticationScheme, Action<OAuth2IntrospectionOptions> configureOptions)这是否可以在默认情况下使用?我想使用这个模式,这样我就可以对我的configuration对象使用构造函数注入,而不是直接在Startup.cs中引用配置。
我可能还必须进行加密/解密,这将需要一个注入类,而我不想让它在ConfigureServices方法中可用。
编辑: Microsoft Docs中的示例Swashbuckle实现:
初始入场券:https://github.com/Microsoft/aspnet-api-versioning/issues/422
发布于 2019-07-21 02:28:46
尝试使用IConfigureNamedOptions,因为身份验证方案是命名的。您必须实现一个接受名称的额外的Configure方法。您仍然可以将您的类DI绑定为IConfigureOptions
https://stackoverflow.com/questions/55146061
复制相似问题