我过去使用过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>();
但是,在我的配置类中从来没有调用configure方法。
AddOauth2Introspection方法有一个带有Action参数的方法,我认为这种方法会自动使用:
public static AuthenticationBuilder AddOAuth2Introspection(this AuthenticationBuilder builder, string authenticationScheme, Action<OAuth2IntrospectionOptions> configureOptions)
默认情况下可以使用吗?我想使用此模式,以便可以将构造函数注入用于我的配置对象,而不是直接在Startup.cs
中引用配置。
我可能还需要进行加密/解密,这将需要一个我不想在ConfigureServices方法中使用的注入类。
编辑: Microsoft Docs中的Swashbuckle实现示例:
初始票: https://github.com/Microsoft/aspnet-api-versioning/issues/422
答案 0 :(得分:0)
请尝试使用IConfigureNamedOptions,因为已命名身份验证方案。您必须实现一个带有名称的额外的Configure方法。您仍然可以将类绑定为IConfigureOptions